What the Postal Code to Coordinates does
Paste a column of postal codes and get a latitude and longitude for each one, resolved against the GeoNames postal dataset vendored on this site rather than sent to a geocoding service. Up to two thousand codes at a time, with the administrative divisions beside each result and every code that could not be resolved listed separately instead of quietly dropped.
Nothing you paste leaves the page. The country's data file is downloaded from this site, decompressed in your browser and searched there, which is why the tool can tell you exactly which countries it covers - and will not pretend to cover the rest.
How to use it
- Choose the country the codes belong to. Postal codes are only unique within a country, so there is no way to resolve a mixed list without knowing which is which.
- Paste the codes, one per line, or paste a CSV column straight from a spreadsheet - the first column is used and an obvious header row is dropped. Spaces, hyphens and case are ignored.
- Press Resolve codes. The country file loads once and is reused for every run after that, so a second batch is instant.
- Check the not-resolved table before using the results. A code that is absent from the open dataset is not the same as an invalid code, and the difference matters if you are cleaning a customer list.
- Export CSV for a spreadsheet, JSON for a script, or GeoJSON if the points are going into a mapping tool. The CSV keeps the unresolved rows so the file has one row per input.
Reading the results
A coordinate here is the dataset's representative point for that code - roughly the centre of the area it covers - not a building. For a dense city code that is within a few hundred metres of anywhere in the code; for a rural code it can be several kilometres from a given address.
"Matched on a leading part" means the full code is not in the open data but its prefix is. For UK postcodes that is normal and expected: the free dataset carries outward codes, so SW1A 1AA resolves as SW1A and the coordinate is the centre of that whole outward area.
"Places sharing it" counts how many records in the dataset carry the same code. Where that number is large, the single coordinate returned is one of several the code covers, and the Worldwide Postal Code Finder will show you the rest.
Zero resolved with a full input list usually means the wrong country is selected, not that the codes are wrong.
Worked example: six Indian PIN codes, one of them invented
The list 110001, 400001, 560001, 600001, 700001 and 999999 resolves five of six. 110001 gives New Delhi G.P.O. in Delhi at 28.6369, 77.2183; 400001 gives Mumbai G.P.O. in Maharashtra at 18.9474, 72.8138; 560001 gives Bangalore G.P.O. in Karnataka at 13.2257, 77.5750.
Each of those five is an exact match, and each shows a "places sharing it" count in the double figures, because an Indian head-office PIN covers many delivery points. 999999 is not in the dataset and appears in the unresolved table with the reason, not as a coordinate of 0,0.
Exporting the CSV gives six rows - five with coordinates, one with empty coordinate cells and the word "not found" in the match column - so the file still lines up with the original list.
Formulas and scoring rules
- Code folding
key = uppercase(code) with everything that is not A-Z or 0-9 removedSo "sw1a 1aa", "SW1A-1AA" and "SW1A1AA" are one key, and "01310-100" folds to "01310100".- Exact match
rows where fold(row.code) = fold(input)Tried first; every record sharing the code is counted and the first is returned as the point.- Leading-part fallback
for len = length(key)-1 down to 2: if any row folds to key[0..len] then matchOnly used when there is no exact match, and the result always reports which part matched.- Coordinate precision
latitude and longitude as published, to 4 decimal placesFour decimal places is about 11 m of numeric precision; the meaningful accuracy is the size of the postal area, which is far larger.
How this differs from Latitude and Longitude by Address
The existing Latitude and Longitude by Address tool takes a free-text address - a street, a building, a landmark - and sends it to Google's geocoder, which is the right tool when you have a real address and want a precise point. This one never calls a geocoder. It resolves postal codes against a dataset vendored here, takes a whole CSV column at once, and publishes the list of countries it can and cannot cover. Use that page for one address; use this one for a spreadsheet of codes, or when the codes must not leave your machine.
Limitations: what the result does not prove
- Only the countries listed on the page can be resolved, and several of them hold only part of their codes. A country with no vendored file says so rather than reporting every code as not found.
- A postal code is an area, not a point. The coordinate returned is a representative point for the area and should not be used where a street-level position is needed.
- The dataset is a dated snapshot. Newly issued codes may be absent and retired ones may still appear.
- Resolution is a dataset lookup, not validation. A match proves the code appears in the open data with a place attached; it does not prove an address is deliverable.
Privacy: where your data goes
Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics. Session recording and tag-manager scripts are switched off on this page.
Standards and sources
- GeoNames postal code export (CC BY 4.0) - checked 19 Sep 2026
- Creative Commons Attribution 4.0 International licence - checked 19 Sep 2026
- NGA - World Geodetic System 1984 (WGS 84) - checked 19 Sep 2026
- RFC 7946 - The GeoJSON Format
Frequently asked questions
How many postal codes can I convert at once?
Two thousand per run. Repeated codes are collapsed before the lookup, so a list with duplicates costs nothing extra, and the country file is loaded once and reused for every batch after that.
Do my postal codes get sent to a geocoding service?
No. The only thing downloaded is the country's own postal file from this site; the codes you paste are matched against it inside your browser. Nothing you type is transmitted, which is the practical difference between this page and any geocoder-backed tool.
What does it mean when a code matches only its first characters?
It means the full code is not in the open dataset but its leading part is. UK postcodes behave this way by design, because the open data holds outward codes only. The row shows which part matched, so you can see that the coordinate is the centre of a wider area than the code you supplied.
Why did none of my codes resolve?
Almost always the wrong country is selected - postal codes are only unique within a country, so a list of German codes searched against France finds nothing. Check the country first, then check whether the country's coverage note says the dataset holds only part of the code.
Can I convert codes from several countries in one go?
Not in a single run, because the lookup needs to know which country's file to search. Split the list by country and run each batch in turn; the exported CSVs can be concatenated afterwards, since the columns are the same.
How precise is the coordinate for a postal code?
The numbers carry four decimal places, about eleven metres, but the meaning is much coarser: it is a representative point for the whole code area. In a city centre that is usually within a few hundred metres of any address in the code; in a rural area it can be kilometres.
Is the output suitable for a distance calculation?
Yes, with the same caveat. Distance between two postal-code points is accurate to the size of the areas involved, which is fine for catchment analysis or delivery-zone planning and wrong for anything that needs door-to-door precision. The Postal Code Distance Calculator does exactly this, in bulk.
Last reviewed by the A2Z.Tools team against the sources listed above.