An election result is a set of totals, because the ballot is secret and a total is what remains once the ballots are put away. Alaska does not put them away. Since adopting ranked-choice voting — a ballot on which voters rank the candidates in order of preference instead of marking one — the state has published its cast vote record:1 one row per scanned ballot, showing every ranking the voter marked. No name and no address, but the actual choices, one ballot at a time. Nothing else in American election data comes this close to the individual act.
The claim you have heard about ranked-choice voting is its promise: rank as many candidates as you like, support your real first choice, and the eventual winner will hold a majority. Every part of that is checkable against the ballots of one congressional election. What does a ballot-level record let you see that no total can — and when the winner’s majority arrives, what is it a majority of?
The contest is the November 2024 race for Alaska’s single seat in the U.S. House: Mary Peltola, the Democratic incumbent, against Nick Begich, with two minor candidates. The data is the State of Alaska, Division of Elections cast vote record for that election, the JSON export the state’s voting equipment writes — a text file in which each ballot’s marks sit nested inside its contests — published at a stable address (https://www.elections.alaska.gov/results/24GENR/). Beside it sits the state’s official round-by-round report, a PDF, typed into tables by hand and used below to grade a recount.
Why this source, of all sources: it is the bottom rung of the ladder of election data, the only public American election file in which a row is one ballot. The levels-of-aggregation chapter walks that ladder rung by rung. Everything this brief measures (how many rankings voters used, which candidates shared a ballot, where eliminated candidates’ votes went) is a property of single pieces of paper. A total has already destroyed it.
Figure 1. The instrument: Alaska’s own demonstration ranked-choice ballot, cropped to the instructions and the House contest. Candidates run down the side, ranking columns across, and the offer sits at the top: rank as many or as few as you like. Every row of the file below is one of these grids, flattened. State of Alaska, Division of Elections, retrieved 10 August 2026.
The export is large and raw: 2,028 ballot files, 1.58 GB uncompressed, one session — the equipment’s word for a single scanned ballot — per ballot, with marks nested inside contests nested inside cards. One session is kept verbatim in this brief’s data, with four identifying fields masked. Its envelope:
| Field | Value |
|---|---|
| TabulatorId | MASKED |
| BatchId | MASKED |
| RecordId | MASKED |
| CountingGroupId | 1 |
| ImageMask | MASKED |
| SessionType | ScannedVote |
| VotingSessionIdentifier | |
| UniqueVotingIdentifier | |
| Original.PrecinctPortionId | MASKED |
| Original.BallotTypeId | 37 |
| Original.IsCurrent | true |
| … | 13 contests on this ballot, one after another |
The ballot carries 13 contests and this brief wants one. Here it is, complete:
| Field | Value |
|---|---|
| Id | 7 |
| ManifestationId | 662 |
| Undervotes | 0 |
| Overvotes | 0 |
| Marks.CandidateId | 517 |
| Marks.ManifestationId | 5017 |
| Marks.PartyId | 15 |
| Marks.Rank | 1 |
| Marks.MarkDensity | 98 |
| Marks.IsAmbiguous | false |
| Marks.IsVote | true |
| Marks.OutstackConditionIds | [] |
| CandidateId | 552 |
| ManifestationId | 5023 |
| PartyId | 7 |
| Rank | 2 |
| MarkDensity | 92 |
| IsAmbiguous | false |
| IsVote | true |
| OutstackConditionIds | [] |
| CandidateId | 520 |
| ManifestationId | 5025 |
| PartyId | 3 |
| Rank | 3 |
| MarkDensity | 92 |
| IsAmbiguous | false |
| IsVote | true |
| OutstackConditionIds | [] |
Nothing in that record is readable on its own.
CandidateId is a number whose meaning lives in a separate
file, CandidateManifest.json, listing 209 candidates across
every contest:
| Rank | CandidateId | Who that is |
|---|---|---|
| 1 | 517 | Begich, Nick |
| 2 | 552 | Hafner, Eric |
| 3 | 520 | Howe, John Wayne |
Turning 2,028 such files into a table took five judgments, each a
rule somebody chose. Keep one contest of the 13 on each
ballot. Believe IsVote, not the ink: each
mark carries its darkness (MarkDensity) and the scanner’s
verdict, and the verdict is what counts here, rather than a darkness
threshold of our own. Decide what two marks in one column
mean: that is an overvote, recorded as
OVERVOTE at that rank, after which the ranks are sorted and
single gaps closed. Alaska’s tabulator applies further rules about
skipped ranks that this reconstruction does not, and that honest
difference is measured below. Translate numbers into
names through the manifest.
Then destroy what is left. Ballots with identical rankings are collapsed to one row with a count, and precinct and tabulator identifiers are dropped before anything reaches disk. That last step is for privacy, not tidiness. A record with no name on it is not the same as a record nobody can identify; a distinctive ranking in a small precinct can narrow down who cast it. The collapse cannot be run backwards, which is the point of it.
What ships is three tables. sequences.csv has one row
per distinct ranking: a ballots count, then
rank1 through rank4, one candidate name per
column the voter used. official_rounds.csv holds the
state’s votes per candidate per
round, and official_transfers.csv records
where each eliminated candidate’s ballots were
transferred_to — both typed from the PDF report. The single
ballot above becomes one line among 926:
| Ballots | 1st ranking | 2nd ranking | 3rd ranking |
|---|---|---|---|
| 593 | Begich, Nick | Hafner, Eric | Howe, John Wayne |
And the commonest lines in the file are the shortest ones:
| Ballots | 1st ranking | 2nd ranking | 3rd ranking |
|---|---|---|---|
| 121,602 | Begich, Nick | ||
| 86,278 | Peltola, Mary S. | ||
| 17,294 | Peltola, Mary S. | Hafner, Eric | |
| 12,205 | Begich, Nick | Howe, John Wayne | |
| 10,674 | Peltola, Mary S. | Hafner, Eric | Howe, John Wayne |
The ballot on the left is the one 121,602 Alaskans cast — the single commonest piece of paper in the election. Three of its four columns are empty, and that is what the rest of this chapter is about.
Figure 2. Two ballots, and the two records they become. On the left, the commonest marked grid in the election: one ranking used, 121,602 ballots identical to it. On the right, the commonest grid that used all 4 columns, cast 10,674 times. Everything a cast vote record knows about a voter is the few characters underneath each grid.
Before you read on, commit to two answers. Alaska’s ballot offered 4 rankings. First: what share of the voters in this race used exactly one? Second: whose supporters stop after one ranking more often — the front-runner’s, or the smallest candidate’s? Write both down.
| Quantity | Value |
|---|---|
| Ballots in the cast vote record | 340,778 |
| Distinct ranking sequences any Alaskan produced | 926 |
| Ballots per distinct sequence, on average | 368 |
| Sequences used by exactly one ballot | 363 |
340,778 ballots collapse to 926 distinct patterns, and most voters used one of the first few:
| Candidates ranked | Ballots | % of all ballots |
|---|---|---|
| 0 | 10,150 | 3.0 |
| 1 | 215,501 | 63.2 |
| 2 | 48,026 | 14.1 |
| 3 | 18,995 | 5.6 |
| 4 | 40,409 | 11.9 |
| 5 | 7,697 | 2.3 |
Set aside 10,150 ballots that left this contest blank. Of the 330,628 that voted in it, 215,501 ranked exactly one candidate: 65.2%. Given 4 rankings, two-thirds of Alaskans used one. Neither the system’s advocates nor its opponents advertise that number. Hold the obvious explanation, a confusing ballot, because the file can test it, and the test comes out the other way.
First, the count. Instant runoff, the counting rule ranked-choice elections use, fits in three sentences. Count each ballot for its top-ranked candidate still in the race. If nobody has a majority, eliminate the candidate with the fewest and read those ballots’ next choice. Repeat. Each pass is a round.
| Round | Continuing ballots | Leader | Leader’s % | Eliminated after this round |
|---|---|---|---|---|
| 1 | 330,018 | Begich, Nick | 48.39 | Write-in |
| 2 | 329,614 | Begich, Nick | 48.49 | Hafner, Eric |
| 3 | 328,300 | Begich, Nick | 48.76 | Howe, John Wayne |
| 4 | 322,000 | Begich, Nick | 51.22 | — |
Begich, Nick wins with 51.22% — a congressional election recounted from the ballots as this page renders. Now check it against the state:
| Round | Candidate | Official votes | Official % |
|---|---|---|---|
| Round 3 | Begich, Nick | 164,861 | 51.22 |
| Round 3 | Peltola, Mary S. | 156,985 | 48.78 |
| Quantity | Value |
|---|---|
| Ballots continuing in our final round | 322,000 |
| Ballots continuing in the state’s final round | 321,846 |
| Difference | 154 |
| As a share of the count | 0.048% |
The percentages match Alaska’s official result to two decimal places. The counts do not: this recount carries 154 more ballots into the final round, because the state’s tabulator applies printed rules about write-ins, skipped ranks and overvotes that the three-sentence version does not. The rules are not in the data. They live in a separate document, and they change the count2 — here by 0.048%, in a closer race by the winner.
| Eliminated candidate | Transferred to | Ballots |
|---|---|---|
| Hafner, Eric | Begich, Nick | 267 |
| Hafner, Eric | Howe, John Wayne | 661 |
| Hafner, Eric | Peltola, Mary S. | 1,313 |
| Hafner, Eric | Exhausted | 1,300 |
| Hafner, Eric | Overvotes | 17 |
| Howe, John Wayne | Begich, Nick | 4,817 |
| Howe, John Wayne | Peltola, Mary S. | 2,724 |
| Howe, John Wayne | Exhausted | 6,295 |
| Howe, John Wayne | Overvotes | 35 |
When John Wayne Howe was eliminated, his 13,871 ballots split, and the largest single destination was nowhere: 6,295 of them, 45.4%, were exhausted, because those voters had ranked nobody else. Their ballots left the count before the decisive round. Follow one of them through. 5,707 voters ranked Howe and nobody else. In round 1 each of those ballots counts for Howe. Hafner, last with 3,558 votes, is eliminated, and in round 2 the ballot still counts for Howe. Now Howe is last, at 13,871, and is eliminated; the count reads the ballot’s second ranking, finds nothing, and the ballot leaves — it is exhausted. A ballot that had ranked Howe first and Begich second would instead have moved to Begich for round 3. That is the trade at the heart of ranked-choice voting: it lets you express more than one preference, and it does not make you.
Alaska’s official rounds. Every band is drawn to the same scale, so the 7,647 ballots that leave the count are as wide as they truly are: 2.3% of the 329,493 that started. The gray node is 7,595 exhausted ballots plus 52 overvotes.
Figure 3. Alaska’s official count, all three rounds drawn to one scale. A flow of bands, because the count is a process: each column is a round, each band is ballots moving to the next. Every band is drawn to the same scale, so the gray one is exactly as wide as it truly is. The gray band is the 7,647 ballots that leave: 2.3% of the 329,493 that started, made of 7,595 exhausted ballots plus 52 overvotes.
Two smaller things only ballot-level data can show. 17,434 ballots ranked one major candidate first and the other second — 5.3% of everyone who voted in the race, one voter in twenty taking the cross-divide offer the system is supposed to reward:
| First ranking | Second ranking | Ballots |
|---|---|---|
| Peltola, Mary S. | Begich, Nick | 10,771 |
| Begich, Nick | Peltola, Mary S. | 6,663 |
And 3,790 ballots named the same candidate twice; the tabulator skips the duplicate, the ballots count normally, and no total would ever show the behavior:
| Candidate named at both rank 1 and rank 2 | Ballots |
|---|---|
| Begich, Nick | 2,455 |
| Peltola, Mary S. | 1,049 |
| Howe, John Wayne | 147 |
| OVERVOTE | 90 |
Now the prediction. If two-thirds of voters stopping after one ranking is confusion, the rate should be roughly flat across candidates, because confusion has no reason to prefer a front-runner. Split the bullet voters — the ones who ranked one candidate and stopped — by who they ranked first:
| First choice | Voters | % who ranked only that candidate |
|---|---|---|
| Begich, Nick | 159,703 | 76.1 |
| Peltola, Mary S. | 152,887 | 56.4 |
| Howe, John Wayne | 13,146 | 43.4 |
| Hafner, Eric | 3,537 | 35.4 |
76.1% of Begich’s voters ranked nobody else, against 35.4% of Hafner’s, and the rate falls cleanly with candidate size. That is not confusion’s flat signature. It is arithmetic voters appear to have done. If your candidate is the front-runner, a second ranking will almost never be read. If your candidate polls at one percent, the second ranking is the only part of your ballot that will do anything.
A second reading, which this file cannot rule out, is campaign instruction — “rank one and stop” is a documented tactic.3 Either way the conclusion is the same: these ballots show the campaigns’ strategies, not just the voters’ preferences.
Hover a bar for the candidate’s first-preference count.
Figure 4. Bullet voting is not spread evenly across candidates. One bar per candidate, ordered by first-preference votes (159,703 down to 3,537), because the claim is a gradient and ordered bars make it visible at a glance. The share who ranked nobody else falls from 76.1% to 35.4%.
Which leaves the finding in the subtitle:
| Quantity | Value |
|---|---|
| Ballots in the cast vote record | 340,778 |
| Continuing in our first round | 330,018 |
| Continuing in the final round | 322,000 |
| Winner’s final-round total | 164,935 |
| As a share of continuing ballots | 51.22% |
| As a share of all ballots cast | 48.4% |
The winner’s 51.22% is a majority of the 322,000 ballots still in the count, not of the 340,778 people who cast one. Measured against every ballot, the figure is 48.4% — a plurality, the largest share but not a majority. The majority is partly manufactured by shrinking the denominator, the bottom number the winner’s votes are divided by, and Burnett and Kogan (2015) found the same shrinkage across four earlier ranked-choice elections.4 The fair answer is a question: what would the alternative denominator mean? Under a plurality rule, where the most votes win outright, the winner’s share here would also have sat under half, with no second round for anyone’s ballot to survive into, and a voter who declines to rank anyone else has made a choice. Figure 4 says those voters were disproportionately the ones with the least to gain from a second ranking.
It is not the certified count. Alaska says so plainly on the page the file is published from: the record “does not include ballots that were only counted by hand,” and write-in names are not resolved,5 so 340,778 is not this contest’s official turnout.
It holds choices, not reasons. Whether bullet voting is a calculation voters made or an instruction they followed cannot be separated from these rows; that would take survey data, and the ballot’s anonymity is deliberate. Where surveys exist, Donovan, Tolbert and Gracey (2016, 2019) find ranked-choice voters mostly say they understand the system, which also cuts against the confusion reading.6 No demographics attach to any ranking.
It is one race, in one state, in one year — a state that adopted ranked-choice voting by initiative, whose voters are not a sample of anything. Whether the system changes who runs and how they campaign is a question about candidates, not ballots.
And the file cannot say who cast what. The published collapse to 926 sequences was chosen so that it cannot be undone, which protects voters and closes some questions permanently.
None of these is answered above, and every one can be answered from the tables the Sources section hands over.
sequences.csv has one row per distinct ranking with a
ballots count. Count the ballots whose rank1
and rank2 name different parties’ candidates. How porous
was the partisan divide, really?sequences.csv again: find the sequences containing
OVERVOTE. How many ballots carried one, and at which rank
do overvotes cluster?official_transfers.csv records where each eliminated
candidate’s ballots went. Compare the destinations against what the
parties involved would predict. Were any transfers surprising?official_rounds.csv shows the count at each stage. Work
out who led in round one and who won. Then decide whether the
first-round leader has a complaint.Two stretch ideas point past the spreadsheet. Maine and several cities publish cast vote records for their own ranked-choice races; download one and compute its exhaustion rate — the share of ballots that leave the count before the final round — against Alaska’s 2.3%. And compare both against the four elections in Burnett and Kogan (2015): is exhaustion shrinking as voters gain experience with the system?
Data
The data itself
Every figure above is drawn from these tables. They are plain CSV, they open in a spreadsheet, and they are yours to take further.
official_rounds.csv,
official_transfers.csv,
sequences.csv
Academic literature
I want to rebuild a public dataset from its original source, without any starting files. Please do the following and show your work. THE SOURCE. State of Alaska, Division of Elections, cast vote record export for the 2024 general election: https://www.elections.alaska.gov/results/24GENR/CVR_Export_20241130154411.zip No account or key is needed. The zip is about 44 MB and expands to about 1.58 GB of JSON. Inside, one "session" per scanned ballot, each carrying cards, contests, and marks; every mark names a candidate and a rank. The U.S. Representative contest carries the Id 7, and a manifest file inside the zip maps candidate Ids to names. This is the closest thing to a public record of individual votes that exists in the United States. The state's own round-by-round result for the same race is a small PDF beside it, RCV-USRep.pdf, on the same site. Two warnings from Alaska itself: ballots counted by hand are not in the export, and write-in names are not shown, so the file will not reproduce the certified totals exactly -- and is not supposed to. HOW TO DOWNLOAD IT. The download itself is plain. The size is the difficulty: read the JSON files one at a time from inside the zip rather than expanding all of it into memory at once. WHAT TO BUILD. 1. Every ballot's ranking in the U.S. Representative race, collapsed to distinct ranking sequences with a count of how many ballots cast each. Nothing identifying any voter survives the collapse. 2. Your own instant-runoff count from those sequences, eliminating the last-place candidate each round, next to the state's official round-by-round result. CHECK YOUR WORK. The copy this book used was downloaded in August 2026. If your rebuild matches it, you should find: - 2,043 JSON files of ballots inside the archive - 340,778 ballots rank someone in this race, collapsing to 926 distinct ranking sequences - the official final round: Begich 164,861 votes to Peltola's 156,985 -- 51.22 against 48.78 percent - your own count reproduces those percentages exactly, while the raw vote counts sit about 150 ballots apart in 322,000; the official tabulator applies exhaustion rules the simple count does not This is an archived election, so the file should not change; the timestamp in its name would change if the state ever reposted it.
Alaskans adopted the system by ballot measure in November 2020 and, by a narrow vote, declined to repeal it in November 2024: Alaska Public Media, “Ballot Measure 2: Alaskans decide whether to become the first state to ditch ranked choice voting,” 29 October 2024, https://alaskapublic.org/news/2024-10-29/ballot-measure-2-alaskans-decide-whether-to-become-the-first-state-to-ditch-ranked-choice-voting. The counting rules are Alaska Statutes § 15.15.350, https://www.akleg.gov/basis/statutes.asp#15.15.350.↩︎
Alaska Statutes § 15.15.350, https://www.akleg.gov/basis/statutes.asp#15.15.350.↩︎
In Maine’s 2018 Second District race, Representative Bruce Poliquin urged his supporters to rank him and nobody else, and 28% of his voters did: FairVote, Ranked Choice Voting Candidate Strategy Guide, https://fairvote.org/report/ranked-choice-voting-candidate-strategy-guide/. In Alaska’s 2022 House races the Republican Party’s instruction ran the other way, “rank the red”: Alaska Public Media, “Palin and Begich both say ‘rank the red’ while diverging in style,” 10 October 2022, https://alaskapublic.org/news/2022-10-10/palin-and-begich-both-say-rank-the-red-while-diverging-in-style.↩︎
Craig M. Burnett and Vladimir Kogan, “Ballot (and Voter) ‘Exhaustion’ Under Instant Runoff Voting: An Examination of Four Ranked-Choice Elections,” Electoral Studies 37 (2015): 41–49, https://doi.org/10.1016/j.electstud.2014.11.006.↩︎
State of Alaska, Division of Elections, 2024 General Election results, https://www.elections.alaska.gov/election-results/e/?id=24genr.↩︎
Todd Donovan, Caroline Tolbert and Kellen Gracey, “Campaign Civility Under Preferential and Plurality Voting,” Electoral Studies 42 (2016): 157–163, https://doi.org/10.1016/j.electstud.2016.02.009; and “Self-Reported Understanding of Ranked-Choice Voting,” Social Science Quarterly 100, no. 5 (2019): 1768–1776, doi:10.1111/ssqu.12651.↩︎