docs/us_elections/elections_presidential_county_year

elections_presidential_county_year

Presidential election results by county, 1976–2020. MIT Election Lab county-level returns with Democratic, Republican, and total votes and two-party share.

tier aadmin_recordelectionsmitpresidentialvote_sharemarginpartisan_leancompetitiveness
grain
county-year
years
2000 – 2024
cadence
Quadrennial (released ~6-12 months after general election)
overview

overview

All 3,153 US counties + DC + AK borough/census areas + ME towns (special handling). 2024 most recent cycle.

current vintage — 2024 general election

history — MIT county presidential returns: 2000 to present (limited 1976-1999 also available)

provenance

source & licensing

authority
MIT Election Data and Science Lab
dataset
MIT Election Lab County Presidential Election Returns
license
Creative Commons Attribution 4.0
citation
MIT Election Data and Science Lab. County Presidential Election Returns, 2000-2024.
schema

fields

nametypedefinition
_ingested_attimestampTimestamp when this record was written to BigQuery.Pipeline metadata field.
_ingestor_versionstringVersion of the ingestor script that produced this record.Pipeline metadata field.
_reliability_tierstringData quality tier (A/B/C) assigned at ingestion.Pipeline metadata field.
_source_dataset_idstringInternal dataset identifier linking to meta.datasets.Pipeline metadata field.
country_idstringISO alpha-2 country code (always 'US' for domestic tables).
county_idkeystring5-character FIPS code identifying the county.Joins dim.counties on county_id.
data_versionint64Integer version identifier for the underlying source data, incremented when the provider publishes corrections or revisions to county-level election results.
dem_share_two_party_pctfloat64 · percent (0–100)Democratic share of the two-party vote, calculated as dem_votes / (dem_votes + rep_votes) × 100. Values above 50 indicate the Democrat outperformed the Republican among two-party voters.
dem_votesint64 · countTotal votes cast for the Democratic presidential candidate in the county for the given election year. Higher values indicate greater Democratic voter turnout.
margin_change_4yr_pct_ptsfloat64 · percent (0–100)Change in the two-party margin (margin_two_party_pct) relative to the prior presidential election four years earlier, in percentage points. Positive values indicate a shift toward Republicans; negative values indicate a shift toward Democrats.
margin_change_8yr_pct_ptsfloat64 · percent (0–100)Change in the two-party margin (margin_two_party_pct) relative to the presidential election eight years earlier, in percentage points. Captures medium-term partisan drift; positive values indicate a Republican shift.
margin_two_party_pctfloat64 · percent (0–100)Two-party vote margin, calculated as rep_share_two_party_pct − dem_share_two_party_pct. Positive values indicate a Republican advantage; negative values indicate a Democratic advantage.
rep_share_two_party_pctfloat64 · percent (0–100)Republican share of the two-party vote, calculated as rep_votes / (dem_votes + rep_votes) × 100. Values above 50 indicate the Republican outperformed the Democrat among two-party voters.
rep_votesint64 · countTotal votes cast for the Republican presidential candidate in the county for the given election year. Higher values indicate greater Republican voter turnout.
state_idstring2-character FIPS code identifying the state.Joins dim.states on state_id.
total_votesint64 · countTotal ballots cast for all presidential candidates in the county for the given election year. Used as the denominator for vote share calculations.
winning_partystringThe party ('DEM' or 'REP') whose presidential candidate received the most total votes in the county for the given election year.
yearkeyint64Reference year of the observation.
relationships

joins

primary key
county_id, year
common joins
dim.geographies on county_id
elections_house_county_year on (county_id, year)
elections_scorecard_county on county_id
usage

how to use this table

method

County-level vote totals harmonized from state SOS reports. Margin = dem_share - rep_share. Note: pipeline uses non-standard sign convention (positive = Republican win) - see scorecard_v4 issues.

do not use for

Precinct or ward-level analysis; primaries (general only); Alaska borough boundary changes pre-2008 without bridging.

known issues

Margin sign convention: positive = Republican win (non-standard). Alaska reports by state-house district, not borough; requires special handling. Some swing-state recount adjustments may not be reflected.

last updated · May 5, 2026