Census Geography and Why Data Will Not Join

Why so much data will not join

Democracy’s Data

Last updated September 15, 2026 at 4:42p EDT

131530211233013 is fifteen digits long. It names a piece of ground in middle Georgia about the size of a few city blocks. It also names the block group, the census tract, the county and the state that contain that ground, with no lookup table anywhere. Each of those is the front of the same string.

Digits What they name Which is Digits so far
13 state Georgia 2
153 county Houston County, Georgia 5
021123 tract Census Tract 211.23 11
3 block group Block Group 3 12
013 block Block 013 15

The string is called a GEOID, and the Census Bureau builds one for every unit of geography it publishes. It is built by concatenation: each prefix names the parent. The first five digits are the county. That is a claim about a string, and this chapter tests it.

Almost every claim anybody makes about an American place depends on this machinery. Turnout in a county. Segregation in a neighborhood. A ballot rejection rate in a jurisdiction. Each requires knowing what the place is and where its edges are. Each also requires, crucially, that two different datasets agree about it.

For some places they do. For others there is no identifier that could make them agree, and this chapter is about which is which. The short version: the country is covered by two systems of geography. One is a spine of boxes that nest exactly, each sitting wholly inside the next: the census block, the smallest unit the Bureau publishes and often a single city block bounded by streets; the block group, a cluster of neighboring blocks; the census tract, a group of block groups holding a few thousand people and meant to stand in for a neighborhood; the county; the state. The other is everything drawn by somebody else for some other job: city limits, school districts, ZIP codes, districts, voting precincts (the areas that share a polling place). Only the first system joins cleanly, meaning that two tables about the same ground can be matched row to row, and the second is the one people actually ask about.

The stakes are not clerical. Where the lines are drawn decides what the numbers say. That is obvious for districts, where it has a name and a body of law: gerrymandering. It is just as true, and far less noticed, of the units used to measure anything. Federal money, representation, and civil-rights enforcement are all allocated using these units. Getting the geography wrong is not a technicality; it is the mechanism.

Where the data comes from, and what it is for

Everything counted or drawn in this chapter is the Census Bureau’s own definition of American places. The counts, identifiers and areas come from the Bureau’s Gazetteer Files for 2024, a gazetteer being a directory of places: one plain text file per geography type, one line per unit, giving its name, its identifier and its land area, downloadable at the address in the sources below. The boundaries come from the Bureau’s TIGER/Line shapefiles, the digital outlines every census map is drawn from, in their 2020 edition. Two further Bureau tables record how units relate: the block-assignment file, which says which municipality each block sits in, and the relationship file for ZIP Code Tabulation Areas (ZCTAs), the Bureau’s drawn approximations of ZIP codes, which says how each of them divides among tracts.

There is something odd about calling this a dataset at all. A gazetteer does not measure anything. It has no estimate in it, no margin of error saying how far off a number could be, no respondent, and nobody counting. It is a declaration: these 85,396 strings are the census tracts, and a tract is whatever the Bureau’s file says a tract is. You cannot ask whether it is accurate, because there is nothing outside it to be accurate about. What you can ask is whether the declaration agrees with itself, and whether the identifiers do what their shape implies.

Who is in it, and how they got there. Units, not people: seven geography types are read here, 204,008 units in all, and each is in the file because the Bureau declared or recorded it. They are counties, tracts, county subdivisions (townships and the like), places, two kinds of school district, and ZCTAs. The spine’s units are the Bureau’s own drawing. The crosscutting ones are borrowed: a place is a municipality some state incorporated, a ZCTA approximates ZIP codes the Postal Service runs, and neither was drawn with the census in mind. Voting precincts are absent entirely: states draw them, and the Bureau tabulates them only once a decade, only for states that volunteer them under its Redistricting Data Program.

Who it was made for. The Bureau itself. Every table the Bureau publishes must say what area each row refers to, and these are the areas. That is a bookkeeping obligation, not a mapping one, which is why the file records identifiers, names and areas and says nothing whatever about why any boundary is where it is.

What it costs to get. Nothing. One text file per geography type, one shapefile per geography type, no key, no account. Much American public data asks something of you first, a registration or a key; the layer that defines what a place is turns out to be the one thing that is genuinely, frictionlessly open.

What has already been done to it. Little, and two details of that little matter for anyone who opens these files. Every identifier is held as text from beginning to end: 01001 is a county in Alabama, 1001 is nothing, and there is no error message between the two. And every line of every gazetteer file is padded on the right with spaces, so names and values are trimmed before anything is compared. The next section shows exactly where that bites. Nothing was imputed, meaning no missing value was filled in by guessing, and no row was dropped.

