Location QR code generator
100% Private & Local — Your data never leaves your browser. These QR codes are permanent and will never expire.
Location settings
Design
Add a centre logo
The image is read in this page and embedded in the code as a data: URL. It is not uploaded, and it stays inside the file you download.
More design options
The dark half of the code. Keep it well below the background in lightness.
Covers the quiet zone as well as the gaps between modules. A transparent background leaves it out of the file, so nothing is drawn with it.
Contrast 11.5:1 between the modules and the background.
PNG and WebP keep an alpha channel; the SVG simply omits the background rectangle. Whatever the code is placed on becomes the light half of the contrast.
A gradient fills the dark modules only. Its lighter end sets the contrast a scanner actually gets, so both ends have to stay dark.
The second colour, used only while a gradient is selected. It is measured for contrast alongside the first.
Degrees clockwise from a left-to-right sweep. A radial gradient spreads from the centre outwards, so the angle applies to a linear one only.
Rounded shapes cover less of each cell. The centre stays covered, which is where a decoder samples, but a small print of a dense code reads more reliably as squares.
The ring of the three finder patterns.
The eye inside each finder pattern.
The blank margin around the code, measured in modules. 4 is the specified minimum.
Higher recovery survives more damage and costs capacity, so the same content produces a denser symbol.
A logo sits at the centre and holds the level at H. Its width limit follows the symbol: 14% on the smallest code, 30% on a dense one.
Live preview & export
Enter the latitude in decimal degrees, between -90 and 90.
Export
Raster, for screens
Complete the form to enable the downloads.
Export size and encoded text
- Payload
- Nothing encoded yet
- Symbol
- Not built yet
- Recovery
- Q
Waiting for input
Put a point on a poster, a delivery door or a trail marker. Coordinates become an RFC 5870 geo: URI; a pasted map link is encoded exactly as given.
When someone scans it
In coordinates mode an Android phone hands the geo: URI to its maps app and drops a pin. In map link mode any phone opens the link in a browser or the matching maps app.
What a geo: URI is, and where it works
RFC 5870 defines the geo: scheme as geo:latitude,longitude — a coordinate pair and nothing more. It is short, it is not tied to any map provider, and it never resolves against a server, which makes it the honest way to write down a point.
Support is uneven, and the split matters for anything you intend to print. Android has registered the scheme since 2009 and passes it to whichever maps app the user has installed. Apple never registered it: on a stock iPhone a geo: URI is not claimed by any built-in app, so the camera may show the raw text or offer nothing at all. Several third-party scanner apps on iOS handle it themselves and open Apple Maps.
The pin label uses Android's own extension to the scheme rather than anything in RFC 5870. Android reads ?q=lat,lon(Label) and shows the text beside the marker; platforms that follow only the RFC ignore the query entirely and still land on the right coordinates.
- Plain point: geo:52.51628,13.37771
- With an Android label: geo:52.51628,13.37771?q=52.51628,13.37771(Staff entrance)
When to use a map link instead
If the sign will be read by whoever walks past it, a normal https link is more predictable than geo:. Every phone has a browser, and both major maps apps claim their own web addresses, so the link usually opens the app anyway.
The trade-off is that a map link names a provider. Whoever scans it makes a request to that company's servers, and the choice of provider is baked into the print. A geo: URI names nobody and stays on the device until the user picks an app.
- Google Maps: https://www.google.com/maps?q=52.51628,13.37771
- Apple Maps: https://maps.apple.com/?ll=52.51628,13.37771
- OpenStreetMap: https://www.openstreetmap.org/?mlat=52.51628&mlon=13.37771
Getting the numbers right
Both fields take decimal degrees, not degrees-minutes-seconds. A value copied as 52°30'58.6"N has to be converted before it means anything here; pasting it will not produce a point near Berlin, it will produce a validation error.
Precision is worth being deliberate about. A degree of latitude is roughly 111 km, so four decimal places locate something to about 11 metres and five to about 1 metre — enough for a specific door. Longitude degrees narrow towards the poles, so the same decimal count is more precise the further you are from the equator. Extra digits beyond six add length to the payload and no useful accuracy, because consumer GPS is not that good.
Sign conventions cause more misplaced pins than precision does. Latitude is negative south of the equator and longitude is negative west of Greenwich, and a dropped minus sign puts the pin in a different hemisphere without any warning.
Questions and answers
My iPhone shows text instead of opening a map. Why?
Because iOS does not register the geo: scheme, so nothing claims the URI and the scanner falls back to displaying it. Switch to map link mode and paste an https maps URL, which every iPhone opens. Android users are unaffected either way.
Can the code contain a street address instead of coordinates?
Not in coordinates mode. Turning an address into a point requires geocoding, which means querying a provider, and this page makes no network requests. Look the address up in a maps app, copy the resulting link, and encode it with map link mode.
Does the label change where the pin lands?
No. The coordinates in the path determine the position; the label is display text carried in the Android query extension. If the label were the only thing identifying the place, a phone that ignores the query would land in the right spot with no caption rather than in the wrong spot.
Will the code still work with no mobile signal?
The scan will. Decoding the pattern is entirely offline, so the phone reads the URI and offers to open a map. Whether the map itself renders depends on the maps app having offline tiles for the area — the QR code cannot supply those.
How a static QR code works
Every code on this site is static: the payload is written into the black and white modules themselves. Nothing is looked up when the code is read, no server of ours takes part, and no subscription holds the printed code up. The same property is the limit — once it is printed, what it contains cannot be changed.
Three things then decide whether a printed code reads: how many bytes the payload came to, which recovery level absorbs the damage, and how wide a single module ends up on paper. These guides work through each of them with the numbers.