Skip to main content
OpenQRS
Tools
Current language: English
100% Private

Location QR code generator

100% Private & Local — Your data never leaves your browser. These QR codes are permanent and will never expire.

Location settings

geo: is the open standard and is handled natively on Android. A map link is the safer choice for a mixed audience.

Decimal degrees between -90 and 90. South of the equator is negative.

Enter the latitude in decimal degrees, between -90 and 90.

Decimal degrees between -180 and 180. West of Greenwich is negative.

Added as ?q=lat,lon(label), an Android extension to the geo: scheme. Other platforms ignore it.

Design

Module shape
Presets
Corner frame
Add a centre logo
Choose an image, or drop one herePNG, JPEG, WebP or GIF, up to 1000 KB

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.

Presets

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.

Gradient

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.

45°

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.

Module shape

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.

Corner frame

The ring of the three finder patterns.

Corner centre

The eye inside each finder pattern.

4 modules

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

Export

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

Export size

Between 64 and 4096 pixels. Exporting at 1024 px.

Encoded text

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.