One mismatch of dates runs through everything below, and it should be visible. The counts are from the 2024 gazetteer; the shapes are from the 2020 TIGER release. For the spine that is harmless, because tracts and block groups are redrawn once a decade and did not move between those dates. For city limits and ZIP approximations, which are revised every year, it is not harmless at all.

That is the general lesson about vintage, the Bureau’s word for the edition of a file. A GEOID names a boundary as of a particular release. Tracts are redrawn every ten years, so a 2024 tract file will not join cleanly to 2010 tract data even where the digits match.

Seven files, and the one missing a column

The Bureau publishes one gazetteer file per geography type, as plain text with the columns separated by tabs, one line per unit, revised annually. Here are three of the seven, opened at the top: each table below is the file’s own header line, the first line, which names the columns, turned into rows, with two of its data lines beside it.

Counties.

Column Row 1 Row 2
USPS AL KY
GEOID 01001 21009
ANSICODE 00161526 00516851
NAME Autauga County Barren County
ALAND 1539631459 1262269998
AWATER 25677536 32723250
ALAND_SQMI 594.455 487.365
AWATER_SQMI 9.914 12.635
INTPTLAT 32.532237 36.962805
INTPTLONG -86.64644 -85.932108

Census tracts.

Column Row 1 Row 2
USPS AL AL
GEOID 01001020100 01097004100
ALAND 9825303 814775
AWATER 28435 0
ALAND_SQMI 3.794 0.315
AWATER_SQMI 0.011 0.
INTPTLAT 32.4819731 30.731593
INTPTLONG -86.4915648 -88.0933537

ZCTAs — ZIP code approximations.

Column Row 1 Row 2
GEOID 00601 03885
ALAND 166836392 39181774
AWATER 798613 875089
ALAND_SQMI 64.416 15.128
AWATER_SQMI 0.308 0.338
INTPTLAT 18.180555 43.014993
INTPTLONG -66.749961 -70.902602

Read the three header lines against each other and the chapter’s argument is already sitting there in plain text. Counties carry USPS, a state. Tracts carry USPS. ZCTAs do not. There is no state column in that file and no state in that identifier. 00601, its first row, is in Puerto Rico, and you can only discover that by already knowing it.

The padding matters here too. The ZCTA file’s lines run to 200 characters, padded on the right, and the padding lands on the last field in all 33,791 rows. The header line is padded the same way, so read the file without trimming and the last column is not named INTPTLONG — it is INTPTLONG followed by a hundred spaces. Every attempt to ask for it by name fails, while every column count still comes out right.

Here is the row the chapter actually reads, for those same three geographies:

Geography How many ID digits The ID encodes Nests into
county 3,222 5 state(2) + county(3) state
census tract 85,396 11 state(2) + county(3) + tract(6) county
ZCTA (ZIP approximation) 33,791 5 five digits, nothing else NOTHING

Two of those columns are not in the download at all. the ID encodes and nests into appear in no gazetteer file; they are typed in by hand, by a person reading the Bureau’s documentation. They are the chapter’s argument, sitting in a table and wearing the costume of data — which is exactly why the next section runs the nesting as a test instead of quoting it.

And the full set, one row per geography type:

Geography How many Digits in the ID Median sq mi
census tract 85,396 11 1.74
county subdivision 36,421 10 35.59
ZCTA (ZIP approximation) 33,791 5 34.89
place 32,333 7 1.73
unified school district 10,893 7 120.15
county 3,222 5 604.48
elementary school district 1,952 7 33.47

85,396 census tracts, 3,222 counties, 33,791 ZCTAs. Median land area runs from 1.74 square miles for a tract to 604.48 for a county, a factor of roughly 347. A tract is the Bureau’s stand-in for a neighborhood; a county is the unit most public data is published on; the gap between them is most of what “small-area data” means.

Do not take the nesting on faith

Take every tract in the country, slice off the first five digits, and check whether that county exists.

Tested Holds Units passing Units tested
tract GEOID[:5] is a real county True 85396 85396
county subdivision GEOID[:5] is a real county True 36421 36421

All 85,396 tracts match a real county by prefix. Zero orphans, no tract whose first five digits name a county that does not exist. Take the tract from the opening string, 13153021123: its first five digits are 13153, and the county file has a row for Houston County, Georgia. The same holds for all 36,421 county subdivisions. That is the spine: block → block group → tract → county → state. Each level nests inside the next, exactly, and the nesting is written into the identifier. Because it nests, you can add up along it with no assumptions at all — a county’s population is the sum of its tracts, by construction.

