Coordinate Formats
Read a point in any notation and write it in all of them, from decimal degrees to MGRS, a Plus Code or a geohash.
Overview
One place on the earth, written seven ways. Which way depends on who is reading it: an API takes decimals, a chart takes degrees and minutes, a surveyor takes metres on a grid, a rescue team takes MGRS, and someone reading an address over the phone takes a Plus Code.
Converting between them is arithmetic. There is no database and no lookup, so the point you paste in never goes anywhere.
Web interface
One field, and Enter. The notation is recognised by its shape, so nothing has to be chosen first, and the answer says what the input was understood as before it lists anything else.
Every value can be clicked, which puts it back in the field and converts from there. That is how you check a point survives a trip through a notation and back.
What the field accepts
| Typed | Read as |
|---|---|
50.0267, 8.5584 | decimal degrees, latitude first |
50.0267 8.5584, 50.0267;8.5584 | the same |
50.0267N 8.5584E, N50.0267 E8.5584 | the same, with hemispheres |
50°01.602′N 8°33.501′E | degrees and decimal minutes |
50°1′36.14″N 8°33′30.06″E | degrees, minutes and seconds |
50 1 36.14 N 8 33 30.06 E | the same, spaces instead of marks |
32U 468366 5541693 | UTM, zone and band, then easting and northing |
32UMA6836541693 | MGRS |
9F2C2HG5+M8Q | a Plus Code |
u0yhdg048jbm | a geohash |
The forms are told apart from the most distinctive to the least. A Plus Code is the only one with a plus sign. MGRS is digits, then a band letter, then two letters, then digits, which nothing else is. UTM names a zone and then two large numbers. A geohash is made of nothing but its own 32 characters, and cannot be mistaken for MGRS because its alphabet has no A, I, L or O while every MGRS square alphabet does.
Where there is no comma and no hemisphere letter, the numbers are split down the middle, so
50 1 36 8 33 30 is read as two sets of three.
The three degree forms
The same number, written at three levels of subdivision. A degree of latitude is about 111 km anywhere; a degree of longitude is 111 km at the equator and nothing at the pole.
| Form | Example | Used by |
|---|---|---|
| Decimal degrees | 50.026706, 8.558350 | APIs, phones, anything programmatic |
| Degrees and decimal minutes | 50°01.602′N | Marine and aviation charts |
| Degrees, minutes, seconds | 50°01′36.14″N | Survey marks, street signs, older maps |
The output carries six decimal places, three decimal minutes and two decimal seconds, which is about 11 cm, 1.9 m and 31 cm of latitude. That is why a point that goes out as degrees and minutes and comes back in can move by half a metre: the format itself cannot hold more.
UTM and MGRS
Both put a flat grid of metres over the curved earth, in sixty zones six degrees wide. UTM gives the zone and two distances in metres; MGRS labels the same position with letters so it can be read aloud and written down without a decimal point.
Both cover 80°S to 84°N. Beyond that the grid is UPS, a different projection, and this tool says so rather than answering. The Plus Code, geohash and degree forms work everywhere.
Two irregularities are real and are handled. Zone 32 is widened between 56°N and 64°N so that south west Norway is not split, which puts 60°N 5°E in zone 32 and not 31. And in band X, from 72°N to 84°N, zones 32, 34 and 36 do not exist at all and their neighbours are nine or twelve degrees wide, which puts Svalbard at 78.2°N 15.6°E in zone 33.
A letter after the zone is read as a latitude band. This matters, because
33S means two different things ten thousand kilometres apart: band S is 32° to 40°
north in MGRS and in UTM proper, while GIS naming uses it for the southern hemisphere, as in
EPSG:32733. A band carries its own hemisphere and needs nothing further, so that is the reading here. For a
southern point, give a southern band letter, C to M.
MGRS is written with a two digit zone, as the defining implementation writes it, and read with either one or two. A reference shorter than ten digits names a larger square: eight digits is ten metres, six is a hundred, four is a kilometre and two is ten. Reading one back gives the middle of the square it names, because a corner would be half a square out in a known direction.
Plus Codes and geohashes
Both turn a point into a short string with no separate grid to look up, and both name a rectangle rather than a point.
A Plus Code, also called an Open Location Code, is an open standard. The first eight characters and the plus sign place the point to about 14 m; each further character divides that further. Eleven characters is roughly 3 m by 2.8 m. Padding zeroes before the plus sign mean a deliberately coarse code, and a code with padding may carry nothing after the plus.
Short Plus Codes, the kind written as 2HG5+M8 Frankfurt, are not read here: the first
characters are left off and can only be restored from a reference location, which this tool is not given.
A geohash interleaves the bits of latitude and longitude, so two points that are near each other usually share a prefix, which is what makes it useful as a database key. Twelve characters is under four centimetres. The catch is that a small step can cross a boundary and change every character, so a shared prefix means nearby but a different prefix does not mean far.
How accurate this is
Every conversion here was measured against an independent implementation rather than inspected, and these are the numbers that came out. They are recorded because a converter that is quietly wrong is worse than one that refuses.
| Conversion | Checked against | Result |
|---|---|---|
| Degrees to UTM | PROJ 9.8.1, 4,010 points | largest difference 1 mm, zone and hemisphere right every time |
| UTM to degrees | PROJ 9.8.1, same points | 0.1 mm typical, 30 mm at worst, in the Svalbard exception zone |
| Degrees to MGRS | the NGA implementation, same points | 4,009 of 4,010 character for character |
| MGRS to degrees | the same | 0.3 mm, once the centre-versus-corner choice is accounted for |
| Plus Codes | 747 official test cases | all pass: 302 encoding, 420 decoding, 25 validity |
| Geohash | an independent implementation | 4,010 of 4,010 identical at twelve characters |
The single MGRS difference was the last digit at one metre resolution, where the two implementations' UTM series disagree by 0.9 mm and that happened to fall across a metre boundary.
Round tripping a point out into a notation and back in stays within what the notation can hold: nothing for decimal degrees, 5 cm for degrees minutes seconds, 67 cm for degrees and decimal minutes, 70 cm for MGRS and UTM at one metre, 2.2 m for an eleven character Plus Code and 2 cm for a twelve character geohash.
All of this is WGS84, which is what GPS reports and what a web map uses. A coordinate on a national datum will be tens to hundreds of metres from where this puts it, and no notation carries which datum it came from, so that has to come from whoever gave you the number.
URL parameters
Whatever the field holds can go in the path.
| Path | Converts |
|---|---|
/convert/coordinates/50.0267,8.5584 | decimal degrees |
/convert/coordinates/32UMA6836541693 | an MGRS reference |
/convert/coordinates/9F2C2HG5+M8Q | a Plus Code |
Spaces and degree marks have to be percent encoded in a path, which a browser does on its own. Sharing such a link shows the converted point in the preview.
API
https://api.troubleshooting.tools/v1/convert/coordinates/{input}, with the same input the field
takes.
| Field | Meaning |
|---|---|
read_as | which notation the input was understood as: degrees, utm, mgrs, plus-code or geohash |
lat, lon | the point as numbers |
decimal, ddm, dms | the three degree forms as text |
utm | an object with text, zone, band, hemisphere, easting and northing, or null outside the grid |
mgrs | the reference at five digits, or null outside the grid |
plus_code | eleven characters |
geohash | twelve characters |
grid_note | set when the point is outside 80°S to 84°N, explaining why UTM and MGRS are null |
precision_m, digits, characters | present when the input named a square, saying how large it was |
There is no rate limit. The answer is arithmetic and costs nothing to produce.
Errors
| Status | When |
|---|---|
400 | the input is empty, longer than 120 characters, or not a coordinate in any form this reads |
A refusal is deliberate. Guessing at something that is nearly a coordinate would answer with a place that is not the one meant, which is worse than saying no.
Privacy
The conversion happens on this server and the point is never forwarded. No map provider, no geocoder and no third party sees it.
There is no map on the page for that reason. A map would make your browser fetch tiles from whoever serves them, and the coordinate would travel with the request for them.