Why Richmond Zip Codes Drive People Insane
Richmond is an independent city in Virginia, which means it doesn't belong to any county. That sounds clean on paper but it creates a weird zoning mess for anyone who has ever tried to mail something or figure out where they actually live. The surrounding counties — Henrico, Chesterfield, Charles City — all share overlapping territory with Richmond zip codes, and USPS doesn't always draw the line where you'd expect it. I spent about six months dealing with a mailing list import issue that came down entirely to this. We were consolidating donor addresses for a nonprofit and roughly fourteen percent of our records had street addresses in Richmond but the zip code didn't match the expected postal route. Turns out a bunch of neighborhoods on the eastern edge of the city use Henrico county postal routing even though they're technically inside the city limits. Not obvious unless you've tried to clean the data by county.
Richmond City Va Zip Codes The Definitive Guide To Mailings Moves And Neighborhood Boundaries
Here's the actual list of Richmond city zip codes and what each one covers in practice. 23219 — Downtown core, the business district, Main Street corridor. Mostly commercial mail and federal buildings. If your address starts with "Main St" and it's between 1st and about 15th, this is probably it. 23220 — Jackson Ward and the area around Chamberlayne Avenue. Residential mixed with some commercial along Broad Street.
23221 — East End, stretching from roughly 28th Street eastward toward the James River. This is a big residential zone that includes parts of the Fan's eastern edge. 23222 — Shockoe Bottom and Federalsburg. Industrial turned residential, near the riverfront. Covers the area south of downtown between the railroad tracks and the James. 23223 — Near West End and parts of the Museum District. Includes the area around W. Franklin Street west of Byrd Park.
Get the Full Details

23224 — Northside, generally the area north of Broad Street up toward the Airport. Roughly bounded by I-95 to the east and the city line to the north. 23225 — Northside near Church Hill and the airport approach. Overlaps awkwardly with 23224 depending on which side of the street you're on. 23226 — Short Pump and the far West End. This is suburban territory — office parks, malls, residential subdivisions. The boundary between this and Henrico's 23233 gets blurry real fast.
23227 — Northern Richmond border area near the Henrico line. A lot of newer subdivisions here that mail through Henrico processing centers. 23228 — Northside again, but further west toward the Airport and Hopewell Avenue corridor. Mostly light industrial and older residential. 23229 — Southside, south of Main Street and east of the river. Includes parts of the Southside business district and the area around Belvidere Street.
23230 — The Fan District, one of the most well-known neighborhoods. Bounded roughly by Monroe, Grove, 28th, and Brookwood. Residential, high density, very walkable. This zip code is consistently one of the most expensive in the city for housing. 23231 — Church Hill and Scott's Addition. Historic row houses, breweries, the area around Arthur Ashe Boulevard. 23232 — Downtown again but specifically the Castlefield and Canal District area. Mixed commercial and residential redevelopment zone.

23233 — This one is tricky. Part of it sits in Richmond proper near West End, but a lot of what people think of as "West End" actually falls under 23226 or even Henrico's 23233. The USPS uses the same zip number across the county line here. 23234 — Greater Richmond suburban overlap area. Encompasses parts of the West End that bleed into Henrico. Lots of new construction and suburban housing tracts. 23235 — South Richmond, River Park area. Residential, close to the James River Trail. Includes the Mayo Fountain area.
23236 — Meadowbrook and Oakland District. West Richmond residential, near the Byrd Park extended area. 23237 — Glen Allendale and South Richmond. Working-class residential area near the Southside corridor. 23238 — Glen Allen adjacent area. Some parts of this are technically Richmond, some spill into Henrico. The zip code alone won't tell you which.
23260, 23269, 23294, 23298, 23299 — These are all PO Box only zip codes. They serve specific post offices across the city. If you have a street address, none of these apply to you.

How To Actually Use This When Moving Or Mailing
The biggest problem people run into isn't finding the zip code. It's figuring out whether their address is actually in Richmond city or in one of the surrounding counties. The boundary between Richmond and Henrico runs through a lot of neighborhoods in a way that isn't visible on the ground. You can be on one side of a street in Richmond and the other side is Henrico. I learned this the hard way when I moved to a house on a street that ran along the city-county line. The mailbox had a Richmond zip code but the property tax records showed Henrico County. The school district was Henrico. The water company was Henrico. But the USPS deliverable address said Richmond. All of it was technically correct. The address worked for mail delivery fine, but everything else — taxes, voting precinct, emergency services — pointed to the county. When I needed to sort this out, I stopped guessing and went straight to the Richmond Planning Commission GIS map at richmondgov.com. Their online parcel viewer lets you type in an address and it shows you exactly which jurisdiction it falls under — city or county, school division, fire district, voting precinct. Takes about thirty seconds and it resolves every ambiguity I've ever had.
For mailings specifically, the USPS address validation tool at tools.usps.com is your best friend. You paste the full address and it confirms whether the zip code matches the postal delivery route. If it flags a mismatch, don't ignore it. Mailed pieces with invalid zip combinations get delayed or returned. I once had a direct mail campaign with about five hundred letters that got held at the destination post office because roughly twenty percent of the addresses had stale or incorrect zip codes from old city data. Took me two hours to clean the list properly.
Common Pitfalls That Wasted Me Weeks
First, don't assume a zip code equals a neighborhood boundary. 23226 covers Short Pump but it also includes portions of what people colloquially call West End that are technically in Henrico. The postal boundary and the municipal boundary don't align. Always check both separately. Second, new developments get assigned zip codes retroactively. When a new subdivision opens in the northern part of the city near 23227, the developer might file for a new zip or request a change. This happens more often than you'd think in growing Richmond suburbs. If you're building a database and someone gives you a zip code you've never seen before, verify it hasn't changed recently rather than assuming it's wrong. Third, the independent city status of Richmond means there's no county government layer between the city and the state. That sounds like a simplification but it actually creates confusion for mail sorting because some USPS processing routes still reference Henrico and Chesterfield county names in their internal routing data even for addresses that are firmly within the city. It rarely affects delivery but it shows up in address validation reports and can throw off automated mail sorting systems.

If you need an authoritative downloadable dataset of Richmond zip code boundaries, the Census Bureau's MAF/TIGER files at census.gov/geographies/mapping-files.html have the most current shapefiles. The USPS doesn't publish official polygon data for zip codes — they only publish the centroid points and delivery sequences. For anything requiring precise geographic boundaries, the TIGER files are the standard source and they update quarterly.
What This Doesn't Cover
This guide covers the independent city of Richmond only. It does not include the surrounding counties' zip codes even though they interleave with Richmond's. Henrico has its own full set starting with 23060 through 23298. Chesterfield starts with 23824 and goes up. If you're working on a regional mailing list that includes all of Greater Richmond, you need separate datasets for each jurisdiction and you need to handle the overlap zones carefully. The zip code maps I referenced are administrative boundaries for mail delivery, not historical or cultural neighborhood definitions. The Fan District as a cultural neighborhood doesn't match exactly to 23230. Church Hill doesn't match exactly to 23231. These distinctions matter if you're doing demographic analysis or market research. Always clarify which boundary system you're using before you build anything on top of it.