- Are these real ZIP codes, or just five random digits?
- Real. Every code comes from a bundled dataset of currently-assigned US ZIP codes, shown with the city and state it actually serves. That matters more than it sounds: most pages that answer this query generate five digits on the fly, which means roughly three out of five codes they hand you were never assigned to anywhere. Paste one into a checkout form or a CRM with address validation and it bounces. The distinction is the entire reason this tool exists.
- How do you know the ZIPs are real?
- Two independent sources had to agree before a single row shipped. The codes come from a public USPS/Census-derived dataset. Separately, the state-by-state table of USPS 3-digit prefix ranges — Massachusetts is 010–027, California is 900–961, New York is 100–149 plus a couple of unique codes — was written from the published allocation rather than derived from that dataset, then run across all 42,366 source rows. 42,361 matched. The five that didn't are named in a comment in the source and left out. A test re-runs that prefix check over every shipped row on every build, so a hand-added code can't skip the gate.
- Why does 02134 keep its leading zero here when spreadsheets lose it?
- Because a ZIP code is text that happens to look like a number, and it is stored and handled as text everywhere in this tool — in the dataset, in what's on screen, and in what lands on your clipboard. The moment something treats 02134 as a number it becomes 2134, which is not a ZIP code at all. Spreadsheets do this by default on paste, which is why the CSV format here quotes every field and why there's a note reminding you to paste into a text column. Every New England, New Jersey and Puerto Rico code starts with a zero, so this is not an edge case — it's a fifth of the country.
- Can I get ZIP codes for one specific state?
- Yes. Pick the state from the dropdown and every code you draw belongs to it, with a city in that state under it. This is the useful mode for testing a form that validates the state field against the ZIP, or for building fixtures where the address has to be internally consistent. Smaller states have smaller pools — if you ask for 50 Wyoming codes and there are only 18, you get all 18 and a note saying so, rather than a padded list with repeats in it.
- What about Puerto Rico, Guam and the other territories?
- They're in the dropdown and they return real codes — Puerto Rico's 006xx–009xx, Guam's 969xx, and so on. They are deliberately excluded from the Any pool, though. Someone typing "random zip code" almost never means Guam, and territory codes fail validation on a fair number of US-only address forms, so getting one at random when you wanted a generic US code would be a small, annoying surprise. Select the territory explicitly and you get it.
- How many can I generate at once?
- Up to 50 per batch, no account and no upgrade prompt. Every code inside a batch is distinct — you'll never get the same ZIP twice in one list — and pressing Generate again draws a fresh set that excludes what you were just looking at. Dropping the count from 50 back to 5 keeps the first five and clears the rest rather than re-rolling everything. The test-data platforms that hold real ZIP data cap the free tier at a few hundred rows and charge to lift it; there's nothing to lift here.
- Does this generate ZIP+4 codes?
- No, and that's deliberate. The four-digit add-on identifies a specific block face, building or PO Box group — there is no way to invent one that is both plausible and correct. A tool whose whole claim is "these are real" should not print a real five-digit code next to four fabricated digits, because the result looks more authoritative than it is and will fail delivery-point validation. Five real digits is the honest answer.
- What can I actually use these for?
- Seeding a test database or a staging environment with addresses that survive validation. Filling a signup form you're QA-ing without typing 02134 forty times. Building a geography lesson where students look up where a code lands. Sampling markets for a rough spread of where to test something. What they aren't for is pretending to be somewhere you're not — a real ZIP belongs to a real place, and using one to defeat a geo-restriction or misrepresent a shipping address is both a bad idea and not what the tool is built around.
- Does anything get sent to a server?
- No. The dataset ships with the page and the draw runs in your browser using crypto.getRandomValues — the same randomness source a password generator uses, with rejection sampling so no code gets a head start over any other. There's no API call, no key, no account, no logging of what you generated. Turn off your network after the page loads and the tool still works.