Skip to content
barcoder

Standards/geo-uri

geo URI

TypeQR Data Format
Completeness78%high

Overview

The geo URI is a URI scheme that identifies a physical point on Earth by its coordinates, written geo:48.2010,16.3695,183 for latitude, longitude and (optional) altitude 3. Encoded inside a standard QR Code symbol, a geo URI lets a phone open the location directly in a mapping application after a scan 1.

The scheme is standardized by the IETF as RFC 5870, "A Uniform Resource Identifier for Geographic Locations," published in June 2010 by Alexander Mayrhofer and Christian Spanring 3. ZXing documents geo: as one of the geographic-information formats it decodes from QR codes 1.

History

RFC 5870 was published in June 2010 to give geographic points a stable, application-independent URI representation, much as mailto: and tel: do for email and phone numbers 3. ZXing adopted the same geo:lat,lon,alt form (also accepting an altitude component) as its convention for location QR codes 1.

Technical specification

RFC 5870 defines the scheme with the following ABNF 3:

geo-URI       = geo-scheme ":" geo-path
geo-path      = coordinates p
coordinates   = coord-a "," coord-b [ "," coord-c ]
p             = [ crsp ] [ uncp ] *parameter
crsp          = ";crs=" crslabel
uncp          = ";u=" uval

For the default coordinate reference system the components are 3:

latitude   = [ "-" ] 1*2DIGIT [ "." 1*DIGIT ]
longitude  = [ "-" ] 1*3DIGIT [ "." 1*DIGIT ]
altitude   = [ "-" ] 1*DIGIT  [ "." 1*DIGIT ]

So the first coordinate is latitude, the second longitude, and the optional third altitude (in meters). If altitude is unknown, both the value and the preceding comma MUST be omitted 3.

Parameters:

  • crs= selects the coordinate reference system; the default is wgs84 — the World Geodetic System 1984, equivalent to EPSG 4326 (2-D) and 4979 (3-D) 3.
  • u= gives the uncertainty of the location as a value in meters 3.

Examples from the RFC 3:

geo:48.2010,16.3695,183
geo:48.198634,16.371648;crs=wgs84;u=40

ZXing's documented example is geo:40.71872,-73.98905,100 (latitude, longitude, altitude) 1.

Use cases

  • Map pins in print. A geo URI QR on a flyer, signpost, real-estate listing or event poster opens the exact spot in the scanner's map app — useful where a street address is ambiguous or absent 1.
  • Camera-native location handoff. A scanned geo: URI is handed to the OS, which routes it to the default mapping application 1.
  • Precision and uncertainty. The u= parameter lets the encoder communicate how accurate the fix is, and the altitude component captures vertical position where relevant 3.

Implementations

Project Lang Stars Last active Notes
zxing/zxing Java ~34k 2025 Reference decoder; parses geo: payloads into a geographic result 1 5
Android intent system — — 2025 A geo: URI is a registered Android intent that opens the default maps app

Comparison

  • geo URI vs map deep-links. A geo: URI is vendor-neutral: it carries only coordinates (optionally CRS and uncertainty) and lets the OS pick a map app, whereas a Google Maps or Apple Maps deep-link (an https:// URL) binds the user to one provider and can carry place names, search terms and routing parameters that the bare geo: scheme does not 3.
  • Altitude and uncertainty are first-class in geo: (,alt and ;u=), which most map deep-links do not expose as cleanly 3.

Fun facts

  • All three example coordinates in RFC 5870 point to Vienna, Austria — the home base of co-author Alexander Mayrhofer 3.

Status

Active. RFC 5870 is the current IETF standard for geographic-point URIs, and geo: is a recognized location format in both ZXing and OS-level intent handling, opening scanned points directly in a mapping application 1 3.

Sources

1 Barcode Contents — ZXing Wiki 3 RFC 5870: The 'geo' URI Scheme — IETF, 2010 5 zxing/zxing — ZXing project, GitHub

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · content/standards/geo-uri/index.md