ZIP Codes That Start With 0: Every State, Plus the Excel Fix
Which US ZIP codes start with 0: the 9 states and territories, counts by prefix, odd cases like 00501 and 06390, and how to stop Excel dropping the zero.
By VincentPublished September 7, 2026Last updated September 7, 20268 min read

A ZIP code that starts with 0 is a real code in a real state. It is also the code most likely to arrive as four digits, because somewhere between the form and the spreadsheet it was treated as a number. This page lists every state and territory whose codes begin with 0 and counts them from the GeoNames postal files [geonames-zip]. It explains the handful of odd cases and gives the fix for Excel and Google Sheets. The full list of 3,543 codes is a downloadable CSV.
The states and territories with ZIP codes starting with 0
The first digit of a ZIP code is a region, numbered from the Northeast at 0 to the West Coast at 9. The second and third digits name the sectional centre facility that sorts the mail [wiki-zip]. Region 0 is New England, New Jersey, Puerto Rico and the Virgin Islands, plus military mail routed through the East Coast. Here is how the three-digit prefixes divide it.
| Prefixes | State or territory | Codes with a leading 0 | Notes |
|---|---|---|---|
| 005 | New York | 2 | 00501 and 00544, both the IRS centre in Holtsville |
| 006 to 009 | Puerto Rico | 177 | Lowest is 00601, Adjuntas |
| 008 | US Virgin Islands | 16 | Shares the 008 prefix with Puerto Rico |
| 010 to 027, 055 | Massachusetts | 685 | 05501 and 05544 are Andover, a two-code block inside the Vermont range |
| 028 to 029 | Rhode Island | 90 | The smallest state block |
| 030 to 038 | New Hampshire | 281 | |
| 039 to 049 | Maine | 485 | 039 is Maine, not New Hampshire: Kittery, Berwick, Eliot |
| 050 to 059 | Vermont | 308 | |
| 060 to 069 | Connecticut | 429 | Plus 06390, Fishers Island, which is New York |
| 070 to 089 | New Jersey | 723 | The largest block; the only 0-region state outside New England |
| 090 to 099 | Military (APO and FPO AE) | 346 | US forces in Europe, the Middle East and Africa |
New Jersey alone holds one leading-zero code in five. Massachusetts is next. Together the two states account for 1,408 of the 3,543 codes, so a customer file that covers the New York metro area will be full of them. The one state most people forget is Maine, because its codes start with 04 and its southern tip starts with 039.

