Skip to content

04_Approval — Approval Voting

Mark every candidate you approve. Whoever collects the most marks wins.

An Approval ballot: one bubble per candidate — Andre, Blake, Carmen, David, Erin — under the instruction 'Vote for ALL candidates you approve of'. This voter has filled the bubbles for Andre, Carmen and David.

The ballot (Equal Vote) — it can look identical to a traditional ballot. Only the "vote for only one" instruction changes.

Approval hands every voter a checklist instead of a single choice. Approve as many candidates as you like — one, three, all of them — and each approval is worth one point. Add up the checkmarks; whoever has the most wins. No ranking, no scores, no runoff.

That one change fixes Choose-One's core failure. Under Choose-One, marking your sincere favorite (a long shot) costs you a vote against the front-runner you'd settle for — the spoiler / vote-splitting trap. Under Approval you simply approve both your favorite and the acceptable compromise, so supporting a new candidate never splits your own side.

It also asks one genuinely hard thing of you. Because the ballot is binary, Approval forces exactly one call: where to draw your approval line. Approve too few and you can't help a compromise; approve too many and you help a rival beat your favorite. And a checkmark can never say how much you approve, or in what order — which is precisely the information STAR's 0–5 ballot keeps. Approval is Score voting at one-bit resolution: an enormous gain in expressiveness over choose-one, for near-zero ballot complexity.

This page is the folder's front door: the method, one worked election, and the index of runnable examples below. The full concept treatment lives next door — Approval Voting (the ballot variants, reading a result, where it fits in the scored family), honest limits (where it struggles), Approval + Top-Two (the St. Louis package), in the theory literature, and the full concept index.


How it counts — a worked election

Five voters, three candidates — Ann, Bob and Cal. Here is every ballot twice over: as the voter marked the paper, and as the count reads it, one column per candidate.

The ballots as marked — a filled Yes is a 1 in that candidate's column, a filled No a 0:

Ballot as marked Ann Bob Cal
A Yes/No Approval ballot — Voter 1 — approves Ann and Bob: Ann Yes, Bob Yes, Cal No. 1 1 0
A Yes/No Approval ballot — Voter 2 — approves Bob and Cal: Ann No, Bob Yes, Cal Yes. 0 1 1
A Yes/No Approval ballot — Voter 3 — approves Ann and Bob: Ann Yes, Bob Yes, Cal No. 1 1 0
A Yes/No Approval ballot — Voter 4 — approves only Bob: Ann No, Bob Yes, Cal No. 0 1 0
A Yes/No Approval ballot — Voter 5 — approves Ann and Cal: Ann Yes, Bob No, Cal Yes. 1 0 1

Now add up the columns — a 1 is a point, a 0 is nothing:

--- Approval Voting (single winner) ---
 Tabulating 5 ballots (any non-zero score = approval).

Ballots:
   columns = Ann, Bob, Cal      (1 = approve; 0 = not approved)
     2 × 1,1,0
     1 × 0,1,1
     1 × 0,1,0
     1 × 1,0,1

   Bob -- 4 (80%) -- Elected
   Ann -- 3 (60%)
   Cal -- 2 (40%)

[Approval Distribution] (how many candidates each ballot approved)
   9 approvals across 5 ballots — average 1.8 of 3 (range 1–2).
     approved 1: 1 ballot
     approved 2: 4 ballots

[Co-Approval Matrix]
 Of the voters who approved the ROW candidate, the % who ALSO approved the COLUMN candidate.
        |  Bob   |  Ann   |  Cal   |
   ---------------------------------
   Bob  |   --   |  50%   |  25%   |
   Ann  |  67%   |   --   |  33%   |
   Cal  |  50%   |  50%   |   --   |

Winner — Approval Voting (single winner)
  Bob

