How these county maps are made
Which Census file the boundaries come from, how much they are simplified, and why our maps differ slightly from everyone else’s.
Every county outline on this site comes from one file: cb_2025_us_county_500k, the Census Bureau’s cartographic boundary release at 1:500,000, published on 23 April 2026. It carries 3,144 county-equivalents across the 50 states and the District of Columbia. Everything after the download is a chain of decisions about making those polygons light enough to render fast without making them false. The condensed version sits on the methodology page, and the file-by-file provenance is on the sources page.
Cartographic boundary files, not raw TIGER/Line
TIGER/Line is the Bureau’s full-resolution product, and the right choice for address matching, routing and anything that has to respect the legal boundary exactly. It is the wrong choice for a picture of a state.
The reason is water. County boundaries frequently run out into territorial water, and TIGER polygons follow them there. Draw Virginia’s counties straight from TIGER and the Chesapeake Bay fills in solid, because the counties on either side extend across it and meet in the middle. The Eastern Shore fuses to the mainland. The result is legally accurate and visually worthless.
The cartographic boundary files remove that problem before you touch the data. They are generalised for mapping and pre-clipped to the shoreline, so coastal counties stop where the land stops. Virginia’s 133 county-equivalents, 95 counties plus 38 independent cities, come out of that file with the bay open and the Eastern Shore separate, and no custom water masking is needed.
Why not the pre-built atlas file
A widely used packaged US atlas dataset ships ready-made county TopoJSON, and for a one-off graphic it is a sensible shortcut. It is built from a 2017 edition, and two things have happened since.
Connecticut replaced its eight counties with nine planning regions, effective with the 2022 Census vintage and following a Federal Register notice of 6 June 2022. The regions are groupings of towns and are not coterminous with the old counties, so no county-to-region crosswalk exists; only a town-level one works. A site built on the 2017 file would still draw Fairfield, Hartford, Litchfield, Middlesex, New Haven, New London, Tolland and Windham, and every Connecticut page keyed to those shapes would describe geography that no longer exists. The current file draws nine regions instead, from the Capitol Planning Region at 1,027.35 square miles and 994,115 people down to Northeastern Connecticut at 98,096, and none of them matches a retired county outline.
Alaska moved as well. Valdez-Cordova Census Area was replaced by Chugach and Copper River on 2 January 2019, so a 2017 file is short a polygon and still draws an area the Bureau no longer publishes.
Boundaries change, and a static convenience file freezes whichever year it was cut from. Rebuilding from the current Census release removes that whole class of error. Where the lines came from in the first place is a separate story, told in how county boundaries were drawn.
Simplification is computed per state, in metres
Raw county polygons are far heavier than a web page needs, so they have to be simplified. The usual approach is to pick a percentage of vertices to keep and apply it to the whole country. That is the wrong unit.
The question that matters is how far a point can move before a reader can see that it moved. On screen the answer is about half a pixel: below that the change is invisible, above it shapes start to lie.
Half a pixel is not a fixed distance on the ground; it depends on how much territory a map has to fit into the width available to it. Texas fits 254 counties and the full width of the state into a state page; the District of Columbia fits one entity into a page of much the same size. So each state map gets its own metres-per-pixel figure at render width, and simplification runs with an absolute interval set to half of that. No point in any state moves more than half a pixel of that state’s own map.
| State page | County-equivalents drawn | Simplification interval |
|---|---|---|
| District of Columbia | 1 | 14 metres |
| Rhode Island | 5 | 62 metres |
| Texas | 254 | 773 metres |
The Texas interval is more than fifty times the one used for the District of Columbia. Any single national threshold has to sit somewhere inside that range, and wherever it sits it is wrong at one end or the other.
What a single national percentage does
Run one uniform percentage across the country and it works out to roughly 494 metres of allowed movement everywhere. On Virginia that lands close to half a pixel. On the District of Columbia it is about 24 pixels.
Twenty-four pixels is enough to erase the Potomac frontage entirely. The city’s western edge is the river, and the river is what gives the outline its shape; flatten it and the District of Columbia becomes a slightly dented rectangle. Applied to Texas the same threshold is tighter than that map needs, and the file ends up larger than it has to be. One number cannot serve both.
The spread is not a quirk of those two. Yukon-Koyukuk Census Area in Alaska covers 145,767.49 square miles by itself; Falls Church city in Virginia covers 2.05. A percentage rule treats those as the same problem.
Simplification has to run on shared topology
Counties are not independent shapes. Every internal border belongs to two of them, and the two copies have to stay identical after simplification or a gap opens between them.
Simplify each polygon on its own and the two copies of a shared border drift apart, because each is being generalised in the context of a different surrounding shape. The visible result is slivers: thin gaps along county lines that look like rendering bugs and behave like real geometry in any spatial query. Measured on Ohio’s 88 counties, independent simplification produced 114 gaps totalling 126 square kilometres. So the data is converted to a topological structure first, the shared arcs are simplified once, and the polygons are rebuilt from those arcs. Every border stays welded to its neighbour.
Keep-shapes is not optional
This step is easy to miss until someone reports a hole in a map. Standard simplification will reduce a small polygon until it has no area left, and it does not warn you.
Without mapshaper’s keep-shapes option, which guarantees that every input feature survives with some geometry, 43 counties collapse to empty geometry at these intervals. The casualties are the places you would expect: San Francisco, Staten Island, Nantucket, Kalawao County in Hawaii at 11.99 square miles, and 24 Virginia independent cities. Falls Church city covers 2.05 square miles and Lexington city 2.50, which is nothing next to a 773 metre interval. They are also the entities a reader is most likely to be hunting for, and keeping them costs a handful of vertices each.
The identifiers that hold the join together
Geometry is only useful if the attribute tables can be attached to it, and county identifiers are less stable than they look. FIPS codes are five digits, two for the state and three for the county, zero padded and stored as text so leading zeros survive. They are assigned alphabetically within a state, which means a rename usually forces a new code: Shannon County, South Dakota, 46113, became Oglala Lakota County, 46102, in May 2015. COUNTYNS, the eight-digit GNIS identifier, does not move when a name changes, so it is the safer key for tracking an entity through time. GEOIDFQ is the fully qualified form, “0500000US” prefixed to the GEOID.
Population figures joined to these shapes come from the Population Estimates Program, Vintage 2025, released on 26 March 2026. Its ESTIMATESBASE2020 column is not the published 2020 Census count: it folds in Count Question Resolution corrections and boundary updates, so treating the two as interchangeable publishes a wrong figure.
Check the work
None of this is proprietary. The inputs are public Census Bureau files, the tooling is mapshaper, and the thresholds are arithmetic anyone can redo from a state’s extent and a render width. The processed geometry, the joined population and land area tables, and the identifiers needed to match them against other datasets are all on the downloads page. If you find a boundary that looks wrong, the fastest way to settle it is to pull the file and compare.