Understanding Address Formats Across 100+ Countries
A comprehensive overview of how address formats vary across more than 100 countries. Essential knowledge for developers building international address systems.
The Global Address Challenge
There is no universal address format. Each country has developed its own conventions shaped by history, geography, language, and postal infrastructure. For developers building global software, this means a single address form cannot serve all users well.
Major Format Families
Address formats worldwide fall into several broad families:
Number-Before-Street (Anglo-American Pattern)
Used by the US, UK, Canada, Australia, New Zealand, and many former British colonies:
123 Main Street
City, State ZIP
Countries using this pattern: United States, Canada, United Kingdom, Australia, New Zealand, Ireland, South Africa, India, Philippines, Nigeria.
Street-Before-Number (Continental European Pattern)
Used by Germany, Austria, Switzerland, Netherlands, Sweden, and much of continental Europe:
Hauptstraße 123
PLZ City
Countries using this pattern: Germany, Austria, Switzerland, Netherlands, Belgium, Sweden, Norway, Denmark, Finland, Czech Republic, Poland, Hungary, Croatia.
Postal-Code-Before-City Pattern
In many European and Asian countries, the postal code precedes the city name:
12345 Berlin (Germany)
75001 Paris (France)
1000 Brussels (Belgium)
Countries: Germany, France, Belgium, Netherlands, Spain, Italy, Austria, Turkey, South Korea.
Large-to-Small (East Asian Pattern)
Japan, China, South Korea, and other East Asian countries write addresses from the largest geographic unit to the smallest:
Country > Province > City > District > Street > Building
This is the reverse of Western convention.
Minimal Structure Pattern
Some countries use very loosely structured addresses, sometimes without formal street names or postal codes in certain areas. This is common in parts of Africa, Southeast Asia, and the Middle East.
Postal Code Diversity
Numeric Only
4 digits: Australia, Austria, Belgium, Denmark, New Zealand, South Africa, Norway
5 digits: United States, Germany, France, Spain, Italy, Mexico, South Korea, Turkey
6 digits: India, Singapore, China, Romania
7 digits: Japan (NNN-NNNN)
Alphanumeric
United Kingdom: A9A 9AA pattern (6-7 characters)
Canada: A9A 9A9 pattern (6 characters)
Netherlands: 9999 AA pattern (6 characters)
Ireland: A99 A9A9 (Eircode, 7 characters)
With Separators
Japan: 999-9999 (hyphen)
Brazil: 99999-999 (hyphen)
Portugal: 9999-999 (hyphen)
Poland: 99-999 (hyphen)
No Postal Codes
Some countries do not use postal codes at all, or only use them for major cities. Developers should never make the postal code field required for all countries.
State/Province Conventions
US: 2-letter state abbreviation (CA, NY, TX)
Canada: 2-letter province abbreviation (ON, BC, QC)
Australia: 2-3 letter state abbreviation (NSW, VIC, QLD)
Brazil: 2-letter state abbreviation (SP, RJ, MG)
Japan: Prefecture name
Most European countries: No state/province in address
Language and Script Considerations
Addresses around the world use many different scripts:
Latin script - Used by most Western countries
Cyrillic - Russia, Ukraine, Bulgaria, Serbia
Arabic - Middle East and North Africa
Chinese characters - China, Taiwan
Japanese - Kanji, hiragana, katakana mix
Korean - Hangul
Devanagari - India (Hindi)
Thai - Thailand
Your address form must support the character sets used by your target countries.
Building a Universal Address Form
No single form layout works for all countries. The best approach is adaptive:
**Start with country selection** - Let the user choose their country first
**Adapt fields dynamically** - Show/hide and reorder fields based on the selected country
**Use appropriate labels** - "ZIP Code" for US, "Postcode" for UK, "PLZ" for Germany
**Validate per country** - Apply country-specific validation rules
**Allow a freeform fallback** - For countries you haven't mapped, provide generic multi-line address fields
Tips for Developers
**Store addresses as structured data** with separate fields for each component
**Also store a freeform version** for countries with unusual formats
**Never assume all countries use states or provinces**
**Support addresses with no postal code** for countries that lack them
**Test with addresses from at least 10 diverse countries** before launch
**Use CLDR (Unicode Common Locale Data Repository)** for authoritative address format data by country