Counts by two-digit prefix
The autocomplete for this question splits by the first two digits, so here is that view. Every two-digit prefix from 00 to 09 is in use. Five of them belong to a single state or range: 01, 04, 07, 08 and 09. The other five are shared.
| First two digits | Codes | Where they are |
|---|---|---|
| 00 | 195 | Puerto Rico (177), US Virgin Islands (16), New York (2) |
| 01 | 370 | Massachusetts |
| 02 | 403 | Massachusetts (313), Rhode Island (90) |
| 03 | 292 | New Hampshire (281), Maine (11) |
| 04 | 474 | Maine |
| 05 | 310 | Vermont (308), Massachusetts (2) |
| 06 | 430 | Connecticut (429), New York (1) |
| 07 | 372 | New Jersey |
| 08 | 351 | New Jersey |
| 09 | 346 | Military APO and FPO, state code AE |
Across the GeoNames US, PR and VI files there are 41,681 distinct five-digit codes. The 3,543 with a leading zero are 8.5% of them. For a national customer list that is one row in twelve. For a list of New England customers it is every row.
The odd cases
Most of the 0-region is tidy: one prefix, one state. Six cases break the pattern, and they are the ones that catch a validator built from a state-prefix table.
- 00501 and 00544, Holtsville, New York. The lowest ZIP code in the country belongs to an IRS processing centre, not a town [wiki-zip]. New York's own codes start with 1, so a rule that says 'NY means first digit 1' rejects it.
- 06390, Fishers Island, New York. The island is in New York but its mail comes through Connecticut, so it carries a Connecticut prefix. Wikipedia lists it as the one New York exception in region 0 [wiki-zip].
- 05501 and 05544, Andover, Massachusetts. A two-code block sitting inside Vermont's 05 range. Massachusetts otherwise runs from 010 to 027.
- 039, Maine. New Hampshire owns 030 to 038, but 039 crosses the border into Kittery, Berwick and Eliot. Eleven Maine codes start with 03.
- 090 to 099, military mail. These have no state, no city and no county. GeoNames records them as APO and FPO entries with coordinates in Europe. A state lookup on them returns nothing, and that is correct.
- 00000. It appears in a lot of test data and in a lot of shipping forms for countries without postal codes. It has never been assigned. Treat it as invalid in the US, and see the Hong Kong and UAE pages for why it turns up.
Why Excel drops the zero
Excel's default cell format is General. In General format, anything that looks like a number is stored as a number, and a number has no leading zeros. Microsoft's help page states it plainly: Excel 'automatically removes leading zeros' [ms-leading-zeros]. So 02134 becomes 2134 the moment it lands in the cell. The CSV file was fine. The damage happens on open.
The same thing happens in Google Sheets with the Automatic format, in Numbers, and in any database column declared as an integer. It also happens silently. Nothing warns you, and the four-digit value looks like a plausible ZIP code from somewhere else. 2134 is not a valid code, but 1001 (from 01001, Agawam) looks exactly like a code, and it is not one either.
How to keep the leading zero
Every method below does the same thing: it stops the spreadsheet treating the column as a number. Pick the one that fits where the data is coming from [ms-leading-zeros].
- Typing or pasting into Excel: select the column first, set Format Cells to Text, then paste. Text is the only format that stores exactly what you typed.
- A single cell: type an apostrophe before the number, as '02134. The apostrophe is not stored and not printed; it only marks the cell as text.
- Numbers already stripped: apply a custom number format of 00000 to the column. Excel pads 2134 back to 02134 on display. The stored value is still the number 2134, so use this for viewing and printing, not for export.
- A new column that survives export: use =TEXT(A2,"00000") beside the damaged column, then copy and paste as values. This creates real five-character text.
- Opening a CSV: do not double-click the file. Use Data, then From Text/CSV, and set the ZIP column's data type to Text in Power Query before loading. Excel's Special category also offers a ready-made Zip Code format.
- Google Sheets: select the column, then Format, Number, Plain text, before pasting. For values already stripped, a custom number format of 00000 pads the display the same way as Excel [sheets-formats].
- ZIP+4 codes: the same rules apply to 02134-1234. Keep the hyphen and the leading zero together as one text value; the Special Zip Code + 4 format exists for display only.
Rules for developers
The spreadsheet problem has a database twin. A ZIP column declared as INT, or a JSON field emitted as a number, loses the zero in exactly the same way. The random ZIP code generator keeps its output as text for this reason, and its CSV export does too. These are the rules that keep it that way downstream.
- Store the ZIP as a string. Declare the column CHAR(5) or VARCHAR(10), never an integer type. This is the whole fix; everything else is repair.
- Validate with ^[0-9]{5}(-[0-9]{4})?$ on the string. A regex does not know that 0 is 'nothing'.
- Repairing old data: pad on read with LPAD(zip, 5, '0') in SQL or zip.padStart(5, '0') in JavaScript. A four-digit value from a 0-region state is the only case where this is safe; check the state before padding.
- Do not derive the state from the integer value. 501 is Holtsville, New York, and 6390 is also New York. Use the string prefix and the state-prefix table, and keep the exceptions above as a lookup.
- Serialise as a JSON string, "02134", not a number. Most JSON parsers will turn 02134 into 2134 or reject it as an invalid literal.
- Test with a 0-region fixture. One row from Massachusetts or New Jersey in the seed data will catch the bug in every layer that touches it.
Test cases
| Input | Expected | Rule it exercises |
|---|---|---|
| 02134 | Accept, keep the zero | Stored as text |
| 2134 | Reject or repair to 02134 only if the state is MA | Four digits, leading zero significant |
| 00501 | Accept, state NY | Lowest code; NY exception |
| 06390 | Accept, state NY | Connecticut prefix, New York address |
| 03901 | Accept, state ME | 039 is Maine, not New Hampshire |
| 09012 | Accept, state AE | Military mail, no city or county |
| 00601 | Accept, state PR | Puerto Rico |
| 00000 | Reject | Never assigned |
| 02134-1234 | Accept, keep the hyphen | ZIP+4 stored as one string |
| "02134" in JSON | Accept | Serialised as a string |
| 02134 in JSON without quotes | Reject at parse time | Invalid numeric literal in strict JSON |
| 1001 in a CSV with state MA | Flag for repair | Excel damage detection |
Download the full list
The CSV holds every one of the 3,543 codes with its place name, state code, state name and three-digit prefix, sorted by ZIP. It is 124 KB. The place names are GeoNames' own, which is why the military rows read as 'APO AE' and 'FPO AA' rather than as towns. The state for those rows is set to AE, following the USPS assignment for the 09 range [wiki-zip], even where GeoNames labels the row AA.
Method note: the counts come from the GeoNames US, PR and VI postal files downloaded on 2026-09-07 [geonames-zip]. The US file listed 41,490 rows and 41,488 distinct codes; Puerto Rico and the Virgin Islands are separate files in GeoNames, so they were added by hand. A code counts once, however many rows it has. The ZIP code statistics post uses an older download from 2026-08-22, which is why its totals differ slightly. For the general shape of the system, start with what a ZIP code is; for the full worldwide picture, see postal code formats by country.
References & sources
- GeoNames postal code dataset, US, PR and VI files (CC BY 4.0) — GeoNames
- ZIP Code — Wikipedia
- Keeping leading zeros and large numbers — Microsoft Support
- Format numbers in a spreadsheet — Google Docs Editors Help
Frequently asked questions
What ZIP codes start with 0?+
Codes from 00501 to 09999. The first digit 0 covers Connecticut (060 to 069), Massachusetts (010 to 027, plus 055), Maine (039 to 049), New Hampshire (030 to 038), New Jersey (070 to 089), Rhode Island (028 and 029), Vermont (050 to 059), Puerto Rico (006 to 009) and the US Virgin Islands (008). New York has three: 00501 and 00544 in Holtsville, and 06390 on Fishers Island. The 090 to 099 range is military mail for Europe, the Middle East and Africa.
Which ZIP codes start with 00?+
Only 195 codes in the GeoNames files. Two are in New York: 00501 and 00544, both for the IRS centre in Holtsville. The rest are Puerto Rico (006 to 009, 177 codes) and the US Virgin Islands (008, 16 codes). 00000 is not a ZIP code and never has been.
Which state has ZIP codes that start with 07 or 08?+
New Jersey, and only New Jersey. The 070 to 089 prefixes all belong to it: 372 codes under 07 and 351 under 08 in the GeoNames file. New Jersey is the only 0-region state that does not touch the others, which is why its codes are the ones most often mangled in databases built around 'New York and New England'.
What ZIP codes start with 09?+
Military addresses, not a state. The 090 to 099 range is used for APO and FPO mail to US forces in Europe, the Middle East, Africa and the ships in nearby waters. The state field on those addresses is AE. GeoNames lists 346 codes in the range, and none of them map to a US town.
Why does Excel remove the 0 from my ZIP codes?+
Because it reads 02134 as the number 2,134. Microsoft's own help page says Excel 'automatically removes leading zeros'. The fix is to stop the column being a number. Format it as Text before you paste, prefix values with an apostrophe, or apply the custom number format 00000. For files, import through Power Query with the column type set to Text. The Special category also has a ready-made Zip Code format.
Do any US area codes start with 0?+
No. That is a different rule. In the North American Numbering Plan an area code can never begin with 0 or 1, because those digits are reserved for operator and long-distance dialling. So a phone number can be checked as a plain integer, and a ZIP code cannot. The two fields need different validation.
More on addresses and postal formats
- Hong Kong ZIP Code: What to Enter (000000, HKG or 999077)
- New Zealand Address Format: Postcodes, Examples & Rules
- US ZIP Code Statistics — State Counts & CSV
- How Free Address Generators Work: Streets, ZIPs & Limits
- US Address Format Explained: USPS Rules & Examples
- What Is a ZIP Code? Format, Structure & How They Work