US election data · reference
Every other page on this site talks about margins — a seat won by 20 points, a state that broke 10 points against its lean, a primary decided by two tenths of a point. This page is the key: what those numbers mean, where the site's own thresholds for “close” came from, and how close a close election can actually get.
A percentage point is what this site, and virtually all US election reporting, uses: the difference between two vote shares, in whole units out of 100. A basis point is a hundredth of a percentage point — a unit from finance, used because interest rates and small percentage changes are otherwise awkward to say aloud. The two are related by a fixed conversion, never by context:
| In percentage points (how this site reports margins) | In basis points |
|---|---|
| 0.17 points | 17 basis points |
| 1.0 point | 100 basis points |
| 5.0 points | 500 basis points |
| 10.0 points | 1,000 basis points |
| 20.0 points | 2,000 basis points |
A headline that says a race was decided by “50 basis points” means the same half-point margin as a headline that says “half a point” — but nobody covering an election actually talks that way. If you see “points” on this site, or anywhere else covering a US election, that is percentage points. Basis points show up in election writing only when someone is carrying financial-market habits into a different subject.
Five bands, applied consistently across every page here. They are not a new invention for this page — they are the exact bands Safe Seats already sorts 1,305 House elections into. The count in each band and the example race are computed here from that same file, not chosen for effect.
| Band | Range | Seats, 2018–22 | A real example |
|---|---|---|---|
| Razor's edgeA margin this size can turn on a late count, a recount, or a single precinct. | 0–5 pts | 100 | Roy, Chip TX-21 2018, +2.6 |
| CloseComfortably decided on election night, but well within a normal polling error. | 5–10 pts | 100 | Casten, Sean IL-6 2018, +7.2 |
| ClearA real win. Recognisable as a win by the time most of the count is in. | 10–20 pts | 198 | Sherrill, Mikie NJ-11 2018, +14.6 |
| SolidThe result was never seriously in doubt once returns started coming in. | 20–40 pts | 393 | DeLauro, Rosa L. CT-3 2018, +29.2 |
| LandslideOne side outnumbers the other by more than three to two. | 40+ pts | 232 | Menendez, Robert J. NJ-8 2022, +50.2 |
Roughly a third of contested House races since 2018 have landed in the top two bands (Solid or Landslide) — part of why Safe Seats found most House seats are not competitive at all.
Two of the closest elections on record, both pulled from this project's own data rather than a separate claim:
| Race | Result | Margin | How it was settled |
|---|---|---|---|
| IA-2, 2020 | Miller-Meeks, Mariannette 196,964 vs Hart, Rita R. 196,958 | 6 votes | Decided by a hand recount and an Iowa Supreme Court ruling; the U.S. House seated the certified winner over an unresolved contest. |
| MN Senate, 2008 | Al Franken 1,212,629 vs Norm Coleman 1,212,317 | 312 votes | Decided after a statewide hand recount and a state Supreme Court ruling, eight months after election day. |
Every one of these was called a poll-defying upset somewhere on this site. Read against the scale above, most of them were not landslides in the other direction — they were still close races, just close races that broke the other way from where the polling average sat.
| Race | Margin |
|---|---|
| Doug Jones over Roy Moore, Alabama 2017 | +1.6 |
| Katie Hobbs over Kari Lake, Arizona 2022 | +0.67 |
| Ron Johnson over Russ Feingold, Wisconsin 2016 | +3.4 |
| Susan Collins over Sara Gideon, Maine 2020 | +8.6 |
Four different pages on this site each drew their own threshold, independently, for their own question. Shown here so the choices are visible rather than buried in code:
| Where | Line drawn at | Why |
|---|---|---|
| Stormfront's Eyewall model | 8 pts | trains only on races this close or closer — that is its whole premise, so the line has to sit inside the band a poll error could plausibly erase. |
| Against the Lean's “hostile ground” | 10 pts | the point past which a state's presidential lean is treated as genuinely lopsided, not just tilted. |
| Money in Politics' “competitive Senate race” | 10 pts | the same cut, chosen independently for a spending question: does money behave differently in a real contest? |
| Safe Seats' “safe seat” | 20 pts | the point past which this project stopped calling a general election contested at all. |
A model asking “is this race in reach of an upset” needs a tighter line than a page asking “did this state vote unusually for its history.” Different questions earn different lines. What would be a problem is using one without saying so, or switching lines without a reason — not having more than one.
Every figure above is computed at build time from three files already published
elsewhere on this site: data/safe_seats/seats.json,
data/against_lean/races.json and data/upsets/upsets.json. This page adds
no new claims of its own.
Built by src/build_margins_page.py. A reference page, not a
research phase — it explains vocabulary the rest of the site already uses.