Now the same test on the other two geography types.

Tested Holds Units passing Units tested
ZCTA file records a state False NA NA
place file records a county False NA NA

The units-passing column is empty, and that is not a rendering problem. Neither test could be run at all. Not failed: unrunnable, because the files contain no such column. The place file records no county. The ZCTA file records no state.

A test that cannot be executed is a stronger result than a test that fails. It means the Bureau declined to record the relationship — and it declined because the relationship does not exist. Some ZIP codes cross state lines; some cities cross county lines; there is no single parent to write down.

What each identifier encodes says the same thing:

Geography The ID is built from Nests into
census tract state(2) + county(3) + tract(6) county
county subdivision state(2) + county(3) + subdivision(5) county
county state(2) + county(3) state
ZCTA (ZIP approximation) five digits, nothing else NOTHING
place state(2) + place(5) state only
unified school district state(2) + district(5) state only
elementary school district state(2) + district(5) state only

Four of the seven do not nest into the spine. Places, school districts of both kinds, and ZCTAs are drawn for other jobs: municipal incorporation, school administration, mail routing. None of them respects county lines. A place identifier is state(2) + place(5), with no county part, because a place can span several counties. A ZCTA identifier is five digits encoding nothing at all.

One county, three overlays

Everything above is a claim about strings. Here is the same claim on the ground, worked through one county: Houston County, Georgia, 163,633 people over 379.9 square miles, small enough that all 3,269 of its census blocks fit on a page.

Lay three geographies over the county’s 38 census tracts. One is on the spine and two are not, and you can tell which is which without being told. Call a tract cut when a boundary of the overlay runs through it — part of the tract inside some unit of the other geography, part outside.

Figure 1. One geography on the spine, two crossing it. The same 38 census tracts of Houston County, Georgia appear in all three panels, outlined in grey. Over them, in turn, are the boundaries of block groups, city limits and ZCTAs, and a tract is shaded when a boundary runs through it. Three copies of one map, because the claim is about lines crossing lines, and only a map can show a crossing. A table could report the counts, but not that the same ground sits under all three.

Zero, 32, and 22. The 108 block groups cut not one tract, because a block group is defined as a piece of a tract. The 4 places, three incorporated cities and an Air Force base, cut 32 of the 38 tracts, or 84% of them. The 12 ZCTAs cut 22.

Look closer at the middle panel, because it is a city drawn by annexation. 79,743 people live inside the Warner Robins city limits, and 54,067 people in the county live inside no city at all. The line between them wanders through 30 tracts holding people on both sides of it. Warner Robins itself does not stay in the county: of its 98.7 square kilometres, 91.5 are in Houston County and the rest are in the next county over. That is the concrete reason a place identifier has no county in it. There is no county to put there.

The right panel is worse, and it is the one everybody uses. A ZIP code is not a place; it is a set of mail delivery routes, and the Bureau approximates it with a ZCTA precisely because the original has no boundaries to borrow. 5 of this county’s 12 ZCTAs are not in one county at all — one is spread over 4. A survey asks for your ZIP code because that is the thing people know about themselves, and it is the hardest answer to join to anything else. The ZIP code brief takes that story apart in full.

Now suppose you have a statistic for the city and you need it for a tract — or the reverse, which is far more common, because the demographics you want are published by tract. There is no join. There is only an assumption about where inside those 32 cut tracts the people are. Moving data between crossing geographies requires a crosswalk, a table that translates one set of areas into another, and every crosswalk is built on such an assumption.

This is why the same obstacle keeps surfacing across this book, wearing different clothes:

Where it bit The mismatch
Precinct returns Precincts do not nest into census blocks
Redlining 1930s HOLC polygons do not nest into 2020 tracts
Election administration “Jurisdiction” is a township in WI, a county in TX
Residual votes Chicago runs elections separately from Cook County

Every one of those is this fact. Four investigations, four apparently unrelated obstacles, one cause: two systems of geography, and only one of them nests.

What this data cannot tell you

It cannot tell you why any boundary is where it is. The file records that a line exists, never the annexation, the school-board decision or the delivery route behind it.

It cannot check the assumption a crosswalk makes. Land area is not population: when you split a ZCTA’s people among tracts by shared area, you are guessing where inside the ZCTA the people live, and nothing in these files can score that guess.

