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

Illustration for this article: 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.

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.

PrefixesState or territoryCodes with a leading 0Notes
005New York200501 and 00544, both the IRS centre in Holtsville
006 to 009Puerto Rico177Lowest is 00601, Adjuntas
008US Virgin Islands16Shares the 008 prefix with Puerto Rico
010 to 027, 055Massachusetts68505501 and 05544 are Andover, a two-code block inside the Vermont range
028 to 029Rhode Island90The smallest state block
030 to 038New Hampshire281
039 to 049Maine485039 is Maine, not New Hampshire: Kittery, Berwick, Eliot
050 to 059Vermont308
060 to 069Connecticut429Plus 06390, Fishers Island, which is New York
070 to 089New Jersey723The largest block; the only 0-region state outside New England
090 to 099Military (APO and FPO AE)346US forces in Europe, the Middle East and Africa
Three-digit ZIP prefixes beginning with 0 and the state or territory they belong to (GeoNames, 2026-09-07)

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.

Bar chart of 3,543 US ZIP codes that start with 0 by state: New Jersey 723, Massachusetts 685, Maine 485, Connecticut 429, military AE 346, Vermont 308, New Hampshire 281, Puerto Rico 177, Rhode Island 90, US Virgin Islands 16 and New York 3.
New Jersey and Massachusetts hold 40% of all leading-zero ZIP codes. Source: GeoNames US, PR and VI postal files, downloaded 2026-09-07; counts computed by Fakenamely.

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 digitsCodesWhere they are
00195Puerto Rico (177), US Virgin Islands (16), New York (2)
01370Massachusetts
02403Massachusetts (313), Rhode Island (90)
03292New Hampshire (281), Maine (11)
04474Maine
05310Vermont (308), Massachusetts (2)
06430Connecticut (429), New York (1)
07372New Jersey
08351New Jersey
09346Military APO and FPO, state code AE
ZIP codes with a leading 0, grouped by the first two digits (GeoNames, 2026-09-07)

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].

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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].
  7. 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.

  1. 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.
  2. Validate with ^[0-9]{5}(-[0-9]{4})?$ on the string. A regex does not know that 0 is 'nothing'.
  3. 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.
  4. 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.
  5. Serialise as a JSON string, "02134", not a number. Most JSON parsers will turn 02134 into 2134 or reject it as an invalid literal.
  6. 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

InputExpectedRule it exercises
02134Accept, keep the zeroStored as text
2134Reject or repair to 02134 only if the state is MAFour digits, leading zero significant
00501Accept, state NYLowest code; NY exception
06390Accept, state NYConnecticut prefix, New York address
03901Accept, state ME039 is Maine, not New Hampshire
09012Accept, state AEMilitary mail, no city or county
00601Accept, state PRPuerto Rico
00000RejectNever assigned
02134-1234Accept, keep the hyphenZIP+4 stored as one string
"02134" in JSONAcceptSerialised as a string
02134 in JSON without quotesReject at parse timeInvalid numeric literal in strict JSON
1001 in a CSV with state MAFlag for repairExcel damage detection
Inputs to run through any form or import that handles US ZIP codes

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

  1. GeoNames postal code dataset, US, PR and VI files (CC BY 4.0)GeoNames
  2. ZIP CodeWikipedia
  3. Keeping leading zeros and large numbersMicrosoft Support
  4. Format numbers in a spreadsheetGoogle 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

Put this to work