Ranked Choice Voting (STV)
Run proportional elections where voters rank candidates by preference. VoteAlly uses the Single Transferable Vote algorithm with Droop quota counting to fill multiple seats fairly.
What is Ranked Choice Voting (STV)?
In a traditional election, voters pick one candidate (or a fixed number). The candidates with the most votes win. This works fine for simple contests, but it can produce skewed results when multiple seats are being filled or when many candidates split the vote.
Ranked Choice Voting (also called the Single Transferable Vote or STV) solves this by letting voters rank candidates in order of preference: 1st choice, 2nd choice, 3rd choice, and so on. Instead of a single count, votes are tallied in multiple rounds. Candidates who reach the winning threshold are elected, and their surplus votes transfer to voters' next preferences. The weakest candidate is eliminated each round, and their votes also transfer. This continues until all seats are filled.
The result: more proportional representation, fewer "wasted" votes, and outcomes that better reflect the collective preferences of your membership.
Common use cases: Board of Directors elections, committee appointments, multi-seat officer elections, and any vote where you need to fill two or more positions from a pool of candidates.
How STV Works in VoteAlly
VoteAlly implements the Droop quota method with the Weighted Inclusive Gregory Method for surplus transfers. Here is exactly how the count works:
Step 1: Calculate the Droop Quota
The quota is the minimum number of votes a candidate needs to be elected. It is calculated once at the start using the total weighted vote count and the number of seats:
For example: 100 voters electing 3 seats produces a quota of floor(100 / 4) + 1 = 26. A candidate needs 26 votes to win a seat.
Step 2: Count First Preferences
In Round 1, each ballot is assigned to the voter's first-ranked candidate at full weight. If the voter has a vote weight greater than 1 (weighted voting), that weight applies. The system totals each candidate's weighted votes and checks them against the quota.
Step 3: Elect or Eliminate
At the end of each round, one of two things happens:
The candidate is elected. Any votes above the quota (the "surplus") are transferred to voters' next preferences at a reduced weight using the Gregory Method. The transfer fraction is:
fraction = surplus / candidate's total
Each ballot contributing to the winner has its weight multiplied by this fraction, then moves to its next-ranked hopeful candidate.
The candidate with the fewest votes is eliminated. All ballots currently assigned to that candidate transfer at their full current weight to each voter's next-ranked candidate who is still in the race.
If a ballot has no more ranked candidates remaining, it becomes exhausted and is removed from the count.
Step 4: Repeat Until All Seats Are Filled
The count continues round by round. Each round either elects a candidate (with surplus transfer) or eliminates the weakest candidate (with ballot redistribution). The process stops when all seats are filled, or when the number of remaining candidates equals the number of unfilled seats (in which case those candidates are auto-elected).
Tiebreaking at Elimination
When two or more candidates are tied for the fewest votes, VoteAlly applies this tiebreaking sequence:
- First-preference count: The candidate with the fewest first-preference votes is eliminated.
- Backwards tiebreaking: The system looks at each previous round (from most recent to earliest) to find a round where the tied candidates had different totals. The one who was lowest is eliminated.
- Deterministic selection: If the tie persists through all rounds, one candidate is eliminated deterministically (by internal ID order). The results are flagged with a tie indicator so administrators know this occurred.
Worked Example: 3 Seats, 5 Candidates, 100 Voters
Quota = floor(100 / 4) + 1 = 26
| Round | Alice | Bob | Carol | Dave | Eve | Action |
|---|---|---|---|---|---|---|
| 1 | 35 | 22 | 20 | 15 | 8 | Alice elected (surplus of 9 transferred) |
| 2 | -- | 24.3 | 23.5 | 17.1 | 9.1 | Eve eliminated (9.1 votes redistributed) |
| 3 | -- | 28.8 | 25.2 | 19.0 | -- | Bob elected (surplus of 2.8 transferred) |
| 4 | -- | -- | 26.1 | 19.9 | -- | Carol elected (meets quota) |
Winners: Alice (Round 1), Bob (Round 3), Carol (Round 4). Dave is not elected. Note how Alice's surplus votes transferred to other candidates in Round 2, and Eve's eliminated votes kept the count moving in Round 3.
Setting Up an STV Election
Create a voting session
Create a new session (Live Meeting or Scheduled Election) and navigate to the Questions tab. STV works with both session types, including sessions with early voting enabled.
Select "Ranked Choice Election" as the question type
When adding a new question, choose "Ranked Choice Election" from the type dropdown. This enables the STV-specific configuration fields and the ranked ballot interface for voters.
Set the number of seats (winners)
Enter how many candidates will be elected. This number directly affects the Droop quota: more seats means a lower threshold per winner. For a single-winner ranked choice election, set seats to 1.
Configure maximum rankings per voter
Set the maximum number of candidates a voter can rank. Setting this to the total number of candidates allows full rankings. A lower number allows partial rankings, which can simplify the voter experience but may increase the number of exhausted ballots.
Set minimum rankings required
The minimum number of candidates a voter must rank before submitting. Set to 1 to allow partial rankings (a voter can rank just their top choice). Set higher to encourage deeper preference expression.
Add your candidates
Add candidate names and optional bios or photos. You need more candidates than seats for a meaningful STV election. An "Abstain" option is automatically appended for voters who wish to abstain. Abstain ballots are excluded from the STV count.
Open voting and close when ready
Open the question for voting. Once all voters have participated (or the deadline passes), close the question. VoteAlly automatically runs the STV algorithm and displays the round-by-round results.
Tip: If you have the same number of candidates as seats, all candidates are automatically elected in Round 1 without needing multiple counting rounds. This is by design, but it means the STV process does not add value in that scenario. Aim for at least 2 more candidates than seats.
The Voter Experience
When a voter opens a ranked choice question, they see a list of candidates with a tap-to-rank interface. Here is how it works:
Ranking candidates
Voters tap or click on a candidate to assign them the next available rank. The first candidate tapped becomes rank 1, the second becomes rank 2, and so on. Each ranked candidate displays a numbered badge showing their position in the voter's preference order.
Removing a ranking
Tapping on a ranked candidate removes them. All subsequent rankings automatically shift up to fill the gap. For example, if a voter removes their 2nd choice, the 3rd choice becomes 2nd, the 4th becomes 3rd, and so on.
Ranking limits
The header shows how many rankings the voter has selected out of the maximum allowed. Once the maximum is reached, unranked candidates are dimmed and cannot be selected until the voter removes an existing ranking. The voter must rank at least the minimum number of candidates before they can submit.
Abstain option
An "Abstain" option appears at the bottom of the candidate list. If a voter selects Abstain, all other rankings are cleared. Abstain ballots are excluded from the STV count entirely so they do not affect the quota or the outcome.
Confirmation step: Before submitting, voters see a confirmation dialog showing their complete ranking order (1st, 2nd, 3rd, etc.) with candidate names. This gives them a final chance to review before their ballot is recorded.
Understanding Results
Once a ranked choice question is closed, VoteAlly runs the STV algorithm and presents a detailed round-by-round breakdown. Here is what each part means:
Round-by-round table
Each round shows the weighted vote total for every candidate still in the race. Elected candidates are highlighted, eliminated candidates are marked, and the action column describes what happened (election with surplus transfer, or elimination with redistribution).
Quota line
The Droop quota is displayed at the top of the results. Any candidate whose vote total meets or exceeds this number is elected.
Exhausted ballots
The total weight of exhausted ballots is shown for each round. A ballot becomes exhausted when all of its ranked candidates have been either elected or eliminated. Exhausted ballots cannot influence later rounds.
Transfer values
When a candidate is elected with surplus votes, the action description shows the surplus amount. The transfer fraction (surplus divided by the candidate's total) determines how much weight each contributing ballot carries to its next preference. VoteAlly rounds to 6 decimal places to keep calculations precise.
Tie indicator
If any elimination round required arbitrary tiebreaking (where all prior rounds also showed a tie), the results are flagged with a tie indicator. The tied candidates are listed so administrators can determine whether a re-vote is warranted.
Exporting STV Results
When you export results for a session that includes ranked choice questions, VoteAlly generates a detailed CSV with round-by-round data. The export includes:
| Column | Description |
|---|---|
| Status | The round number (e.g. "Round 1"), or "Summary" for aggregate rows |
| OptionName | The candidate name, plus their status in that round (elected, eliminated, or hopeful) |
| Votes | The candidate's weighted vote total for that round |
| Percentage | The round's action description (election with surplus, elimination, or auto-elect) |
| Summary rows | Final rows showing the quota value, list of winners, and total exhausted weight |
Note: The round-by-round export is only generated for closed ranked choice questions. If the question is still open, the export shows standard aggregate data. Close the question first to trigger the STV count and generate the detailed breakdown.
Frequently Asked Questions
What happens if there is a tie during elimination?
VoteAlly uses a multi-step tiebreaking process. First, it checks which tied candidate had the fewest first-preference votes. If that does not break the tie, it looks backwards through previous round totals to find when the candidates last had different vote counts. If the tie persists through all rounds, one candidate is selected automatically and the results are flagged as containing a tie so you can decide whether a re-vote is needed.
Can I use STV with weighted voting?
Yes. Each ballot carries the voter's assigned vote weight into the STV count. The Droop quota is calculated from total weighted votes, not the number of ballots. Surplus transfers and eliminations all operate on weighted values, so proxy votes and weighted memberships are fully supported.
How many candidates should I have for an STV election?
You should have more candidates than seats to fill. If you have the same number of candidates as seats, all candidates are automatically elected in Round 1 without multiple counting rounds. For meaningful results, aim for at least 2 more candidates than seats. For example, an election for 3 board seats should have at least 5 candidates.
What is the difference between STV and a regular election?
In a regular election, voters pick one or more candidates and the candidates with the most votes win. In STV, voters rank candidates by preference. Winners are determined through multiple rounds using the Droop quota, surplus transfers, and elimination. STV produces more proportional results and reduces "wasted" votes because second and third preferences still influence the outcome.
What happens to ballots that rank a candidate who gets eliminated?
When a candidate is eliminated, every ballot currently assigned to them transfers at its full current weight to the voter's next-ranked candidate who is still in the race. If the ballot has no more ranked candidates remaining, it becomes exhausted and exits the count.
What is the "Weighted Inclusive Gregory Method"?
It is the method VoteAlly uses to transfer surplus votes when a candidate is elected above the quota. Instead of randomly selecting which ballots to transfer, the Gregory Method transfers ALL ballots contributing to the winner, but at a reduced weight. The transfer fraction is: surplus divided by the candidate's total. This is fairer and more consistent than random ballot selection.
Can voters submit a partial ranking?
Yes, if you set the minimum rankings to less than the maximum. A voter who ranks only their top 2 choices (when 5 are allowed) will have a valid ballot, but it may become exhausted sooner in later rounds if both of their ranked candidates are eliminated or elected.
What does "exhausted" mean?
A ballot becomes exhausted when all of its ranked candidates have been either elected or eliminated. An exhausted ballot can no longer influence the count. If many ballots exhaust early, it may indicate that voters should be encouraged to rank more candidates. The total exhausted weight is reported in the results.
Last updated: April 2, 2026