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.
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.
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.
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.
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.
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.
01001 as a
number and the county disappears silently — and every GEOID names a
vintage, so matching digits do not guarantee matching ground across
releases.This chapter anchors the census-geography cluster; two briefs take its themes further, and both read the same kind of file.
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.
levels.csv lists each geography with its
id_length and what the identifier id_encodes.
Take a block identifier from the geoid column of
map_ids.csv and read it from the outside in. Name every
level it belongs to.tract_split.csv flags each tract with
split_bg, split_place and
split_zcta. Count each kind. Which boundary is the one that
will break your join?splits.csv gives each overlay a role — on
the spine or crosscutting — beside its tracts_split count.
Work out what that means for anyone trying to put ZIP-code data on a
tract map.levels.csv has median_sq_mi for each
level. Compare a tract to a county. If you only had county data, what
kind of question could you no longer ask?Law
Academic literature
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.
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.↩︎
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.↩︎