Free tool · runs in your browser · no API key
Postal Code Validator
Zip Code Format by Country
Check whether a postal or ZIP code has the right format for 97 countries, and see the expected pattern, an example and the regex to use in your own forms.
Postal code formats and regex by country
In the format column, # is a digit and @ is a letter; other characters are literal.
| Country | Format | Example | Regex |
|---|---|---|---|
| Albania AL | #### | 1001 | ^\d{4}$ |
| Algeria DZ | ##### | 16000 | ^\d{5}$ |
| Andorra AD | AD### | AD500 | ^AD\d{3}$ |
| Argentina AR | @####@@@ or #### CPA (8 characters) or the older 4-digit code. | C1425BQD | ^([A-Z]\d{4}[A-Z]{3}|\d{4})$ |
| Armenia AM | #### | 0010 | ^\d{4}$ |
| Australia AU | #### | 2000 | ^\d{4}$ |
| Austria AT | #### | 1010 | ^[1-9]\d{3}$ |
| Azerbaijan AZ | AZ #### The AZ prefix is optional. | AZ 1000 | ^(AZ ?)?\d{4}$ |
| Bahrain BH | ### or #### | 317 | ^\d{3,4}$ |
| Bangladesh BD | #### | 1000 | ^\d{4}$ |
| Belarus BY | ###### | 220030 | ^\d{6}$ |
| Belgium BE | #### | 1000 | ^[1-9]\d{3}$ |
| Bosnia and Herzegovina BA | ##### | 71000 | ^\d{5}$ |
| Brazil BR | #####-### CEP. The hyphen is optional. | 01310-100 | ^\d{5}-?\d{3}$ |
| Bulgaria BG | #### | 1000 | ^\d{4}$ |
| Canada CA | @#@ #@# The letters D, F, I, O, Q and U are never used. | K1A 0B1 | ^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$ |
| Chile CL | ####### | 8320000 | ^\d{3}-?\d{4}$ |
| China CN | ###### | 100000 | ^\d{6}$ |
| Colombia CO | ###### | 110111 | ^\d{6}$ |
| Costa Rica CR | ##### | 10101 | ^\d{5}$ |
| Croatia HR | ##### | 10000 | ^\d{5}$ |
| Cyprus CY | #### | 1010 | ^\d{4}$ |
| Czechia CZ | ### ## | 110 00 | ^\d{3} ?\d{2}$ |
| Denmark DK | #### | 1050 | ^\d{4}$ |
| Dominican Republic DO | ##### | 10101 | ^\d{5}$ |
| Ecuador EC | ###### | 170150 | ^\d{6}$ |
| Egypt EG | ##### | 11511 | ^\d{5}$ |
| Estonia EE | ##### | 10111 | ^\d{5}$ |
| Ethiopia ET | #### | 1000 | ^\d{4}$ |
| Finland FI | ##### | 00100 | ^\d{5}$ |
| France FR | ##### | 75008 | ^\d{5}$ |
| Georgia GE | #### | 0108 | ^\d{4}$ |
| Germany DE | ##### | 10115 | ^\d{5}$ |
| Greece GR | ### ## | 105 57 | ^\d{3} ?\d{2}$ |
| Guatemala GT | ##### | 01001 | ^\d{5}$ |
| Hong Kong HK | No postal codes — No postal codes. | ||
| Hungary HU | #### | 1051 | ^[1-9]\d{3}$ |
| Iceland IS | ### | 101 | ^\d{3}$ |
| India IN | ###### PIN code; the first digit is never 0. | 110001 | ^[1-9]\d{2} ?\d{3}$ |
| Indonesia ID | ##### | 10110 | ^\d{5}$ |
| Iran IR | ########## | 1193653471 | ^\d{5}-?\d{5}$ |
| Ireland IE | @## **** Eircode: a routing key, a space, then 4 letters or digits (* = either). | D02 X285 | ^([AC-FHKNPRTV-Y]\d{2}|D6W) ?[0-9AC-FHKNPRTV-Y]{4}$ |
| Israel IL | ####### | 9614303 | ^\d{7}$ |
| Italy IT | ##### CAP. | 00184 | ^\d{5}$ |
| Japan JP | ###-#### The hyphen is optional. | 100-0001 | ^\d{3}-?\d{4}$ |
| Jordan JO | ##### | 11118 | ^\d{5}$ |
| Kenya KE | ##### | 00100 | ^\d{5}$ |
| Kuwait KW | ##### | 13001 | ^\d{5}$ |
| Latvia LV | LV-#### The LV- prefix is optional. | LV-1050 | ^(LV-?)?\d{4}$ |
| Liechtenstein LI | #### Shares the Swiss system (9485–9497). | 9490 | ^94(8[5-9]|9[0-7])$ |
| Lithuania LT | LT-##### The LT- prefix is optional. | LT-01100 | ^(LT-?)?\d{5}$ |
| Luxembourg LU | L-#### The L- prefix is optional. | L-2449 | ^(L-?)?\d{4}$ |
| Malaysia MY | ##### | 50000 | ^\d{5}$ |
| Malta MT | @@@ #### | VLT 1117 | ^[A-Z]{3} ?\d{4}$ |
| Mexico MX | ##### | 06600 | ^\d{5}$ |
| Moldova MD | MD-#### The MD- prefix is optional. | MD-2001 | ^(MD-?)?\d{4}$ |
| Monaco MC | 980## | 98000 | ^980\d{2}$ |
| Montenegro ME | ##### | 81000 | ^\d{5}$ |
| Morocco MA | ##### | 20000 | ^\d{5}$ |
| Nepal NP | ##### | 44600 | ^\d{5}$ |
| Netherlands NL | #### @@ | 1012 JS | ^[1-9]\d{3} ?[A-Z]{2}$ |
| New Zealand NZ | #### | 6011 | ^\d{4}$ |
| Nigeria NG | ###### | 100001 | ^\d{6}$ |
| North Macedonia MK | #### | 1000 | ^\d{4}$ |
| Norway NO | #### | 0150 | ^\d{4}$ |
| Oman OM | ### | 100 | ^\d{3}$ |
| Pakistan PK | ##### | 44000 | ^\d{5}$ |
| Peru PE | ##### | 15001 | ^\d{5}$ |
| Philippines PH | #### | 1000 | ^\d{4}$ |
| Poland PL | ##-### | 00-950 | ^\d{2}-\d{3}$ |
| Portugal PT | ####-### | 1100-148 | ^\d{4}-\d{3}$ |
| Puerto Rico PR | ##### or #####-#### US ZIP codes starting with 006, 007 or 009. | 00901 | ^00[679]\d{2}(-\d{4})?$ |
| Qatar QA | No postal codes — No postal codes; addresses use a P.O. Box. | ||
| Romania RO | ###### | 010011 | ^\d{6}$ |
| Russia RU | ###### | 101000 | ^\d{6}$ |
| Saudi Arabia SA | ##### or #####-#### | 11564 | ^\d{5}(-\d{4})?$ |
| Senegal SN | ##### | 12500 | ^\d{5}$ |
| Serbia RS | ##### | 11000 | ^\d{5}$ |
| Singapore SG | ###### | 238859 | ^\d{6}$ |
| Slovakia SK | ### ## | 811 01 | ^\d{3} ?\d{2}$ |
| Slovenia SI | #### An SI- prefix is sometimes used. | 1000 | ^(SI-?)?\d{4}$ |
| South Africa ZA | #### | 0001 | ^\d{4}$ |
| South Korea KR | ##### 5-digit code in use since 2015. | 03187 | ^\d{5}$ |
| Spain ES | ##### The first two digits are the province (01–52). | 28013 | ^(0[1-9]|[1-4]\d|5[0-2])\d{3}$ |
| Sri Lanka LK | ##### | 00100 | ^\d{5}$ |
| Sweden SE | ### ## | 111 22 | ^[1-9]\d{2} ?\d{2}$ |
| Switzerland CH | #### | 8001 | ^[1-9]\d{3}$ |
| Taiwan TW | ### or ##### or ###### | 100 | ^\d{3}(\d{2,3})?$ |
| Thailand TH | ##### | 10200 | ^\d{5}$ |
| Tunisia TN | #### | 1000 | ^\d{4}$ |
| Turkey TR | ##### The first two digits are the province (01–81). | 34000 | ^(0[1-9]|[1-7]\d|8[01])\d{3}$ |
| Ukraine UA | ##### | 01001 | ^\d{5}$ |
| United Arab Emirates AE | No postal codes — No postal codes; addresses use a P.O. Box. | ||
| United Kingdom GB | @# #@@ or @## #@@ or @@# #@@ or @@## #@@ or @#@ #@@ or @@#@ #@@ Outward code, a space, then a 3-character inward code. | SW1A 1AA | ^([A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}|GIR ?0AA)$ |
| United States US | ##### or #####-#### 5-digit ZIP or ZIP+4. | 90210 | ^\d{5}(-\d{4})?$ |
| Uruguay UY | ##### | 11000 | ^\d{5}$ |
| Venezuela VE | #### | 1010 | ^\d{4}$ |
Validate addresses server-side
A format check tells you a code looks right, not that it exists. The /v1/places/validate endpoint checks the postal code against 500,000+ real codes, confirms it belongs to the given state and city, and suggests corrections. Paid plans start at €5/month.