Data sources, coverage and method
Every generated address combines real geography with synthetic details. This page lists what is real, where it comes from, how each country is graded, and what we know is incomplete. Data version 2026.10.1, built 2026-10-26.
Coverage levels
| Level | Countries | Meaning |
|---|---|---|
| A Dataset-matched | 121 | City, region and postcode come from one dataset record. |
| B Places verified | 70 | City and region are dataset-backed; postcodes are not linked to places. |
| C Format example | 52 | Generic layout with real place names; national format not documented. |
| N No civilian addresses | 7 | No conventional addresses exist, so nothing is generated. |
A country never moves up a level because we filled a gap with invented data. When information is missing, we leave the field out or label it.
What is real and what is synthetic
| Field | Source |
|---|---|
| Locality, region, postcode | One record from the GeoNames postal dataset, Japan Post’s KEN_ALL file, or Google’s address hierarchy (China, Taiwan, Hong Kong). For countries without postal data: GeoNames populated places (≥ 500 inhabitants) and first-level divisions. |
| Address layout | Google’s address metadata (libaddressinput), the format data used by Chrome and Android. |
| Local-script names | From the dataset itself where available (Japan, Korea, Russia, Bulgaria…), otherwise GeoNames alternate names in the country’s language. |
| Street names | Synthetic. Built from common street-type words and generic name roots for each address language (for example “Lindenstraße”, “rue des Lilas”, “King Fahd Street”). Not taken from maps. |
| House numbers, units | Synthetic. Japanese block numbers, Korean road numbers and Colombian grid numbers follow local conventions. |
| Names | @faker-js/faker locale lists (MIT) plus curated lists for under-served regions. 76 countries have a country-specific list, 74 a language-level list and 93 a regional approximation, labelled on each country page. |
Always example.com, example.net or example.org (reserved by RFC 2606). | |
| Phone | Regulator-reserved fictional ranges (NANPA 555-01XX, Ofcom drama numbers, ACMA, ARCEP). Elsewhere, the national number shape from libphonenumber metadata, with digits masked. |
| Coordinates | Approximate centre of the locality from the same dataset record, rounded to 3 decimals. |
Validation
- For every generating country, the automated tests generate 40 addresses and profiles and check that each locality, region and postcode match one source record. They also check postcodes against the national pattern, the use of local script, formatting artefacts, reserved e-mail domains and phone labelling, and that the output is deterministic.
- Postal datasets are kept only when at least 60% of their codes match the national pattern in Google’s metadata; codes that do not match are dropped. In German-speaking countries, rows for companies and offices with their own postcodes are removed by matching localities against GeoNames populated places.
- Each source file’s SHA-256 checksum is recorded below, so the build can be reproduced and audited.
Places by source: GeoNames populated places (cities500): 146 countries; GeoNames postal codes: 93 countries; Google address metadata hierarchy (libaddressinput): 3 countries; Japan Post postal code data (KEN_ALL, UTF-8 and romaji editions): 1 countries. 172,465 localities in total.
Source files and licences
| Source | Licence | Retrieved | Size | SHA-256 |
|---|---|---|---|---|
| GeoNames country info | CC BY 4.0 | 2026-10-25 | 32 KB | c55f638cfaafb4fe… |
| GeoNames first-level administrative divisions | CC BY 4.0 | 2026-10-25 | 152 KB | 2e4867f5397acb05… |
| GeoNames populated places with population ≥ 500 | CC BY 4.0 | 2026-10-25 | 13.9 MB | 2709e682708bc5a8… |
| GeoNames alternate names (local-script names) | CC BY 4.0 | 2026-10-25 | 205.2 MB | 635560bb5c90b9b7… |
| GeoNames postal codes, all countries | CC BY 4.0 | 2026-10-25 | 19.8 MB | fe0ee75c60cc1f83… |
| GeoNames full UK postcodes | CC BY 4.0 (contains Royal Mail and OS data via ONS) | 2026-10-25 | 15.0 MB | b64cd52fe5112777… |
| GeoNames full Canadian postal codes | CC BY 4.0 | 2026-10-25 | 6.4 MB | f58a84568a0890f6… |
| GeoNames full Dutch postcodes | CC BY 4.0 | 2026-10-25 | 3.6 MB | 0ca6a6df7bdd8dbb… |
| Japan Post postal code data (UTF-8) | Japan Post claims no copyright and allows free redistribution | 2026-10-25 | 2.1 MB | 444881769a631d2c… |
| Japan Post postal code data (romaji) | Japan Post claims no copyright and allows free redistribution | 2026-10-25 | 1.8 MB | 9764834dfd1d0148… |
| Google address metadata (libaddressinput) via google-i18n-address 3.1.1 | Google data: Apache 2.0 (libaddressinput); package: BSD-3-Clause | 2026-10-26 | 773 KB | f66f4fd2b75d1cd3… |
| @faker-js/faker 10.6.0 (name lists, job titles) | MIT | |||
| libphonenumber-js 1.13.15 (calling codes and national number shapes) | MIT (metadata from Google libphonenumber, Apache 2.0) |
GeoNames data is used under Creative Commons Attribution 4.0. Japan Post states it claims no copyright over its postcode data and that it may be redistributed freely. Google’s libaddressinput is licensed under Apache 2.0.
Coverage by country
All 250 entries: the 249 ISO 3166-1 codes plus Kosovo (XK).
| Country | Level | Localities | Regions | Postcodes | Names |
|---|---|---|---|---|---|
| B | 319 | 34 | format-only | country | |
| A | 37 | 3 | dataset | language | |
| A | 494 | 12 | dataset | country | |
| A | 2,403 | 48 | dataset | regional | |
| A | 1 | 1 | dataset | regional | |
| A | 7 | 7 | dataset | regional | |
| C | 563 | 20 | none | language | |
| A | 14 | 14 | single | language | |
| N | 0 | 0 | — | — | |
| C | 41 | 7 | none | language | |
| A | 2,398 | 23 | dataset | language | |
| A | 87 | 2 | dataset | country | |
| C | 10 | 0 | none | language | |
| A | 2,526 | 8 | dataset | country | |
| A | 2,393 | 9 | dataset | country | |
| A | 1,186 | 64 | dataset | country | |
| A | 35 | 30 | none | language | |
| B | 12 | 4 | format-only | regional | |
| A | 1,347 | 7 | dataset | country | |
| B | 16 | 10 | format-only | language | |
| A | 2,400 | 6 | dataset | language | |
| A | 2,400 | 3 | dataset | country | |
| C | 138 | 6 | none | language | |
| C | 87 | 12 | none | regional | |
| A | 112 | 11 | dataset | language | |
| B | 35 | 20 | format-only | country | |
| C | 183 | 9 | none | language | |
| B | 311 | 3 | format-only | country | |
| C | 139 | 16 | none | regional | |
| N | 0 | 0 | — | — | |
| A | 3,501 | 27 | dataset | country | |
| N | 0 | 0 | — | — | |
| B | 2 | 0 | format-only | language | |
| B | 63 | 4 | format-only | regional | |
| A | 2,395 | 28 | dataset | country | |
| A | 118 | 13 | none | regional | |
| C | 33 | 15 | none | regional | |
| B | 153 | 22 | format-only | language | |
| B | 338 | 25 | format-only | country | |
| C | 145 | 10 | none | regional | |
| A | 3,913 | 13 | dataset | language | |
| C | 10 | 3 | none | language | |
| B | 70 | 6 | format-only | language | |
| C | 51 | 20 | none | regional | |
| C | 74 | 23 | none | regional | |
| A | 346 | 15 | dataset | language | |
| A | 2,852 | 31 | dataset | country | |
| A | 1 | 0 | single | regional | |
| A | 1 | 0 | single | regional | |
| A | 2,405 | 33 | dataset | language | |
| C | 118 | 3 | none | regional | |
| C | 2 | 1 | none | regional | |
| A | 473 | 7 | dataset | regional | |
| A | 1,204 | 14 | none | regional | |
| A | 2,399 | 21 | dataset | country | |
| B | 191 | 16 | format-only | regional | |
| C | 12 | 0 | none | language | |
| A | 1,126 | 6 | dataset | language | |
| A | 2,401 | 14 | dataset | country | |
| C | 118 | 26 | none | regional | |
| A | 1,159 | 5 | dataset | country | |
| C | 32 | 6 | none | regional | |
| C | 20 | 10 | none | language | |
| A | 542 | 0 | dataset | regional | |
| A | 1,176 | 24 | dataset | language | |
| B | 254 | 27 | region-prefix | country | |
| B | 102 | 14 | region-prefix | regional | |
| C | 28 | 8 | none | language | |
| C | 18 | 6 | none | regional | |
| A | 2,399 | 15 | dataset | country | |
| B | 25 | 4 | format-only | regional | |
| B | 256 | 14 | format-only | regional | |
| A | 1 | 0 | single | language | |
| A | 130 | 0 | dataset | regional | |
| C | 16 | 5 | none | regional | |
| A | 2,399 | 18 | dataset | country | |
| A | 3,514 | 13 | dataset | country | |
| B | 20 | 1 | format-only | language | |
| A | 207 | 5 | dataset | language | |
| N | 0 | 0 | — | — | |
| C | 50 | 9 | none | regional | |
| C | 176 | 6 | none | regional | |
| B | 218 | 12 | format-only | country | |
| A | 3,833 | 16 | dataset | country | |
| C | 116 | 16 | none | country | |
| A | 2 | 0 | single | language | |
| B | 1,198 | 14 | format-only | country | |
| A | 32 | 0 | dataset | regional | |
| C | 10 | 7 | none | language | |
| B | 25 | 1 | format-only | language | |
| A | 20 | 1 | dataset | language | |
| A | 543 | 21 | dataset | regional | |
| B | 12 | 10 | format-only | language | |
| B | 83 | 8 | format-only | regional | |
| B | 44 | 9 | format-only | language | |
| C | 22 | 10 | none | language | |
| A | 236 | 10 | dataset | country | |
| N | 0 | 0 | — | — | |
| A | 38 | 18 | dataset | regional | |
| A | 124 | 3 | none | country | |
| A | 2,400 | 20 | dataset | country | |
| A | 195 | 0 | dataset | country | |
| A | 4,521 | 35 | dataset | country | |
| A | 2,398 | 32 | dataset | country | |
| B | 1,203 | 31 | format-only | country | |
| B | 170 | 19 | format-only | regional | |
| A | 139 | 26 | dataset-prefix | language | |
| B | 21 | 21 | format-only | language | |
| B | 707 | 7 | format-only | country | |
| A | 2,513 | 107 | dataset | country | |
| A | 99 | 14 | none | language | |
| A | 4,003 | 47 | dataset | country | |
| B | 6 | 5 | format-only | language | |
| B | 143 | 12 | format-only | regional | |
| B | 350 | 21 | format-only | regional | |
| A | 888 | 47 | dataset | regional | |
| A | 37 | 2 | none | regional | |
| B | 77 | 7 | format-only | regional | |
| B | 21 | 6 | format-only | regional | |
| B | 107 | 8 | format-only | regional | |
| B | 117 | 18 | format-only | country | |
| A | 2,414 | 43 | dataset | country | |
| B | 51 | 8 | format-only | regional | |
| B | 48 | 10 | format-only | regional | |
| B | 27 | 15 | format-only | regional | |
| C | 119 | 22 | none | regional | |
| A | 10 | 9 | dataset | regional | |
| A | 2,399 | 10 | dataset | country | |
| A | 2,401 | 12 | dataset | language | |
| A | 8 | 2 | none | regional | |
| B | 152 | 23 | format-only | country | |
| A | 39 | 3 | none | regional | |
| A | 2,391 | 16 | dataset | country | |
| B | 34 | 19 | format-only | country | |
| C | 92 | 11 | none | regional | |
| A | 73 | 67 | dataset-prefix | country | |
| A | 2 | 1 | dataset | regional | |
| B | 23 | 1 | format-only | language | |
| C | 88 | 15 | none | regional | |
| B | 116 | 12 | format-only | language | |
| A | 21 | 18 | dataset | language | |
| A | 3,999 | 32 | dataset | country | |
| A | 4 | 4 | dataset | regional | |
| A | 1,753 | 48 | dataset | country | |
| A | 29 | 1 | dataset | language | |
| B | 332 | 22 | format-only | country | |
| B | 66 | 25 | format-only | regional | |
| C | 4 | 2 | none | language | |
| A | 1,325 | 12 | dataset | regional | |
| B | 94 | 11 | format-only | language | |
| B | 517 | 15 | format-only | country | |
| B | 91 | 14 | format-only | regional | |
| A | 15 | 14 | none | regional | |
| B | 84 | 7 | format-only | country | |
| A | 2,698 | 12 | dataset | country | |
| A | 52 | 3 | dataset | language | |
| A | 1,738 | 16 | dataset | regional | |
| B | 169 | 17 | region-prefix | regional | |
| B | 74 | 8 | format-only | regional | |
| B | 927 | 37 | format-only | country | |
| C | 1 | 0 | none | regional | |
| A | 1 | 0 | single | regional | |
| B | 127 | 13 | format-only | language | |
| A | 220 | 0 | dataset | country | |
| A | 3 | 3 | dataset | language | |
| A | 2,399 | 15 | dataset | country | |
| B | 39 | 11 | format-only | regional | |
| A | 2,401 | 7 | dataset | country | |
| A | 1 | 0 | dataset | regional | |
| C | 406 | 2 | none | regional | |
| A | 760 | 13 | none | regional | |
| B | 59 | 22 | format-only | regional | |
| B | 173 | 18 | format-only | language | |
| A | 1,106 | 25 | dataset | language | |
| A | 2,109 | 85 | dataset | country | |
| A | 1 | 0 | single | language | |
| A | 2,402 | 16 | dataset | country | |
| A | 2,399 | 20 | dataset | country | |
| A | 177 | 78 | dataset | regional | |
| C | 22 | 8 | none | regional | |
| C | 60 | 12 | none | regional | |
| B | 28 | 1 | format-only | language | |
| A | 2,399 | 42 | dataset | country | |
| A | 2,409 | 78 | dataset | country | |
| C | 51 | 5 | none | regional | |
| B | 1 | 0 | format-only | language | |
| A | 6 | 3 | single | language | |
| A | 18 | 14 | none | language | |
| C | 34 | 9 | none | language | |
| B | 9 | 0 | format-only | language | |
| A | 2 | 2 | dataset | language | |
| B | 21 | 6 | format-only | language | |
| C | 74 | 11 | none | regional | |
| A | 26 | 0 | dataset | language | |
| C | 49 | 2 | none | language | |
| B | 159 | 13 | format-only | regional | |
| B | 152 | 14 | format-only | country | |
| A | 1,155 | 0 | dataset | country | |
| A | 20 | 17 | none | language | |
| C | 87 | 5 | none | regional | |
| A | 2,400 | 0 | dataset | country | |
| C | 7 | 0 | none | language | |
| A | 2,400 | 8 | dataset | country | |
| A | 556 | 0 | dataset | country | |
| C | 13 | 9 | none | regional | |
| B | 76 | 18 | format-only | country | |
| A | 2,400 | 0 | dataset | country | |
| N | 0 | 0 | — | — | |
| A | 2,402 | 17 | dataset | country | |
| C | 23 | 10 | none | regional | |
| A | 3,607 | 52 | dataset | country | |
| A | 1,837 | 9 | dataset | country | |
| B | 112 | 18 | format-only | regional | |
| A | 24 | 10 | none | language | |
| A | 8 | 2 | dataset | language | |
| A | 2,415 | 21 | dataset | country | |
| A | 1,573 | 26 | dataset | country | |
| C | 308 | 14 | none | regional | |
| A | 365 | 22 | dataset | country | |
| B | 103 | 5 | format-only | regional | |
| B | 323 | 31 | format-only | regional | |
| A | 903 | 74 | dataset | country | |
| C | 32 | 13 | none | language | |
| C | 35 | 5 | none | regional | |
| C | 3 | 3 | none | regional | |
| C | 47 | 5 | none | regional | |
| C | 27 | 15 | none | language | |
| B | 282 | 24 | format-only | regional | |
| A | 2,399 | 74 | dataset | country | |
| B | 179 | 6 | format-only | regional | |
| A | 11 | 0 | single | language | |
| A | 7 | 6 | none | regional | |
| N | 0 | 0 | — | — | |
| A | 16 | 1 | dataset | language | |
| C | 212 | 4 | none | regional | |
| A | 2,399 | 20 | dataset | country | |
| A | 51 | 7 | none | regional | |
| A | 4,800 | 4 | dataset | language | |
| A | 6,643 | 52 | dataset | country | |
| A | 1,962 | 19 | dataset | language | |
| B | 218 | 14 | format-only | country | |
| C | 10 | 6 | none | regional | |
| A | 1 | 0 | single | language | |
| B | 412 | 25 | format-only | language | |
| B | 910 | 34 | format-only | country | |
| A | 3 | 3 | dataset | language | |
| B | 26 | 0 | format-only | regional | |
| C | 311 | 22 | none | regional | |
| B | 98 | 10 | format-only | regional | |
| C | 67 | 10 | none | regional |
Postcode modes: dataset: Every postcode comes from the dataset record of its locality. dataset-prefix: The dataset gives each locality’s postcode prefix; the remaining characters are synthetic. single: A single postcode covers the whole territory. region-prefix: Only the region’s postcode prefix is known. Placeholders keep that prefix but the remaining digits are synthetic. format-only: No open dataset links postcodes to places. Postcodes are left out unless you turn on pattern-valid placeholders. none: Postcodes are not used.
Known limitations
- Street names are synthetic, so address-verification services will usually reject the street line even when the postcode and town are real.
- Each country file holds a sample of up to about 2,400 places, so not every village appears.
- GeoNames postal data is partial in some countries: Brazil (municipality-level CEPs), Chile (commune-level), China (district codes from Google’s examples), Argentina (four-digit codes without the CPA letters), Ireland and Malta (prefixes only).
- UK localities are those recorded with each postcode. Royal Mail’s post town can differ.
- Google’s Chinese metadata predates some district mergers (for example, Shanghai’s Zhabei district merged into Jing’an in 2015).
- Regional name lists are approximations. Each country page says how specific its list is.
- Local-script names are partial in a few countries (for example, some Thai localities appear only in Latin script); country pages report the share.