FPTP
First-Past-The-Post
One vote, one winner per riding. Today's Canadian baseline.
How VoteLab works
VoteLab lets you explore how the results of both past and upcoming elections might change if we used a different voting system. For each election we model seven voting systems so that you can experience what voting would feel like under each one. Below we explain how we chose these systems and ballots, and how we estimate the results of past elections or calculate the results of upcoming ones from the ballots you cast. There are almost as many ways to vote as there are countries, but they fall into a few main families. We've focused on the kinds most commonly proposed for Canada.
VoteLab models seven different voting systems that represent distinct combinations of three main voting system attributes: whether they use single- or multi-member districts, whether they have “top-up” or compensatory seats at a regional level, and whether the ballot asks voters to rank candidates or just pick one. The grid below briefly explains each system, and the table below that shows which combination of attributes each has.
First-Past-The-Post
One vote, one winner per riding. Today's Canadian baseline.
Alternative Vote
Rank candidates in a single-member riding. One winner, by instant runoff.
List Proportional Representation
Vote for a party. Seats are allocated proportionally per district.
List PR with regional top-ups
List PR at the district tier, with regional top-up seats.
Single Transferable Vote
Rank candidates in a multi-member district. Multiple winners.
STV with regional top-ups
STV at the district tier, with top-up seats balancing the region.
Mixed-Member Proportional
A local representative plus a regional party top-up for proportionality.
Each system is defined by three yes/no choices.
| FPTP | AV | List PR | List PR+ | STV | STV+ | MMP | |
|---|---|---|---|---|---|---|---|
| Members per district | Single | Single | Multi | Multi | Multi | Multi | Single |
| Top-up seats? | No | No | No | Yes | No | Yes | Yes |
| Ranked ballot? | No | Yes | No | No | Yes | Yes | No |
An “AV+” system (MMP with a ranked ballot) is also possible and was recommended in the UK by the Jenkins Commission, but no group advocates it in Canada and it would behave much like MMP, so we don't model it.
The main distinction between voting systems is whether they use single-member districts (SMDs) or multi-member districts (MMDs) at the local level. Canada's current system uses SMDs: each province is divided into districts (ridings) of roughly equal population, and each elects one representative, an MP federally, or an MLA, MPP, or MNA provincially.
MMDs work the same way, except the districts are generally larger and elect more than one representative each. The two main MMD families are the Single Transferable Vote (STV, used in Ireland) and List Proportional Representation (List PR, common in Scandinavia). District sizes vary widely, from about 3–4 seats in Ireland to all of a country's seats in the Netherlands (100+). Given Canada's geography, most MMD proposals here suggest roughly 2–6 representatives per district.
The second distinction is whether a system adds extra seats, often called top-up seats, to compensate for gaps between a party's vote share and its seat share in the districts. When top-ups are added to SMDs, the system is usually called Mixed Member Proportional (MMP); New Zealand and Germany are key examples. When top-ups are added to MMDs, there's usually no special name. People speak of compensatory, levelling, or adjustment seats, as in Scandinavia.
For clarity, we mark systems that use top-up seats with a “+”, so STV+ and List PR+ are MMD systems with a regional top-up tier. (We could call MMP “FPTP+” by the same logic, but we keep the common name MMP.)
Some countries elect a second set of seats in parallel with the district seats, with no linkage between the two. These are called “parallel” systems. No one is advocating a parallel system for Canada, so we don't model one.
The final distinction is the ballot. There are two main kinds: one where you vote for a single candidate or party by marking an “X” (or a checkmark), and one where you rank more than one option. A few systems let you approve of several candidates at once, but these are less common, so we don't model that ballot.
Ranked ballots work in both single-member districts (ranking candidates across parties) and multi-member districts (ranking candidates within and across parties). The single-member version is often called the Alternative Vote (UK) or Instant-Runoff Voting (US); Australia uses it for its lower house. The multi-member version is the Single Transferable Vote, used in Ireland, parts of Australia, the Northern Ireland Assembly, and Scottish local councils.
In Scandinavia it's common to pick an individual from a party list by marking an “X”, often called Open List PR. (If you can only choose a party, not a candidate, it's Closed List PR.)
The following sections explain in more detail the assumptions and decisions we made in simulating election results based on votes cast in First-Past-The-Post elections. These sections are intended for people with reasonable familiarity with different voting systems and do not provide detailed tutorials for those in the early stages of learning about them. Please keep these caveats in mind if you read further.
Every voting system needs detailed design choices to fit a specific place: above all, the boundaries and population of each district. Normally an arms'-length electoral boundary commission (EBC) sets these through broad public consultation. In our simulations we start from the existing electoral boundaries, and build multi-member districts or regions by grouping today's ridings together.
We don't have the resources to consult the public the way a formal EBC would, so for every system we work from the existing riding boundaries. If Canada or a province adopted a new system, it would run a public EBC process to draw the final boundaries.
So treat the groupings we've modelled as indicative, not prescriptive. We believe they reasonably capture the key differences between systems, even if you'd draw some district or region boundaries differently.
For every system except FPTP and AV, we either pair adjacent ridings (MMP) or group several adjacent ridings (STV, List PR, STV+, List PR+). We try to respect natural geographic or administrative boundaries: for example, grouping all the seats in a city into a single multi-member district, or into several if the city is large enough.
For both MMP and the MMD systems, we occasionally leave a riding intact, usually where a province or region has an odd number of ridings. When top-ups are in play this has a negligible effect, because voters in an unrepresented single-member district can still gain compensatory representation through the top-up tier.
For MMP, STV+, and List PR+, we define local regions within each province (usually spanning several districts) over which the top-up seats are calculated. As with the districts, we try to respect natural boundaries: for example, in British Columbia we treat all the federal seats on Vancouver Island as one region.
We generally keep multi-member districts small, typically two to six seats, with the larger ones in urban areas. That's large enough that candidates from more than one party usually win in a district, but small enough to keep good geographic representation. A few very remote or expansive ridings are left on their own (for example, Labrador).
Regions are kept moderate too, usually 7–15 local seats, large enough that minority views in a region have a reasonable chance of representation, but not so large that a representative feels remote. We use the same regions for STV+ and List PR+, and mostly for MMP as well (pairing ridings for MMP occasionally forces a region's seat count to be odd, so a few pairings cross a region boundary).
For the same practical reason behind the 50/50 split in MMP, the top-up seats in our STV+ and List PR+ models are added on top of the existing seats. In principle any of these systems could be implemented without changing the total number of seats, but doing so would require boundary changes, a job for an EBC, not for us.
So we model STV+ and List PR+ with a small number of extra seats (about 10–15%). For the federal election, that means roughly 380 seats instead of the actual 343. If a system like this were adopted, an EBC would handle any boundary changes within whatever total the government set.
For FPTP and AV, we model each territory as a separate one-seat riding, as in the real election. For all PR systems (STV, List PR, MMP, STV+, and List PR+) we combine the three territories into a single three-seat "Territories" district, which makes multi-member tabulation possible.
In STV and List PR, all candidates from Yukon, the Northwest Territories, and Nunavut appear on one combined ballot; voters across all three territories rank or list-vote together for three seats. In MMP, each territory still elects its own local MP by FPTP/AV, but the three territories share a combined top-up calculation that produces one compensatory seat based on their combined party vote. The same shared top-up seat applies under STV+ and List PR+.
This combined district is not currently permitted under the Constitution of Canada, which guarantees each territory its own representation in Parliament. We model it here for illustrative purposes only.
In 2025 the Conservative Party won 35% of the vote across the territories but no seats under FPTP (two went Liberal, one NDP). A three-seat multi-member district gives parties with significant support across the territories a chance at representation, as does the shared MMP top-up seat.
Québec 2026 does not use regions we invented. It uses the nine regions set out in Loi 199, a bill before the National Assembly that would replace First-Past-the-Post with a mixed system: 80 members elected locally in constituencies, plus 49 allocated proportionally region by region, 129 in all, where the Assembly today has 127.
Loi 199 is a proposal. It is not law, and the election of 5 October 2026 is being held under First-Past-the-Post on the 127 divisions. We model it because it is a real, specific reform on the table in Québec, which is more useful than regions of our own devising.
Those nine regions govern every system we show for this election, not only MMP, so the multi-member districts and the top-up tiers are grouped the way the bill groups the province.
The regions and the seat allocation are the bill's. The grouping of divisions into constituencies is ours, built from Antony Hodgson's crosswalk, and is a plausible container rather than a legal boundary.
For all seven systems we use either a simple “mark an X” ballot (FPTP, MMP, List PR and List PR+) or a ranked ballot (AV, STV and STV+). The names on the ballot are the same for FPTP and AV, and the same again for List PR, List PR+, STV and STV+; only MMP's differ, because its local districts pair today's ridings. That means we can collect votes for all seven with two ranked ballots, and for the systems that don't use ranking we simply take your top choice.
AV and STV need to know more than who a voter put first. When the lowest candidate is eliminated, the count has to know who those voters would have ranked next. Our seeded results record only a first choice, because that is all an X-marked election ever produces, so the next preferences have to come from somewhere else. They come from a transfer matrix: a table saying what proportion of one party's voters name each other party next. When a party is eliminated, its votes move in those proportions.
For Québec 2026 that table is measured rather than assumed. Léger's poll of 11 August 2026, conducted for Le Journal de Montréal and TVA among 805 decided voters, asks respondents for their second choice and publishes the answers broken down by the party they support first. That cross-tabulation is exactly the shape a transfer matrix needs: each column of their table becomes one row of ours.
Among CAQ voters, 38% name the Liberals as their second choice, 25% the PQ, and 7% each the Conservatives and Québec solidaire. Among Liberal voters, 28% name the CAQ, 20% the Conservatives, 9% Québec solidaire and 6% the PQ. Among PQ voters, 25% name the CAQ, 19% Québec solidaire, 16% the Conservatives and 14% the Liberals. Among Conservative voters, 31% name the PQ, 22% the Liberals, 7% the CAQ and 2% Québec solidaire. Among Québec solidaire voters, 31% name the Liberals, 28% the PQ, 12% the CAQ and 4% the Conservatives.
Between a quarter and two-fifths of each party's voters name no second choice at all. We drop them and rescale the rest, which assumes they would have transferred in the same proportions as the people who answered. That is the largest assumption in the count, and it is the one to distrust first. Three smaller ones sit beside it: the same proportions are applied in every district, though second choices certainly vary by region; the Green Party is not offered in Léger's question, so its row is estimated from where it sits politically rather than measured; and the figures are a snapshot of one poll rather than a settled fact about the electorate.
None of this is a small technical detail. Before this table was available we used one calibrated from 2022 second-choice polling, when the CAQ was near 41% and was plausibly many voters' acceptable second choice. Applied to a 2026 electorate in which the CAQ has fallen to the low twenties, it handed the CAQ a majority under AV. The 2026 figures do not: they give no party a majority. A ranked count is only ever as good as its assumption about second preferences, which is why we publish the assumption rather than only the result.
Québec 2022 keeps its own 2022 matrix. Counting a past election with a later electorate's second choices would be a worse answer, not a fresher one.
In systems with top-up seats, you might expect a second ballot to decide who fills them. New Zealand and parts of Germany do exactly that: a separate party vote determines the compensatory seats. But that approach is often criticized for creating strategic dilemmas: if your party is likely to win locally, you might use your second vote for a similar party to grab extra representation.
A simpler, harder-to-game alternative, recommended by an expert working group to British Columbia's 2018 electoral-reform process, is to base the top-up seats on the same ballot used in the districts. That's what we do. For STV+ and List PR+ we use your first choice (STV) or only choice (List PR) to determine the top-up seats.
Loi 199 itself proposes a two-vote ballot: one for a constituency candidate, one for a regional party list, and for Québec 2026 MMP that is the ballot you cast. Your local vote and your party vote are asked separately, and only the second one decides the top-up seats. The simulated votes behind the result are a different matter: no poll reports how Quebecers would split a ticket they have never been offered, so the seeded counts still assume the local choice is also the party choice. That leaves out split-ticket voting, which in real mixed systems tends to help parties with no realistic local chance. Here the Conservatives and Québec solidaire win no constituency seat at all, so their seeded totals are best read as a floor rather than an estimate. Your own second vote moves the count away from that floor; the other voters in the seed cannot.
There are many ways to calculate how many top-up seats a party is owed. The goal is always the same: make each party's share of seats roughly match its share of votes. The key question is how to handle votes for parties too small to win a seat. Should they mostly help the largest parties, or be spread more evenly across all parties that did win seats?
We favour spreading them more evenly, so we use the Largest Remainder method with the Droop quota. For each region we take a party's total share of the vote and multiply it by the total number of seats in the region (districts plus top-ups), plus one, giving the number of seats that party has “earned.”
See a region's top-up seats worked through, in a riding you choose
Suppose a region has eight district seats (say two four-seat districts) and one top-up seat to allocate, and three parties win 47%, 35%, and 18% of the vote.
Multiply each share by 9 + 1 = 10: the parties have earned 4.7, 3.5, and 1.8 seats. Suppose they actually won 4, 3, and 1 seats in the districts. Subtracting those leaves remainders of 0.7, 0.5, and 0.8. The largest remainder belongs to the third party, so it takes the top-up seat, giving a final regional allocation of 4, 3, and 2 seats.
See this worked through on real numbers, in a riding you choose
Each result shows a “represented voters” figure: twenty figures, one for every 5% of voters, coloured by how each person's ballot ended up. Green means a voter helped elect a candidate they had a hand in choosing: dark green if their own first choice won, light green if their first choice lost but their vote transferred to help elect a later one. Orange means represented only through their party, a single-member winner they didn't rank, or a party-list or top-up colleague they didn't name. Grey means the vote helped elect no one.
For STV we work this out candidate by candidate, following the actual transfers rather than just asking whether a voter's party won a seat somewhere. A ballot counts as a first choice (dark green) only when the specific candidate it started with is elected; if that candidate is beaten and the vote moves on to help elect someone else, it counts as a lower choice (light green).
Real ranked ballots often list only a few names, so when a voter's whole party is knocked out, some of their ballots have no usable preference left and “exhaust”. They elect no one and count as unrepresented. Our synthetic transfers would otherwise always find another party to move to, overstating how many voters end up represented, so we treat a share of every cross-party transfer, currently one half, as exhausted. Like the second-choice patterns themselves, this is a deliberately cautious, adjustable assumption, not a measurement.
Every map view shows two figures we label DI, for disproportionality index. Both answer the same question (how far the seats a party won sit from the votes it received) and both are on a 0 to 100 scale where 0 means the seats match the votes exactly. As a rough guide, values around 5 are usually considered quite good, and values above 15 or 20 are considered highly disproportional.
The overall figure is the Gallagher index, the standard measure in the electoral systems literature. For each party we take the difference between its share of the vote and its share of the seats, in percentage points, square it, add those up across every party, halve the total, and take the square root. A party that wins votes but no seats contributes its whole vote share, which is most of what the measure is there to capture.
The regional figure exists because the overall one can hide a great deal. If one region is swept in one direction and another is swept in the opposite direction, the two cancel out and the national number looks mild. Canada’s 2025 federal election under First-Past-The-Post is exactly that case: 5.0 overall, and 23.5 once you look region by region.
So we also compute the index separately within each of the regions we group ridings into, and take the average across regions weighted by how many seats each region holds. This follows Byron Weber Becker (University of Waterloo), who defined the weighted regional index and applied it at the provincial level for federal elections; we apply it at the level of the regions we use for top-up seats. MMP is measured against its own regions, since its paired districts occasionally cross the boundaries the other systems use.
For all three top-up systems (STV+, List PR+, and MMP), we also decide which specific candidates fill the top-up seats, using the “best runner-up” rule: for each party awarded a top-up seat, we pick its candidate who got the most votes without already being elected. For STV+, a candidate's vote count is taken as the number they held when they were eliminated.
VoteLab handles two kinds of elections, and you can cast a ballot in both. Past elections start from real results; upcoming ones start from polls and shift toward the ballots visitors cast.
For a past election, like the 2025 Canadian federal election, we start from the actual results reported in each riding and map those votes onto the districts each system uses: the real ridings for FPTP and AV, the paired ridings and regions for MMP, and the multi-member districts and regions for the four STV and List PR variants. The MMP and MMD regions are usually very similar, differing only where a paired MMP riding crosses an MMD region boundary.
For the single-member districts (FPTP, MMP) and the List PR / List PR+ districts, we group every vote by party. FPTP and MMP winners are simply the top vote-getters; List PR winners come from applying the Largest Remainder rule and then taking each party's top candidates for the seats it wins.
Real elections don't use ranked ballots, so for the ranked systems we generate synthetic rankings, drawing on polls that ask voters for their second choices. This isn't a prediction of how people would really rank candidates. It's just a way to get a sense of how a ranked-ballot election might turn out. We then count those ballots with a standard STV count, using fractional surplus transfers when a winner exceeds the quota.
For the top-up regions, we use first preferences to calculate each party's earned seats, subtract the seats it already won in the districts, and award the top-up seats in order of largest remainder, reducing a party's remainder each time it wins one.
We don't fold your ballot into the count of a past election, but we can show you how your ballot would have counted and which candidates it would have helped elect, so you can feel what voting in that past election under a different system would have been like.
For an upcoming election, like Québec's provincial election scheduled for October 2026, we seed each district with a mix of province-wide party support (for the overall level) and the previous election result (for the patterns within each district). Where that province-wide support comes from, and the assumptions the seed rests on, are set out below.
Projection as of September 16, 2026. That is the date 338Canada stamped on the projection we set the baseline to, not the date you are reading this. If 338 does not update, the baseline stays exactly where it is.
The provincial party standing behind this baseline is 338Canada’s published projection, used with attribution. It is a projection, not a poll average: 338Canada (Philippe J. Fournier) combines published polls with its own house-effect corrections and trend modelling. VoteLab is not affiliated with 338Canada, and 338Canada does not endorse VoteLab. The seat results here remain a simulation of how votes would translate into seats under each system, not a prediction of the election.
| Polling firm | Fieldwork ended | Sample |
|---|---|---|
| Nanos Research | September 14, 2026 | 485 |
| Léger | September 13, 2026 | 1,013 |
| Mainstreet Research | September 13, 2026 | 2,047 |
| Research Co. | September 13, 2026 | 705 |
| Synopsis | September 13, 2026 | 1,000 |
| Pallas Data | September 12, 2026 | 1,085 |
| Léger | September 6, 2026 | 1,008 |
| Pallas Data | September 5, 2026 | 1,100 |
| Léger | August 30, 2026 | 1,008 |
| Pallas Data | August 29, 2026 | 1,108 |
| Synopsis | August 26, 2026 | 1,009 |
Party support the baseline is set to, from 338Canada’s projection
For comparison, our own aggregate of published polls as of September 14, 2026, which the baseline is not set to
What this assumes
Source: 338Canada — Québec popular-vote projection (Philippe J. Fournier) · Wikipedia — 2026 Quebec general election (Liaison Strategies, Léger, Mainstreet Research, Nanos Research, Pallas Data, Research Co., Synopsis)