US ZIP Code Map

Methodology

Last updated September 20, 2026

This page explains how US ZIP Code Map labels population, income, and home value, and how city, county, and radius pages are built. It is not an official USPS, Census, or IRS product. Sources are listed on data sources.

ZIP codes and ZCTAs

USPS ZIP codes are delivery routes, not polygons. The boundaries on this map are Census ZIP Code Tabulation Areas (ZCTAs) from TIGER. A ZCTA is not the same as a USPS ZIP. A PO Box, unique, or military ZIP may have no matching ZCTA and no published demographics. In that case we say the figures are unavailable. We do not write 0 for a missing statistic.

City pages = Census place GEOID + ACS place tables

A city page is a Census place keyed by GEOID, not a pile of ZIP names. Headline population, households, median household income, and median home value come from ACS 5-year 2023 place tables (2019–2023): B01003, B11001, B19013, and B25077. Houston, TX is place GEOID 4835000. We do not invent place populations and we do not put a ZIP-sum in the headline.

Same-name Census places in one state stay separate GEOIDs. The short URL /{state}/{name} is a disambiguation page when more than one place shares that name. Each GEOID has a nested county (or GEOID) URL. Older /{name}-{county} URLs stay live and point at the nested canonical. Unique names such as Houston keep a single Census place page.

County pages = county GEOID + ACS county tables

A county page is a Census county (summary level 050) keyed by GEOID. Middlesex County, NJ is GEOID 34023. Headlines are ACS county tables, not the union of ZIP populations.

Postal city pages (no Census GEOID)

Some USPS mailing cities are not Census places. They still get a city URL so previously indexed pages stay live. The page is a postal city: ZIP codes come from USPS primary or acceptable names, and the headline is labeled “Population of associated ZIP codes.” That figure is a ZIP-sum. It is never presented as Census place population, and JSON-LD does not emit a Census StatisticalPopulation for it.

Examples that have no place GEOID include Rockaway Park, Far Rockaway, Howard Beach, and Breezy Point in New York. When a Census place and a USPS name share a slug in the same state, the Census place — or the Census collision disambiguation page — keeps the short URL.

ZIP/ZCTA and Place Overlap

Overlap percentages come from the licensed ZIP Code Database place_overlap / county_overlap extracts ingested as percent_of_zip_population_in_*. They are not Census ZCTA–Place relationship fields (ZPOPPCT/POPPT) and have no published vintage column in our dump. Rows join on place_geoid / county_geoid. Population overlap is that field when it is present. Area, land, or household percents are shown only if the population percent is missing, and they are labeled as area (or land/households), never as population.

The ACS demographic period and the geographic overlap vintage are separate datasets and may cover different time periods. Overlap percents are not ACS 2019–2023.

Geographic ZIP lists keep a ZIP on a place page when that ZIP’s overlap row matches the place GEOID and has a real share. We do not drop a ZIP because its USPS city name differs, and we do not attach another place’s ZIPs just because the names match.

Postal ZIPs vs overlapping ZIPs

Geographic ZIP lists come from overlap rows for that GEOID with a real share (population, area, or households). A 0.0% row is dropped. Overlap percents stay descriptive. We do not attribute full ZIP population to the city or county, and we do not multiply population by area percent.

Population share on a place or ZIP page is the vendor overlap percent in one direction:percentZipPopInPlace / percentZipPopInCounty is the share of that ZIP/ZCTA's population that falls inside the place or county. The reverse columns (percentPlacePopInZip / percentCountyPopInZip) are the share of the place or county's population that falls inside that ZIP. Neither direction is area, and neither is the ACS place or county headline.

Postal lists are USPS primary or acceptable names: “USPS associates this ZIP with Houston.” They are not used for headlines. A ZIP that crosses counties stays on each intersecting county page with its stored overlap percent.

State pages

State headlines use ACS state tables (summary level 040) for that state FIPS. A secondary line still shows the combined population of ZIP/ZCTAs in the directory for that state.

ACS 2023 and IRS SOI on ZIP pages

Headline ZIP population, median household income, and median home value come from ACS 2023 five-year estimates when ACS publishes them for that ZCTA. ZIP pages also label the vendor population_count and the latest IRS SOI population when those fields exist — three different series, not one number. On 77007 that is ACS, directory count, and IRS.

Population history

The history chart is paired with an HTML table of Year, ACS population, and IRS population. A blank cell means that source did not publish a count for the year.

Rankings and ACS jam values

Census Notes on ACS Estimate and Annotation Values marks an open-ended median as median+ or median- (examples: 250,000+ and 2,500-). The 2019–2023 ACS 5-year table shells store those estimates as jam values. One formatter prints them on ZIP KPIs, facts, place tables, map popups, rankings, and JSON-LD. We do not invent sentinels for variables we do not show.

ACS 2023 5-year jam values used on this site
TableMetricStored topPrinted topStored bottomPrinted bottom
B19013 / B20002Median household income / earnings250001$250,000+2499$2,500-
B25077Median home value2000001$2,000,000+9999$10,000-
B25064Median gross rent3501$3,500+99$100-

The rankings page prints those caps as $250,000+ and $2,000,000+, not $250,001. Tied values share a competition rank (1, 1, 3). Missing records are omitted. Ties are not broken by ZIP sort.

Radius distances

The radius tool includes a ZIP when the haversine distance between Census internal-point centroids is at most X miles. It is not driving distance and not a ZCTA-area intersection. ZIP pages also list the 12 nearest centroids (any distance) and a 2-mile centroid table in the first HTML. Query URLs with ?q= or miles are noindexed; the canonical URL stays /tools/radius.

Missing values

Empty ACS or IRS fields stay blank (an em dash) or “No Census ACS for this geography.” We never fill missing population, income, or home value with 0.

Update cadence

Figures refresh when we re-ingest the commercial ZIP extract, ACS / IRS history tables, and the ACS 2023 place, county, and state summary files. Map boundaries follow the Census TIGER ZCTA file shipped with the product.

Errors

If a label, vintage, or join looks wrong, use the contact form. Include the URL (for example a ZIP, city, or county page).