It cannot tell you which unit is right for your question. Statistics computed over area-based units depend on the units chosen — on their size, and on how they are drawn at a given size. Openshaw (1984) named this the modifiable areal unit problem and showed correlations ranging across nearly the whole possible interval as the same map was recut.1 There is no correct zoning, because the units are choices rather than features of the world. The areal-units brief runs that demonstration on the blocks of another Georgia county, Fulton.

It cannot carry a group-level pattern down to people. Robinson (1950) showed that a relationship holding across areas need not hold across the people in them, and can run backwards.2 In his 1930 example, states with more immigrants had higher literacy, while the immigrants themselves were less likely to be literate. Aggregate data will support a confident and exactly wrong conclusion, and nothing internal to the data announces it.

And it is one vintage, mapped in one county. The national counts are national, but 32 of 38 tracts cut is a fact about Houston County, not a national rate. Tracts are redrawn every decade, so none of the tests here says anything about joining across censuses. And precincts, the unit election data arrives on, are in no gazetteer at all — which is itself the reason precinct data is the hardest American election data to source.

What you should have learned

Where this data appears in this book

This chapter anchors the census-geography cluster; two briefs take its themes further, and both read the same kind of file.

Sources

Data

All open downloads: no key, no account.

The data itself

Every figure above is drawn from these tables. They are plain CSV, they open in a spreadsheet, and they are yours to take further.

chain.csv, levels.csv, map_ids.csv, map_units.csv, nesting.csv, splits.csv, tract_split.csv, us_divisions.csv, us_ids.csv, us_map.csv

One more file is not data about the subject – it is how this chapter checked its own numbers: facts.csv, the individual numbers the text above quotes.

Your turn

None of these is answered above, and every one can be answered from the tables you just opened.

Law

Academic literature

Rebuild this data yourself, with an AI assistant
I want to rebuild a public dataset from its original sources, without
any starting files. Please do the following and show your work.

THE FIRST SOURCE. U.S. Census Bureau Gazetteer Files, 2024 -- one
national file per geography type, each a small zip holding one
tab-delimited table, served from
https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2024_Gazetteer/
No account or key is needed. Download seven of them:
2024_Gaz_counties_national.zip, 2024_Gaz_tracts_national.zip,
2024_Gaz_place_national.zip, 2024_Gaz_zcta_national.zip,
2024_Gaz_cousubs_national.zip, 2024_Gaz_elsd_national.zip and
2024_Gaz_unsd_national.zip. One row is one geographic unit: its
identifier, its name, its land area. The text encoding is latin-1.

THE SECOND SOURCE, for one county on the ground. TIGER/Line 2020
shapefiles for Georgia -- tracts, block groups and blocks:
https://www2.census.gov/geo/tiger/TIGER2020/TRACT/tl_2020_13_tract.zip
https://www2.census.gov/geo/tiger/TIGER2020/BG/tl_2020_13_bg.zip
https://www2.census.gov/geo/tiger/TIGER2020/TABBLOCK20/tl_2020_13_tabblock20.zip
Also keyless. County 13153 is Houston County, Georgia, and every
GEOID beginning 13153 belongs to it, so the counting needs only the
attribute tables, no geometry.

WHAT TO BUILD.
1. One row per geography type: how many exist nationwide, how long
   the identifier is, what its digits encode, and what it nests
   into. The thing to notice: a tract ID is state + county + tract,
   so tracts nest by prefix alone; a ZCTA ID is five digits and
   nothing else, and the ZCTA file has no state column -- it cannot,
   because some ZCTAs are in two states.
2. The nesting test, actually run: check that every tract's first
   five digits name a county that exists.
3. Houston County, Georgia: count its blocks, its block groups and
   its tracts out of the TIGER attribute tables.

CHECK YOUR WORK. The copies this book used were downloaded in August
2026. If your rebuild matches them, you should find:
- 3,222 counties, 85,396 tracts and 33,791 ZCTAs in the gazetteer
- all 85,396 tracts match a county by prefix; zero orphans
- Houston County: 3,269 blocks, 108 block groups, 38 tracts
The gazetteer is reissued every year under a new vintage directory,
so small drifts in the counts are boundary updates, not errors. The
2020 TIGER files are frozen.

  1. Stan Openshaw, The Modifiable Areal Unit Problem, Concepts and Techniques in Modern Geography 38 (Norwich: Geo Books, 1984), https://www.uio.no/studier/emner/sv/iss/SGO9010/openshaw1983.pdf.↩︎

  2. W. S. Robinson, “Ecological Correlations and the Behavior of Individuals,” American Sociological Review 15, no. 3 (1950): 351–357, https://doi.org/10.2307/2087176.↩︎