Washington DC Area Mailing Codes
Most people think zip codes are just random numbers slapped onto neighborhoods. They're not. They follow actual sorting logic that the USPS designed decades ago. I learned this the hard way when I was building a mailing list for a small nonprofit in the District. Our first batch of direct mail went out with what we thought was a solid address dataset. About forty percent of it came back. Not because people had moved. Because the addresses were technically correct but the zip codes were wrong in ways you wouldn't expect.
Washington Dc Zip Codes The Untold Secrets Of The Nations Capital
There are roughly thirty active zip codes within the DC boundary itself. The range runs from 20001 up through 20039, with a few scattered codes like 20041, 20042, 20052, 20064, 20065, 20070, 20071, 20072, 20073, 20074, 20075, 20076, 20077, 20080, 20081, 20082, 20090, 20091, 20094, 20305, 20306, 20317, 20373, 20374, 20390, 20405, 20410, 20421, 20501 through 20599, and 20540-20581 covering federal agencies. The federal ones are where things get messy for anyone doing anything operational with DC addresses. 20501 is the White House, sure, but 20502 through 20599 cover every major agency. The CIA uses 20505. The State Department has its own slice. NOAA sits at 20590. If you're sending something to a federal workplace, you can't just use a generic 20024 because that won't reach the right facility. I ran into a real problem last year when a client needed to ship documents to multiple government offices. Their vendor provided a CSV with just city and street address. No zip code second column. I pulled the data against the USPS Carrier Route database and spent three hours matching PO box ranges to their proper zip codes. The trick is that many federal buildings have their own internal zip code system that overrides the standard geographic sorting.
DC zip codes also have a quirk that catches everyone off guard. The 20001 through 20039 range covers the District proper, but Georgetown sits in 20057. Brookland is 20017. Shaw is 20001. These boundaries don't follow neighborhood names at all. They follow delivery routes. If you've ever tried to figure out which zip covers a specific block, you'll find that a single zip can span half a dozen neighborhoods and a single neighborhood can fall across three different codes. Another thing nobody tells you: DC and Maryland zip codes overlap in confusing ways. 20016 covers part of DC but also touches areas near the Maryland line. 20012 runs along the Northeast border. If you're doing geocoding or location-based filtering, you can't trust the zip code alone to tell you whether something is in DC, Montgomery County, or Prince George's County. You need to cross-reference with county lines. The reverse is also true. 20743 is Hyattsville, MD, but it sits right next to 20744 which is College Park. They're separate codes with separate delivery routes even though they share a post office complex. I learned this when a logistics company kept routing packages through the wrong facility because they assumed adjacent zip codes shared infrastructure.
Get the Full Details

For mailing purposes, DC has two main types of codes. Standard residential and commercial delivery routes, and PO box-only codes. Some neighborhoods, particularly newer developments in Northeast DC, only have PO box access through a particular zip code. The actual building might be in a different zip. If you're validating addresses for a business, this distinction matters because shipping carriers treat them differently. There's also the matter of military zip codes. APO, FPO, and DPO addresses show up as DC in some systems because of how the military mailing addresses work. They're not actually in the District. This trips up fraud detection algorithms constantly. One practical tip that saved me: when building an address validation pipeline for DC, always run a lookup through the USPS Address Information System before finalizing. Their API costs nothing for basic lookups and will correct misrouted zips instantly. I use it alongside Google's geocoding API because they sometimes disagree on the boundary between DC and the surrounding suburbs. The USPS answer wins for mailing. Google's answer wins for mapping.
If you need to download a complete list, the Census Bureau publishes a zip code tabulation dataset that you can pull from their website. It's updated annually. The USPS also releases a Postal Code Lookup tool that lets you verify individual codes, though it doesn't give you bulk access. For bulk operations, the TIGER/Line shapefiles from the Census are more useful, especially if you need the geographic boundaries attached to each code. The old 20001 used to be just downtown. Now it covers a much wider area including parts of Ivy City and Trinidad. This kind of boundary shift happens every decade or so as the city grows. Don't assume a zip code map you found online from 2019 is still accurate. Check the current USPS publication. Finally, if you're doing anything that involves delivering to multiple DC addresses in sequence, plan your routes around zip code clusters, not geographic proximity. The mail carriers here do it because delivery order within a zip is optimized for their trucks, not for straight-line distance. Same logic applies if you're driving. 20019 and 20009 might be five miles apart geographically but they're on opposite sides of the city's delivery loops. 20011 and 20017 are next door to each other and share a carrier route.