Less than the industry implies, and the honest amount is worth having. A latitude and longitude is a position — and position rewrites exactly into every grid system ever standardised. That part is arithmetic, it is settled, and it works here. Everything else people want from a coordinate — the county, the elevation, the timezone, the address — is not in the coordinate at all. It is in a dataset, and we do not have one.
The split is not a limitation of this site. It is the actual structure of the problem, and most coordinate sites blur it because the blurred version sells better.
Every equivalent notation, the UTM zone and latitude band, the MGRS 100 km square, the grid convergence and point scale, and the geodesic distance and bearing to any other coordinate. No lookup, no network, no licence.
Which country or county it falls in, its elevation, its timezone, the nearest street or town, what is built there. None of that is a property of the number. Each is a separate lookup against data somebody had to collect, licence and keep current.
Guess. Where a fact needs data we do not hold, the page says so and stops, rather than showing a plausible value. That rule is enforced by the build, not by good intentions.
Every item below is a thing people reasonably expect a coordinate site to answer, and not one is derivable from the number. Each needs a dataset with a licence, a size and a refresh cadence attached. None of it is built here, and the rung on each card says so.
A point-in-polygon test against administrative boundaries. Cheap to compute, and entirely dependent on which boundary set you use — different sources disagree, especially at coastlines and disputed borders.
A raster sample — and a question about which vertical datum you meant. Height above the ellipsoid and height above mean sea level differ by tens of metres in places, and most sites never say which one they returned.
Another polygon test, against boundaries that are political and change by legislation — not a function of longitude, however often that shortcut is taken.
Reverse geocoding, and the least honest thing a coordinate site does. There is often no single right answer: a place has a centroid, a label point, an administrative seat and a polygon, and the major sources pick different ones. Everyone silently returns one of them.
UTM and MGRS are fiddly enough that a wrong implementation looks right — it round-trips perfectly and lands within a few kilometres of the truth. Round-tripping proves nothing on its own, so this one was checked against three implementations written by other people.
Worst disagreement in forward easting or northing of any single one of the 4,000 points, in metres. The inverse transform agrees to the same order.
Every 5-digit MGRS string produced here is character-for-character identical to the one GEOTRANS produces for the same point.
Over 1,500 random pairs. Initial and final bearings agree to within 1 × 10⁻⁵ arcseconds.
No dependencies and no network. It reads src/coord.mjs and asserts it against the frozen records below, so the arithmetic and the published tables cannot drift apart.
Chosen to cover both hemispheres, the equator, a central meridian, and both documented zone irregularities — southwest Norway, where zone 32 is widened, and Svalbard, where zones 32, 34 and 36 do not exist. Every row below was recomputed by the build from the same code the converter runs, and refused to publish unless it matched the frozen record.
| Reference point | Latitude | Longitude | UTM | MGRS |
|---|---|---|---|---|
| Null Island — the equator on zone 31’s central meridian | 0.0000 | 3.0000 | 31N 500000.00 0.00 | 31NEA0000000000 |
| Greenwich Royal Observatory | 51.4779 | -0.0015 | 30U 708213.49 5707235.66 | 30UYC0821307235 |
| Seguin, Texas | 29.5688 | -97.9644 | 14R 600313.02 3271453.85 | 14RPT0031371453 |
| Sydney Opera House | -33.8568 | 151.2153 | 56H 334900.57 6252288.75 | 56HLH3490052288 |
| Bergen, Norway — where zone 32 is widened | 60.3900 | 5.3200 | 32V 297230.22 6700510.18 | 32VKN9723000510 |
| Longyearbyen, Svalbard — where zone 32 does not exist | 78.2200 | 15.6300 | 33X 514357.74 8682999.17 | 33XWG1435782999 |
| Ushuaia, Argentina | -54.8019 | -68.3030 | 19F 544805.10 3927029.88 | 19FEV4480527029 |
| Kathmandu, Nepal | 27.7172 | 85.3240 | 45R 334769.78 3067000.01 | 45RUL3476967000 |
Until this revision the API example printed "utm": "14R 597842 3270738" and "mgrs": "14RPU9784270738" as the grid references for 29.5688, −97.9644. Both are wrong. The correct values, in the table above, are 14R 600313.02 3271453.85 and 14RPT0031371453. The published easting was off by 2,471 m, the northing by 715 m, and the MGRS square letters were wrong as well.
Where it came from matters. A pass over this site one revision ago removed six unsupported numbers and reported that every remaining number had a witness. These two survived, because they sat inside a code sample labelled "the response shape we intend" — and a shape does not look like a claim. It was a claim, and it was false. Writing the converter is what caught it: the first thing the working arithmetic did was contradict the page it was written for.
The fix is structural rather than careful. Every grid reference on this site is now recomputed at build time by the same code the converter runs, and the build refuses to emit a page whose tables disagree with the frozen record. A number can no longer be typed onto this site by hand.
A page may only ask you to do what its evidence has earned. The converter has been run and checked, so it asks you to use it and to re-run the check. The rest has not been built, so it cannot ask you to run anything at all.
These numbers price an API that does not exist. They are kept visible only so the intent can be argued with. There is no checkout, no waitlist and no mailing list — there would be nothing to send you.
This site has already published a fabricated coordinate and had to retract it above. The most useful thing anyone can send is an input and the value they expected. It goes straight to a person; there is no mailing list, and nothing here is stored on this domain.
It posts to formspree.io when you press the button, carrying what you typed and nothing else. If you would rather leave a public trace, the issue tracker is the other route and it works just as well.