Electoral College Simulator: Popular Vote vs Electoral Vote

simulator intermediate ~8 min
Loading simulation...
Popular and EC winners match at default settings

With 10 states, balanced population variance, and no swing, both systems agree. Adjust swing and turnout bias to find the conditions that produce a popular-EC mismatch.

Formula

Electoral votes per state: floor(population_i / avg_pop * base_seats) + 2
Winner-take-all: EC_i goes to candidate with most votes in state i
Popular margin = (total_A - total_B) / (total_A + total_B) * 100

Two Systems, Two Winners

The United States elects its president not by popular vote, but through the Electoral College — a system where each state casts a block of electoral votes for whichever candidate wins that state's popular vote. This winner-take-all mechanism means that the nationwide popular vote winner can lose the election. It has happened five times in American history, most recently in 2000 and 2016. This simulation lets you explore exactly how and when such inversions occur.

The Mechanics of Mismatch

A popular-EC mismatch requires a specific pattern: one candidate wins many states by narrow margins (efficiently converting votes to EC votes), while the other candidate wins fewer states by enormous margins (wasting surplus votes). The geometry is analogous to gerrymandering — the same voters, partitioned differently, produce different outcomes. High population variance between states amplifies this effect because winner-take-all in large states means more votes are 'wasted' by the losing side.

Small States and Big States

The Electoral College gives every state a minimum of 3 electoral votes, regardless of population. This 'Senate bonus' means small-state voters carry disproportionate weight. The population variance slider lets you explore how population differences between states affect the probability of inversions. With high variance (a few very large states and many small ones), inversions become more likely because the large-state popular vote doesn't translate proportionally.

The Swing State Effect

Use the swing slider to shift national sentiment toward one candidate. Watch how a uniform national swing affects different states differently — some 'tip' from one candidate to the other. These tipping-point states determine the election and are highlighted in the visualization. The turnout bias parameter shows how differential voter enthusiasm across states can further decouple the popular vote from the electoral outcome. Together, these parameters reveal why the Electoral College creates a very different strategic landscape than a simple popular vote.

FAQ

How does the Electoral College work?

Each US state gets electoral votes equal to its Congressional representation (House seats + 2 Senators). In 48 states, the popular vote winner takes all electoral votes. A candidate needs 270 of 538 electoral votes to win. This means small-state voters have disproportionate per-capita representation due to the Senate bonus.

How can someone win the EC but lose the popular vote?

If a candidate wins many states narrowly (gaining all their EC votes) but loses a few states by huge margins, they can accumulate enough EC votes while having fewer total votes. The 'wasted votes' in blowout states don't help the loser in the EC system.

What are swing states?

Swing states (or battleground states) are states where neither party has a reliable majority. Because of winner-take-all, campaigns focus resources on these competitive states. The simulation highlights tipping-point states that determine the outcome.

What is the small-state bias?

Every state gets at least 3 electoral votes (2 senators + 1 representative) regardless of population. Wyoming (580,000 people) gets 3 EC votes, meaning each EC vote represents ~193,000 people. California (39M people) gets 54 EC votes, or ~722,000 people per EC vote — a 3.7x disparity.

Sources

Embed

<iframe src="https://homo-deus.com/lab/voting-democracy/electoral-college/embed" width="100%" height="400" frameborder="0"></iframe>
View source on GitHub