Skip to content

Methodology

Where our numbers are wrong

Every North Carolina 2024 down-ballot result on this site is checked against the state's own certified canvass. This page publishes what that check finds — including the races where we don't match. Presidential county returns come from the MIT Election Data and Science Lab and are not independently reconciled; that check does not exist yet, and saying so is the point of this page.

Contests checked

719

Exact, vote for vote

79.0%

568 of 719 match the certified canvass to the individual vote.

Vote surplus

0.027%

13,403 votes more than the certified canvass, across 48,753,425 counted.

Source of truth

NCSBE

The state's certified precinct canvass.

The four states we published wrong

For as long as this site has been live, the national map showed Texas at R+6.8 on 22.8 million votes. Texas cast 11.4 million votes in 2024 and voted R+13.7. The same error doubled Wisconsin, South Carolina and West Virginia — West Virginia was published at R+20.9 against a true R+41.9.

The cause: our source files a pseudo-candidate literally named TOTAL VOTES CAST with an empty party field. Our parser treated an empty party as “other”, so in the 427 county-cycles carrying that row we added each county's own total to itself. A separate 796 rows record undervotes, overvotes and spoiled ballots — ballots with no presidential selection, the opposite of a vote — and those were being counted as third-party support in 151 more cycles.

Both are fixed. Every state now reconciles against the certified statewide result. The uncomfortable part is how long it stood: the doubled figure was on the front page, and Texas at R+6.8 is checkable by anyone who followed the election. It was found while adding per-candidate vote counts to county pages — which is to say, by finally publishing the underlying numbers rather than only the margin derived from them.

The check that now runs every build

County-years checked

21,221

Reconcile

21,219

99.991%

Unexplained

2

Caught by it, pre-fix

429

Every county-year is now compared against the source file's own declared ballot total — a number we never derive. Two conventions are both legitimate and both present: some states count undervotes in that total and some do not, so a county passes if it matches either reading. Anything else is an anomaly and gets named.

It runs as part of the data build and exits non-zero on failure, so the four doubled states could not be published again without the build stopping. Re-running it against the old aggregation flags 429 county-years — the bug it was written for.

What it does not do: the control is the same publisher's own column, so it catches our errors and not theirs. An independent statewide cross-check would catch more.

The 2 we cannot explain

  • FEDERAL PRECINCT, RI 2016 — declared 3,986, candidates sum to 7,330 (-3,344)
  • FEDERAL PRECINCT, RI 2012 — declared 3,054, candidates sum to 4,305 (-1,251)

The race we got wrong

North Carolina's 2024 Supreme Court race between Allison Riggs and Jefferson Griffin was decided by 734 votes in the certified canvass. Summing the precinct file we build from gives 66. The precinct breakdown is missing 910 ballots that the state canvass includes.

CandidateOur totalCertifiedGap
ALLISON RIGGS2,769,6232,770,412+789
JEFFERSON G GRIFFIN2,769,5572,769,678+121

This is why the race page carries a warning instead of a result. A 66-vote margin and a 734-vote margin are different facts, and only one of them is the law.

See the race page →

Every discrepancy

All 151 contests where our total differs from the certified canvass, largest gap first — the whole list, not a selection. “Several races merged” means the source file gave no way to separate distinct contests, so the comparison isn't like-for-like — those are excluded from the headline figure above.