Bob wins with 4 of 5. He is nobody's only choice, yet four of five voters approve him — the broadest support in the field, and the honest headline is exactly that: 80% of voters approve Bob, not a share of some contested denominator. Two further numbers come with every approval count, and they're the ones people forget to ask for:

  • The approval distribution — the strategy signal. How many candidates each ballot approved (here 9 approvals across 5 ballots, average 1.8 of 3). If most voters had bullet-voted — approved exactly one — the electorate would be behaving like Choose-One and the "approve as many as you like" freedom would have gone unused.
  • The co-approval matrix — the coalitions. Of the voters who approved the row candidate, the share who also approved the column candidate. It exposes structure the totals hide: Ann's approvers back Bob 67% of the time, while Cal's split evenly.

Both are unpacked on Approval Voting → reading a result. Want the whole count? → the full report: approval_101_c3_b5.md · run it yourself: .yaml · live on BetterVoting: ff6mk3 results ↗

How it compares

Choose-One Approval STAR
Ballot pick one approve any number (0/1) score each 0–5
Approve favorite and compromise?
Preference strength?
Order among the ones you like?
Spoiler / vote-splitting resistant? ✅ largely

(The fuller version of this table — the threshold decision, precinct-summability — is on the method page.)

Approval's virtue is simplicity: no ballot redesign, nothing to spoil (every combination of marks is a valid ballot), a trivial hand count, and it's precinct-summable on existing equipment — which makes it the cheapest reform to actually adopt, and a strong first step for anyone leaving plurality behind. Its ceiling is the binary ballot. The Black Curtain set makes the trade-off concrete: on identical ballots, Approval elects the broadly-approved consensus candidate while STAR's runoff hands the seat to the majority's favorite — same voters, different question.


The worked examples

Runnable elections, each isolating one idea. Tabulate any of them yourself.

Where What
Approval 101 — most approvals wins the full report for the election above — Bob takes 4 of 5 approvals without being anyone's only choice. A real BetterVoting election (ff6mk3), which agrees exactly (folder)
Multi-winner (bloc) Approval the same 0/1 ballot for several seats: top-N approved win. Three cases — the plain 3-seat count, the majority sweep (a 4-voter majority takes both seats and the minority gets nothing), and Lackner & Skowron's running example, where the proportional rules seat a different committee
Lackner & Skowron — approval and its shadow STAR the same profile run through the STAR family: Bloc STAR / Allocated Score / SSS all seat D, and only RRV recovers F, matching PAV
The Black Curtain the same five voters counted by Approval vs STAR vs RCV-IRV vs Score — Approval flips the winner in election 1
The BV Library a real BetterVoting approval election

The proportional approval rules the LH engine doesn't carry (SPAV, PAV, seq-Phragmén) run on the same YAML files through the abcvoting engine — they break the bloc sweep and give the minority its seat.

So does Satisfaction Approval Voting (SAV), by a different route: one vote per ballot, split evenly among your marks, so approving four gives each a quarter. On Brams & Kilgour's own ten-voter example it elects a committee with no candidate in common with bloc Approval's — and bloc STAR and Ranked Robin, run on the same electorate, both side with bloc Approval.

Where it stands on the criteria — Approval's pass/fail row beside STAR, Ranked Robin and RCV-IRV, each ✗ linked to a runnable election: Criteria at a glance. Where it has actually been used — papal conclaves, Venice and Greece long before anyone named it; Fargo and St. Louis recently, and Fargo's repeal in 2025: the record, from Wikipedia.

The three-option variantCombined Approval Voting (CAV) adds an explicit Against to the ballot: For (+1) / abstain (0) / Against (−1), highest net wins. It lives in 06_Other/ because it isn't an EVC method, but it belongs to this family, and it carries the sharpest lesson about what a blank is worth — CAV reads an unmarked row as the middle grade where every other score ballot here reads it as the lowest, and a runnable pair of elections shows the same twelve voters reversing end-to-end on that one word.

House rule: Approval ballots accept only 0/1; the engine errors on 0–5 scores under voting_method: Approval. A blank cell counts as not approved, and so does any of the five abstention markers- blank, ~ race abstention, & candidate abstention, ? spoiled, % spoiled and re-issued. The report echoes all of them as 0, and names the ones a file actually used in a legend beneath the ballots.

Conversation scripts: the Larry ↔ Adam series (STAR + RCV-IRV) is indexed in Conversation scripts — index.

file: README.md