In the week after a presidential election, any news site can tell you the vote in every county in America. It reads like an official national record. It is not, because no federal agency counts votes. The Federal Election Commission regulates campaign money. The Election Assistance Commission surveys election administration. Neither is given the returns, and neither publishes them.
What exists instead is fifty-one separate publications by fifty-one separate officers — one for each state and the District of Columbia — each certifying their own state under their own law. Every national county table you have ever seen is somebody’s private assembly of those publications. So this brief asks a citizen’s question rather than a technician’s: where do national election results actually come from — and when two assemblies of the same election sit side by side, do they agree?
The question is answered by doing the assembly. The certified county-level returns of the 2020 and 2024 presidential elections were collected from all fifty-one chief election officers: every state’s, plus the District of Columbia’s. Beside that assembly sits the file much of the public conversation actually rests on, Tony McGovern’s volunteer compilation of county presidential results (https://github.com/tonmcg/US_County_Level_Election_Results_08-24), which several other chapters of this book read too. McGovern’s own description of it is candid: the 2024 figures were copied from Fox News’s results pages and the 2020 figures from Fox, Politico and the New York Times, and the file, in his words, is exhaustive but “not authoritative.”1 Comparing the two, county by county, measures what the private assembly step costs.
Certified returns are the right instrument because they are the official record: an officer attested each one under law, which no compilation can say of itself. What a certified return is, who signs it, and what it can never show is the subject of the returns-source chapter, this cluster’s data biography.
Collecting fifty-one publishers means collecting 102 documents from 51 jurisdictions, across two elections, in 11 distinct file formats.
| Format | Documents |
|---|---|
| 31 | |
| json | 17 |
| csv | 15 |
| xlsx | 12 |
| html | 6 |
| txt | 6 |
| xml | 6 |
| xls | 4 |
| txt/tsv | 2 |
| zip/tsv | 2 |
| pdf (scanned) | 1 |
32 of the 102 are PDFs, and one of those has no text layer at
all — it is a photograph of a document, and the only way
through it is optical character recognition, software that reads the
letters off a picture. Three of the 102 sit on pages that do not say the
returns are certified, so they are recorded as unknown
rather than promoted.
The result is 3,197 reporting units carrying 155,205,623 votes for
president, in pres2024_counties_official.csv and its 2020
companion. Each row holds state_name,
county_fips, county_name,
votes_dem, votes_gop and
total_votes. The county_fips column is the
Census Bureau’s five-digit code for a county, and it is the key on which
this file and the compilation are joined — matched row
to row, so that each county’s two versions can sit side by side. Beside
the returns sits a record of every document used, one row each: the
address it came from, the date it was downloaded, the format it arrived
in, whether the page claimed certification, and a note on every
judgement made while reading it. With fifty-one sources, a citation at
the level of the file would be a claim about nothing.
One cleaning decision matters more than the rest. The target was “county-level returns,” and fifty rows refuse the category:
| Jurisdiction | Rows | Unit |
|---|---|---|
| District of Columbia | 8 | ward |
| Maine | 1 | town or unorganized territory |
| Missouri | 1 | city reporting separately from its county |
| Rhode Island | 40 | town |
Rhode Island publishes by town; its five counties have no government and the state does not report to them. The District of Columbia publishes by ward. Kansas City reports separately from Jackson County, which contains most of it. None of these is a defect in the source. They are what those places publish, and the assembly keeps them as they are — with no county code, because inventing one would be the error rather than the fix.
Before you read on, commit to two numbers. You now have the certified returns from every state, and the same compilation several other chapters of this book read too, among them
mappingandwind-map. Both describe the 2024 presidential election. In how many of the roughly 3,100 counties do you expect them to disagree about the Democratic vote? And about the total number of votes cast? Write both down.
Start with the reassuring half. On the major-party vote the two files are in near-perfect agreement:
| Quantity | Counties disagreeing | Share |
|---|---|---|
| Democratic vote | 42 | 1.3% |
| Republican vote | 47 | 1.5% |
| total votes cast | 1,588 | 50.6% |
42 counties of 3,138 differ on the Democratic vote and 47 on the Republican. Anybody using either file to say who carried a county will say the same thing almost everywhere.
Then the turn. 1,588 counties report a different number of votes cast — 50.6% of them, half the country. The two files agree about the numerator and disagree about the denominator: the top number and the bottom number of every rate built from them. That is the more dangerous kind of disagreement, because turnout, margin and share are all computed against the bottom number, and nothing in either file announces the difference.
Hover a bar for the exact count.
Figure 1. How large the disagreement over votes cast is, in the 1,588 counties where there is one. One bar per size class fits the question, because the question is how the disagreements are distributed — and the answer is that most are a handful of votes and a few are enormous. The median is 21 votes; the gap exceeds a hundred votes in 397 counties and a thousand in 63. Nationally the two totals are 341,884 votes apart.
Three reasons can be named, and they do not add up to all of it.
Dropped third parties. In 107 counties the compilation’s total is exactly the Democratic plus the Republican vote, meaning no other candidate is in the denominator. In 102 of those the certified return does record third-party votes. They are not scattered:
| State | Counties |
|---|---|
| New York | 61 |
| Alaska | 40 |
| Nebraska | 1 |
New York and Alaska between them are nearly all of it — the same two
states, and the same defect, that the returns-source
chapter finds from the other direction. This explains only
6.4% of the disagreeing counties.
A city that is not in its county. The single largest disagreement is Jackson Missouri:
| Source | Total votes |
|---|---|
| certified state return | 193,729 |
| the compilation | 317,702 |
Here is the disagreement, row by row. Missouri’s certified return lists Jackson County with 91,366 Democratic and 99,385 Republican votes, 193,729 in all. It then lists Kansas City on a line of its own — 95,660 Democratic, 26,225 Republican, 124,288 in all — because the city runs its own election board and reports to the state directly, and it spills into three neighbouring counties besides. The compilation has no Kansas City line. Its Jackson County row shows 187,026 Democratic votes, which is the county’s 91,366 plus the city’s 95,660 to the vote, and 317,702 votes in total, 315 fewer than the two certified lines together, so the major-party columns add exactly and the total nearly does. 95,660 Democratic votes therefore move depending on which file you opened. Kansas City certifies separately, so the certified assembly keeps it separate and the compilation folds it in. Neither is wrong. Only one of them matches a census population for the same code, and that is the one you need if you are computing turnout.
Write-ins, over-votes and under-votes. What remains is the long tail of small differences, and it is a question of definition rather than of data quality. Is a spoiled ballot, an over-vote (two marks where one was allowed), an under-vote (no mark at all) or a write-in (a name the voter wrote in by hand) for a non-candidate a vote cast for president? States answer it differently and a compiler must answer it once.
Worse than a differing number is a differing geography, and Connecticut has one:
| Jurisdiction | Certified rows | Compilation rows | Certified unit | Compilation unit |
|---|---|---|---|---|
| Rhode Island | 40 | 5 | Barrington | Bristol County |
| District of Columbia | 8 | 8 | Ward 1 | Ward 1 |
| Connecticut | 8 | 9 | Fairfield County | Capitol Planning Region |
Connecticut appears as 8 counties in one file and 9 planning regions in the other. Connecticut abolished county government decades ago, and in 2022 the Census Bureau, at the state’s request, replaced its counties as the state’s county equivalents — the units that stand in for counties wherever a state has none — with its councils of government, the planning regions.2 These are not two codings of one geography; they are different shapes on the ground. A 2020-to-2024 comparison in Connecticut is comparing different objects unless somebody decided otherwise on purpose, and neither file records such a decision.
Rhode Island shows the same seam more quietly: 40 towns in the certified file, 5 counties in the compilation. The compilation is not wrong to aggregate. It is only silent about having done it.
| Fips | County | State | Certified | Compilation | Difference |
|---|---|---|---|---|---|
| 29095 | Jackson | Missouri | 193,729 | 317,702 | -123,973 |
| 17031 | Cook | Illinois | 2,079,239 | 2,056,800 | 22,439 |
| 36047 | Kings | New York | 847,934 | 835,229 | 12,705 |
| 17043 | DuPage | Illinois | 460,668 | 449,660 | 11,008 |
| 36081 | Queens | New York | 712,191 | 701,910 | 10,281 |
| 41005 | Clackamas | Oregon | 246,240 | 237,953 | 8,287 |
| 53033 | King | Washington | 1,130,502 | 1,122,881 | 7,621 |
| 36061 | New York | New York | 654,372 | 647,703 | 6,669 |
| 23005 | Cumberland | Maine | 192,656 | 199,225 | -6,569 |
| 36059 | Nassau | New York | 712,349 | 706,541 | 5,808 |
| 41051 | Multnomah | Oregon | 414,250 | 408,474 | 5,776 |
| 25017 | Middlesex | Massachusetts | 814,832 | 809,513 | 5,319 |
| 24031 | Montgomery County | Maryland | 519,221 | 513,919 | 5,302 |
| 41017 | Deschutes | Oregon | 127,375 | 122,417 | 4,958 |
| 41039 | Lane | Oregon | 211,285 | 206,547 | 4,738 |
The compilation is careful work by somebody under no obligation to anyone: no correction path, no custodian, no undertaking that it will exist next year. Three chapters of this book read it, and this brief is not an argument against doing so. It is an argument for saying which file you opened. “The 2024 vote in Jackson County” is not a fact. “The certified Missouri return for Jackson County, excluding Kansas City” is one, and it differs from the other true statement by 123,973 votes.
It does not say which file is right, and mostly the question is malformed. Where the two disagree about Kansas City they are answering different questions; where they disagree about a write-in they are applying different definitions. Only the third-party omissions are a defect rather than a choice, and those are 6.4% of the disagreement.
It covers 2024, and 2020 alongside it, and no further back. How much further back this could go is a separate question with an expensive answer. The good long compilations are licensed rather than published, and the public-domain route is the one nobody has assembled, because assembling it is the expensive part.
It does not audit the states against themselves. A certified return is the state’s own claim, and this brief takes it at its word. What a canvass — the checking and totalling of returns that precedes certification — can and cannot establish belongs to returns-source.
And the reading of the documents is ours. 32 PDFs
were read by software, and a figure recovered from a PDF column is a
claim about layout as much as about votes. The state-level crosscheck
against an independent wire-service tally, the Associated Press count,
is in derived/ for exactly that reason: it is the check
that would catch a reading that quietly went wrong.
largest_gaps.csv holds the counties where the certified
total and the compilation’s total differ most, with the gap in
dt. Take the biggest gap after Jackson County and work out
which of the two sources you would trust, and why.third_party_zero.csv counts, in counties,
how many of each state’s counties report no third-party votes at all.
Some states let one candidate appear on several party lines. Is that
zero a fact about voters, or a choice about formatting?not_counties.csv lists, with its unit
column, the jurisdictions that do not report by county at all. What
happens to a national county map if you include them, and what happens
if you drop them?formats.csv counts in documents how many
publications arrive in each format. Estimate how many hours it would
take you to collect all fifty states by hand.largest_gaps.csv and find the county’s own election office
page beneath the state’s. Does a third publication of the same number
agree with either of the first two?Data
provenance.csv; they are
too many to list here and that is the brief’s point.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.
crosscheck_ap_2024.csv,
crosscheck_ap_counties_2024.csv,
formats.csv, largest_gaps.csv,
not_counties.csv,
pres2020_counties_official.csv,
pres2024_counties_official.csv,
third_party_zero.csv,
unit_shapes.csv
Two more files here are not data about the subject at all – they are
how this chapter checked its own work: facts.csv, the individual
numbers the text above quotes, and checks.csv, the
arithmetic verified before anything was drawn.
I want to rebuild a public dataset from its original sources, without any starting files. Fair warning: this one is a project, not an afternoon. Please do the following and show your work. THE SOURCE. There is no national file of official county-level presidential returns, because no federal agency counts votes. The returns exist only as fifty-one separate publications -- each state's own certified canvass, plus the District of Columbia -- and for the 2020 and 2024 elections together that means 102 documents in 11 different formats: spreadsheets, CSVs, JSON feeds, XML, HTML pages, and PDFs. Each state's elections site publishes its own, under its own naming, at its own address. One row of the finished product is one county: its name, its five-digit code, the Democratic and Republican votes, and all votes cast for president. HOW TO DOWNLOAD IT. Send a browser user-agent header; several state sites refuse plain scripted requests without one. One state's site presents a security certificate that does not validate, and the download has to proceed anyway, deliberately. Thirty-two of the documents are PDFs: poppler's pdftotext, keeping the layout, turns most of them into parseable text. One -- Arizona's signed 2024 canvass -- is a scanned image with no text layer at all, so its numbers must come from optical character recognition or by hand. Expect each state to be its own small puzzle. WHAT TO BUILD. 1. One national table per election: every county with its certified Democratic, Republican, and total presidential vote, stacked from the fifty-one publications. 2. A comparison against the volunteer county compilation on GitHub (tonmcg/US_County_Level_Election_Results_08-24): where the two agree, where they differ, and by how much. CHECK YOUR WORK. The copies this book used were downloaded in August 2026. If your rebuild matches them, you should find: - 102 documents from 51 jurisdictions, in 11 distinct formats - the certified 2024 assembly has 3,197 rows and accounts for 155,205,623 votes for president - 3,138 counties can be matched to the compilation; the two disagree on total votes cast in 1,588 of them, the largest single gap is 123,973 votes, and nationally they sit 341,884 votes apart States rarely touch a certified canvass after posting it; if a number has moved, a state issued a correction -- that is drift in the source, not an error in your work.
The compilation’s README, which names the news site behind each election year: https://github.com/tonmcg/US_County_Level_Election_Results_08-24.↩︎
Census Bureau, “Change to County-Equivalents in the State of Connecticut,” Federal Register, 6 June 2022: https://www.federalregister.gov/documents/2022/06/06/2022-12063/change-to-county-equivalents-in-the-state-of-connecticut.↩︎