ContestOursCertifiedDifferenceStatus
North CarolinaCourt of Appeals16,523,5085,507,502-11,016,006Several races merged in source
Wilkes CountyBoard of Commissioners100,79234,842-65,950Several races merged in source
Transylvania CountyBoard of Commissioners77,53820,311-57,227Several races merged in source
Pleasant Garden townAbc Store Election2,85249,901+47,049Structural mismatch
Currituck CountyBoard of Education41,42114,077-27,344Several races merged in source
Stokes CountyAbc Store Election26,53449,901+23,367Structural mismatch
Alamance-burlington SchoolsBoard of Education260,182250,237-9,945Above certified
Pasquotank CountyBoard of Commissioners29,29219,967-9,325Above certified
Hendersonville cityCity Council19,94312,866-7,077Several races merged in source
Gates CountyBoard of Commissioners11,3895,698-5,691Several races merged in source
River Bend townCity Council4,8091,749-3,060Several races merged in source
Hickory Public SchoolsBoard of Education17,34915,253-2,096Above certified
Hickory Public SchoolsBoard of Education13,01211,494-1,518Above certified
North CarolinaDistrict Court Judge192,432193,729+1,297Short of certified
Forsyth CountyBoard of Commissioners370,796372,052+1,256Short of certified
Forsyth CountyRegister of Deeds132,857133,908+1,051Short of certified
North CarolinaDistrict Court Judge131,531132,573+1,042Short of certified
Forsyth CountySoil and Water Conservation District Supervisor148,047149,064+1,017Short of certified
North CarolinaDistrict Court Judge129,585130,600+1,015Short of certified
North CarolinaDistrict Court Judge129,266130,279+1,013Short of certified
North CarolinaDistrict Court Judge129,014130,027+1,013Short of certified
North CarolinaDistrict Court Judge128,971129,976+1,005Short of certified
North CarolinaSupreme Court5,539,1805,540,090+910Within 0.1%
Tryon townBoard of Commissioners2,2331,432-801Several races merged in source
North CarolinaDistrict Court Judge113,575114,297+722Short of certified
Columbus CountySoil and Water Conservation District Supervisor20,42219,910-512Above certified
North CarolinaDistrict Court Judge106,896106,416-480Above certified
Columbus CountyRegister of Deeds19,72219,248-474Above certified
North CarolinaDistrict Court Judge103,204102,733-471Above certified
North CarolinaDistrict Court Judge103,249102,779-470Above certified
Craven CountyRegister of Deeds53,23353,701+468Short of certified
North CarolinaDistrict Court Judge102,889102,423-466Above certified
Columbus CountyBoard of Education17,91717,489-428Above certified
Columbus CountyBoard of Education17,28216,871-411Above certified
North CarolinaDistrict Court Judge78,11778,449+332Short of certified
North CarolinaDistrict Court Judge77,53777,869+332Short of certified
North CarolinaDistrict Court Judge77,04277,372+330Short of certified
North CarolinaDistrict Court Judge76,35776,682+325Short of certified
North CarolinaDistrict Court Judge76,50876,831+323Short of certified
North CarolinaDistrict Court Judge75,81876,135+317Short of certified
Hyde CountySanitary District Trustee1,142899-243Above certified
Havelock cityCommissioner11,43411,538+104Short of certified
Columbus CountyBoard of Commissioners3,5193,423-96Above certified
Columbus CountyBoard of Commissioners3,3923,299-93Above certified
Craven CountyBoard of Education9,2049,287+83Short of certified
Columbus CountyBoard of Commissioners3,3083,231-77Above certified
Columbus CountyBoard of Commissioners2,9702,897-73Above certified
Winston-Salem cityCouncil17,59617,663+67Short of certified
Craven CountyBoard of Education5,6605,718+58Short of certified
Winston-Salem cityCouncil20,00020,051+51Short of certified
Mecklenburg CountyBoard of Commissioners1,233,3641,233,316-48Within 0.1%
Craven CountyBoard of Education6,2906,334+44Short of certified
Whiteville cityBoard of Education1,8981,854-44Above certified
Hertford CountyBoard of Education15,10015,138+38Short of certified
Trent Woods townCommissioner6,6036,639+36Short of certified
New Hanover CountyBoard of Education365,595365,564-31Within 0.1%
Whiteville cityBoard of Education1,6711,640-31Above certified
Montgomery CountyRegister of Deeds9,0559,077+22Short of certified
Moore CountyBoard of Education53,80353,782-21Within 0.1%
North CarolinaDistrict Court Judge57,39157,371-20Within 0.1%
Moore CountyBoard of Commissioners42,95142,931-20Within 0.1%
Mecklenburg CountySoil and Water Conservation District Supervisor463,719463,700-19Within 0.1%
North CarolinaDistrict Attorney57,24057,221-19Within 0.1%
North CarolinaDistrict Court Judge56,21156,192-19Within 0.1%
Moore CountyBoard of Education53,39953,380-19Within 0.1%
Moore CountyBoard of Education52,48952,470-19Within 0.1%
Moore CountyBoard of Commissioners43,85743,838-19Within 0.1%
North CarolinaDistrict Court Judge37,94637,965+19Within 0.1%
North CarolinaDistrict Court Judge36,99137,010+19Within 0.1%
North CarolinaDistrict Court Judge36,60636,625+19Within 0.1%
Hertford CountyBoard of Commissioners6,8626,881+19Short of certified
Hertford CountyBoard of Commissioners6,6196,638+19Short of certified
North CarolinaDistrict Court Judge454,060454,042-18Within 0.1%
North CarolinaDistrict Court Judge453,945453,927-18Within 0.1%
North CarolinaDistrict Court Judge450,600450,582-18Within 0.1%
North CarolinaDistrict Court Judge449,687449,669-18Within 0.1%
Mecklenburg CountyRegister of Deeds448,863448,845-18Within 0.1%
Moore CountyBoard of Education52,83752,819-18Within 0.1%
North CarolinaDistrict Court Judge36,98337,001+18Within 0.1%
Hertford CountyBoard of Commissioners7,0507,068+18Short of certified
North CarolinaDistrict Court Judge454,029454,012-17Within 0.1%
North CarolinaDistrict Court Judge453,795453,778-17Within 0.1%
North CarolinaDistrict Court Judge452,264452,247-17Within 0.1%
North CarolinaDistrict Court Judge452,112452,095-17Within 0.1%
North CarolinaDistrict Court Judge452,068452,051-17Within 0.1%
North CarolinaDistrict Court Judge451,612451,595-17Within 0.1%
North CarolinaDistrict Court Judge450,082450,065-17Within 0.1%
North CarolinaDistrict Court Judge449,620449,603-17Within 0.1%
North CarolinaDistrict Court Judge57,08657,069-17Within 0.1%
Hertford CountyRegister of Deeds5,2075,224+17Short of certified
Columbus CountySanitary District Trustee592579-13Above certified
Montgomery CountyBoard of Commissioners3,0333,044+11Short of certified
Cumberland CountyBoard of Commissioners230,012230,021+9Within 0.1%
Mitchell CountyBoard of Commissioners21,43021,421-9Within 0.1%
Cove City townCity Council734743+9Short of certified
Mecklenburg CountyBoard of Commissioners72,19972,191-8Within 0.1%
Montgomery CountyBoard of Commissioners4,6924,700+8Short of certified
River Bend townMayor1,8071,815+8Short of certified
Trinity cityCity Council3,8053,798-7Above certified
New Hanover CountyBoard of Commissioners364,955364,949-6Within 0.1%
Mecklenburg CountyBoard of Commissioners107,658107,652-6Within 0.1%
Montgomery CountyBoard of Commissioners3,6573,663+6Short of certified
Dover townBoard of Commissioners827832+5Short of certified
Cabarrus CountyBoard of Commissioners197,068197,071+3Within 0.1%
North CarolinaDistrict Court Judge113,122113,119-3Within 0.1%
North CarolinaDistrict Court Judge65,94565,942-3Within 0.1%
North CarolinaDistrict Court Judge64,73364,730-3Within 0.1%
Rowan-salisbury SchoolsBoard of Education56,86556,868+3Within 0.1%
North CarolinaDistrict Court Judge53,37453,371-3Within 0.1%
North CarolinaDistrict Court Judge41,52841,525-3Within 0.1%
Granville CountyRegister of Deeds21,61521,612-3Within 0.1%
Mitchell CountyBoard of Education10,64810,645-3Within 0.1%
Mecklenburg CountyBoard of Commissioners107,002107,000-2Within 0.1%
Mecklenburg CountyBoard of Commissioners99,13999,137-2Within 0.1%
North CarolinaDistrict Court Judge93,93593,933-2Within 0.1%
North CarolinaDistrict Court Judge92,78392,781-2Within 0.1%
North CarolinaDistrict Court Judge91,84091,838-2Within 0.1%
North CarolinaDistrict Court Judge91,53391,531-2Within 0.1%
North CarolinaDistrict Court Judge91,15491,152-2Within 0.1%
North CarolinaDistrict Court Judge91,14291,140-2Within 0.1%
North CarolinaDistrict Court Judge90,92590,923-2Within 0.1%
North CarolinaDistrict Court Judge90,84090,838-2Within 0.1%
North CarolinaDistrict Court Judge82,62482,622-2Within 0.1%
North CarolinaDistrict Court Judge82,03982,037-2Within 0.1%
North CarolinaDistrict Court Judge80,89080,888-2Within 0.1%
North CarolinaDistrict Court Judge80,88180,879-2Within 0.1%
Mecklenburg CountyBoard of Commissioners71,74971,747-2Within 0.1%
North CarolinaDistrict Court Judge66,38266,380-2Within 0.1%
North CarolinaDistrict Court Judge49,61149,609-2Within 0.1%
Edgecombe CountyRegister of Deeds18,68618,684-2Within 0.1%
Duplin CountyRegister of Deeds14,19414,192-2Within 0.1%
Mitchell CountyRegister of Deeds7,3167,314-2Within 0.1%
Troy townBoard of Commissioners1,3901,392+2Short of certified
Mecklenburg CountyBoard of Commissioners85,20085,199-1Within 0.1%
North CarolinaDistrict Court Judge69,10369,102-1Within 0.1%
North CarolinaDistrict Court Judge66,74566,744-1Within 0.1%
Pitt CountyRegister of Deeds59,49959,498-1Within 0.1%
North CarolinaDistrict Court Judge58,68758,686-1Within 0.1%
North CarolinaDistrict Court Judge58,06458,063-1Within 0.1%
North CarolinaDistrict Court Judge57,70957,708-1Within 0.1%
North CarolinaDistrict Court Judge48,68248,681-1Within 0.1%
Pitt CountyBoard of Commissioners31,27931,280+1Within 0.1%
Yancey CountyBoard of Education30,56430,563-1Within 0.1%
Yancey CountyBoard of Commissioners29,69629,695-1Within 0.1%
Bladen CountyBoard of Commissioners16,22116,222+1Within 0.1%
Yancey CountyRegister of Deeds7,8357,834-1Within 0.1%
Wilson CountyBoard of Education4,6554,656+1Within 0.1%
Duplin CountyBoard of Education3,0613,060-1Within 0.1%
Duplin CountyBoard of Commissioners3,0173,016-1Within 0.1%
Vanceboro townCity Council1,2661,267+1Within 0.1%
Dover townMayor217218+1Short of certified

Method

We build contests by summing precinct-level returns from the MIT Election Data and Science Lab, then match each one to the corresponding contest in the certified NCSBE canvass by candidate name. A pair is accepted when two candidate names agree — one, where our contest has only a single candidate. Names are the only thing compared: jurisdiction and office labels never enter the match, so a name overlap between two genuinely different contests is enough to produce a false pair, and four in the table above are known to be false. Both Hickory Public Schools rows are matched to Iredell-Statesville Schools board districts, and two ABC-store referendums are matched to the City of Asheville transportation bond referendum, where the two agreeing “candidates” are YES and NO. Those four are left in rather than quietly dropped. Totals are aggregated only across like-for-like contests — summing across structurally mismatched pairs produced a fake 20% shortfall driven almost entirely by one merged contest, which is exactly the kind of error this page exists to catch.