Skip to main content
Methodology

How we compute voter turnout — and why it disagrees with everyone else.

Short version: every political data site reports turnout as votes-cast divided by voting-age population (VAP). That denominator includes non-citizens, who cannot vote. In California 2024 that overstates the denominator by 12%, making turnout look 7 points lower than it actually was. We use citizen voting age population (CVAP) and, where possible, voting eligible population (VEP).

Three denominators

Pick the one that matches the question you're asking.
VAP
Voting-Age Population

Everyone age 18 or older living in the geography, including non-citizens. From the 2020 decennial Census (PL 94-171 redistricting file).

Problem: includes ~12.6M non-citizens 18+ nationally who can’t vote. Overstates the denominator most in CA, TX, NV, FL, NJ.

CVAP
Citizen Voting-Age Population

U.S. citizens age 18+, from the Census CVAP Special Tabulation, 2020–2024 ACS 5-year estimates.

Default for sub-state pages. Methodologically sound for comparing turnout across geographies with different non-citizen shares.

VEP
Voting-Eligible Population

CVAP minus citizens barred from voting by state felony disenfranchisement laws. McDonald USEP methodology.

Default for state-level pages. Large corrections in TN (8.9% disenfranchised), AL (8.3%), FL (7.1%), VA (4.9%).

What the correction looks like

Every state 2024 turnout, three denominators.
California, 2024 turnout
60.7%
was 53.2% on VAP (+7.5 pp)
Nevada
66.8%
was 60.4% on VAP (+6.4 pp)
Texas
57.3%
was 51.7% on VAP (+5.6 pp)
Florida
72.5%
VEP — was 62.0% on VAP (+10.5 pp)
Tennessee
63.8%
VEP — was 57.2% on VAP (+6.6 pp)
Vermont
70.8%
was 72.9% on VAP (−2.1 pp, CVAP vintage is newer)

The city-level numbers are even more dramatic. Miami 2024 turnout was historically reported at 39.7% of VAP. That’s a denominator that counts Miami’s large non-citizen population. Against CVAP, Miami 2024 turnout is 56.0% — a 16.3 pp correction. San Jose jumps from 46.6% to 60.6%. San Francisco from 53% to 65%. Los Angeles from 44% to 56%.

Every page that shows a turnout number has a VEP / CVAP / VAP toggle in the top right corner. The URL persists the choice (?denom=cvap) so share links preserve it.

Sources

Every denominator cites a published, authoritative source.
VAP

U.S. Census Bureau, 2020 PL 94-171 Redistricting File. Block-level, all 50 states + DC. Loaded into demographics_block.voting_age_population.

CVAP

U.S. Census Bureau, Citizen Voting-Age Population Special Tabulation, 2020–2024 ACS 5-year estimates. Published Jan 2026.

census.gov/programs-surveys/decennial-census/about/voting-rights/cvap.html

Loaded directly for state (51), county (3,135), state senate district (1,950), state house district (4,832), congressional district (870), and Census place (32,330) rows. Block-level CVAP is disaggregated from block-group CVAP using 2020 decennial block VAP as the allocation weight — Canvas (draw-a-shape) uses this.

VEP

CVAP minus citizens barred from voting due to a felony conviction. Disenfranchisement counts come from The Sentencing Project, Locked Out 2022: Estimates of People Denied Voting Rights (October 2023), Table 2.

sentencingproject.org/reports/locked-out-2022

50 state VEP values are loaded today. Mississippi is excluded — The Sentencing Project retracted its 2022 MS estimate in 2024 pending recalculation. FVAP overseas adjustment (~0.1–0.2 pp nationally) is not yet applied. Sub-state VEP is state-level only; county/CD VEP would require BJS county-level incarceration data, which is a future phase.

Turnout Gap

Every county and state page shows the non-voter pool broken down by race.

The Turnout Gap feature asks: of the citizens who are eligible to vote in this geography, which demographic segments didn’t? And what partisan lean does that non-voter pool have?

Race composition of non-voters

For each geography we load CVAP broken out by 6 race/ethnicity categories directly from the Census CVAP Special Tab (lnnumbers 3–13). We rebase the overlapping Census categories (White Alone includes Hispanic whites, Hispanic spans all races) into 5 mutually exclusive buckets: White non-Hispanic, Black, Hispanic, Asian, Other. Hispanic–to–White-Alone overlap is deducted at the published national 67% rate.

Assumed turnout rates

We assume each race voted at its CPS Nov 2024 Voting Supplement national rate:

  • White non-Hispanic: 67.7%
  • Black: 60.4%
  • Hispanic: 52.4%
  • Asian: 58.2%
  • Other (AIAN, NHPI, multi-race): 55.0%

These are national averages. State-specific CPS subsamples would refine them; future phase.

Partisan lean of non-voters

The partisan lean of the non-voter pool is not the 2024 exit-poll voter lean — that’s a common methodological error. Non-voters in 2024 shifted more Republican than engaged voters, most dramatically among Hispanic and Black men.

We start with 2024 exit-poll voter lean and apply a per-race non-voter adjustment derived from Pew’s 2024 non-voter analysis, AP VoteCast’s non-voter subsample, and post-election breakdowns by Harry Enten and Nate Cohn:

RaceVoter lean (2024)Non-voter adjustmentNon-voter lean
White non-HispanicR +16−3R +19
BlackD +75−18D +57
HispanicD +6−16R +10
AsianD +14−8D +6
OtherD +10−6D +4

These are 2024 point estimates. Post-2024 special elections (WI Supreme Court, OK-02 federal House) and 2025 polling show Democrats recovering ground with low-propensity voters. A 2026 model will refresh these constants.

Mobilization ceiling

The “Margin Shift If Mobilized” number is an upper bound: it assumes 100% of eligible non-voters turn out along their demographic non-voter lean. Real-world mobilization is partial, costly, and diminishes at higher intensity. Use the ceiling as a theoretical maximum, not a forecast.

Programmatic access

Every turnout number is also available via the public API.

Prophet ($99/mo) and above can query the Turnout Gap for any geography:

GET https://akashicedge.com/api/v1/turnout?geo_id=state:2020:48&year=2024
Authorization: Bearer YOUR_API_KEY

{
  "ok": true,
  "data": {
    "geography": { "geo_id": "state:2020:48", "type": "state", "name": "Texas" },
    "year": 2024,
    "denominators": { "vap": 22040758, "cvap": 19865984, "vep": 19410824, ... },
    "turnout": {
      "votes_cast": 11382948,
      "pct_vap":  51.7,
      "pct_cvap": 57.3,
      "pct_vep":  58.7,
      "default_denominator": "vep",
      "default_pct": 58.7
    },
    "gap": {
      "total_non_voters": 8477310,
      "gap_pct_of_cvap": 42.7,
      "segments": [ ... by race ... ],
      "non_voter_lean": 0.8,
      "mobilization_ceiling": { "margin_shift": 6.2, ... }
    },
    "methodology": { ... }
  }
}

See API docs for authentication and rate limits.