Direct–Compensatory Representation

What if 2024 had been counted differently?

A proposed UK voting system keeps local MPs but tops up each region so seats track votes. We re-ran it from scratch on the official 2024 results. This page explains the idea, lets you change the settings yourself, and says plainly where it is strong and where it is not.

63%of seats won by Labour in 2024 (411 of 650) on 33.7% of the vote
5seats for Reform UK on 14.3% of the vote under first-past-the-post
234Labour seats under the proposal on the same votes, 92 short of a majority

The problem it tries to solve

In a first-past-the-post election, each constituency elects whoever has the most votes, and the national result is just the sum. Votes for losing candidates have no effect on the outcome, so seat shares can drift a long way from vote shares. In 2024 they drifted a long way:

Share of votesShare of seats

Political scientists summarise this gap with the Gallagher index: 0 means seats exactly match votes, and higher means a bigger mismatch. For 2024 under first-past-the-post it is about 23.8, or 23.2 if you leave out the small parties and independents that can’t be represented in the model. We computed both from the official results.

How the proposal works

The Green Paper behind this site proposes Regional Direct–Compensatory Representation. It uses a single vote, as now, and three steps:

  1. Divide the country into the 12 regions (England’s nine, plus Scotland, Wales and Northern Ireland). Each gets a fixed number of seats, 650 in total. About half are ordinary local constituencies, roughly twice the size of today’s.
  2. Vote as normal. You vote for one local candidate. Whoever tops the poll in each constituency wins that seat outright.
  3. Top up the region. Add up each party’s votes across the region to work out how many seats it “deserves”. Parties with fewer local wins than that receive extra seats, awarded to their best-placed candidates who didn’t win locally, until the region’s seats are all filled. Parties below a minimum vote share (the proposal uses 3%) don’t qualify for top-ups.

Because the top-up is calculated from the same single vote, there’s no second ballot to game. That is the main design difference from the German-style systems this resembles.

What this page is not Nobody has drawn the 327 new constituencies. The “local seats” in these runs are scenario assumptions based on who won in 2024. Part of the finding is that the national result barely depends on those assumptions, because the top-up absorbs the differences. It is also a static counterfactual: it applies the new rules to votes cast under the old ones. Voters would behave differently, so treat this as an illustration, not a forecast.

Try it yourself

This runs the allocation in your browser on the corrected 2024 regional vote totals. Move the sliders and watch the 650 seats change. Every square is one seat.

Minimum share of a region’s vote a party needs to receive top-up seats.
Central: the paper’s hand-set local wins. Neutral: 2024 local wins scaled to fit by a fixed rule.
–seats for the largest party
–seats short of a 326 majority
–Gallagher index (small parties & independents counted)
–Gallagher index (excluding that residual)
–local / top-up seats

Votes to seats, by party

Share of votesShare of seats

Look inside one region

What the independent re-run found

We rebuilt the model from scratch: new data path, new code written only from the paper’s written description, and a tougher robustness test. The votes come from the House of Commons Library’s corrected 2024 results file for all 650 constituencies. We checked it totals exactly 28,809,340 valid votes and that every party’s national total matches the published figure.

PartyVote shareFPTP 2024Proposal, 5%Proposal, 3%
Labour33.7%411234233
Conservative23.7%121160160
Reform UK14.3%59696
Liberal Democrat12.2%727878
Green (all)6.75%44144
SNP2.5%91716
Plaid Cymru0.7%454
NI parties & Speaker2.6%181919
Independentsin “others”600

Using the Green Paper’s own central local-seat scenario. NI parties and Speaker: SF, DUP, Alliance, UUP, SDLP, TUV plus the Speaker. The Greens gain at 3% because the Scottish and Welsh Greens then qualify, at the expense of one seat each for Labour, the SNP and Plaid.

The main results

The full method, sensitivity tables and every number are in the report, and the code and data are published so you can check them.

Two models, one conclusion

This site rests on a comparison of two independent builds: the original Green Paper model and an audit, and a separate re-run built without using its code or its transcribed data. Where two different builds agree, that’s better evidence than either alone.

Where they agree
  • All twelve regional lists of 2024 winners match the official file exactly.
  • Eleven of twelve regions give identical results on the same local-seat scenario.
  • The formula’s mechanics (the Speaker, thresholds, overhang) behave as documented.
  • Threshold and split sensitivities point the same way.
  • The robustness property survives a harder test.
Where they differ
  • One seat nationally: Labour 234 / Con 160 on the corrected data, against 233 / 161 published. The Green Paper’s North West totals are about 25,000 Labour votes short of the official file.
  • The audit’s North East “correction” doesn’t match the current official edition. The original figures were right.
  • The Green Paper’s 3% and ratio tables can’t be reproduced from its own central scenario.
  • Disproportionality figures depend on whether the small-party residual is counted, and the paper doesn’t say which it used.
Verdict The two builds reinforce each other on everything about the mechanism. The disagreements all trace to input data and bookkeeping, not to the design. The headline result changes by one seat. We would still regenerate every published table from the corrected data before quoting it.

Would it suit the UK?

The numbers above can say what the system does. Whether it is a good idea is partly a matter of values, so we separate what we can show from what we can only argue.

As an electoral system in general

Strengths
  • Seats closely track votes among parties above the threshold.
  • Every constituency still has a local MP.
  • One vote means no second ballot to exploit. Some two-vote hybrid systems have been gamed by parties running decoy lists, as in Albania’s 2005 election.
  • The chamber stays at exactly 650 seats. Some German-style systems grow when parties win more local seats than their share.
  • Little incentive to redraw boundaries for advantage, since the top-up absorbs the effect.
Weaknesses
  • Independents are effectively shut out of top-up seats.
  • Ranking top-up candidates by vote percentage favours candidates from safe seats with few rivals. It brings back some of the geography the system is meant to neutralise. Ranking by raw votes, or a short party list, are common fixes.
  • The seat-by-seat rounding rule can move a seat between parties. A standard divisor method would be easier to defend.
  • Threshold choices carry real stakes: 3% versus 5% shifts five seats among four parties.
  • Voters can’t back a local candidate from one party and a different party for the top-up.

For the UK specifically

Our overall read As engineering, the design is sound and now checked twice: proportional, hard to game, and robust to boundary choices. Its weak points (candidate ranking, rounding rule, independents) can be fixed without changing the architecture. As a UK proposal, the honest summary is permanent coalition politics, much larger constituencies, and three technical settings (threshold, ranking rule, regional split) that quietly decide who governs and so belong in the public argument.

Data, code and checking our work

Everything is published so you can reproduce it. All vote counts come from the House of Commons Library’s 2024 general election results (corrected edition, changes logged to 5 January 2026).

FileWhat it is
rdcr_independent_report.mdFull report: our results, the two-model comparison, suitability analysis
rdcr_independent_reproducibility.pySelf-contained Python script; run it to reproduce every number
rdcr_independent_model.xlsxWorkbook: regional votes, allocation by region, national summary, sensitivity
uk_ge2024_regional_votes_reconciled.csvReconciled votes for the twelve regions
ge2024_by_constituency_reconciled.csvThe 650-row constituency file the regional totals are built from
rdcr_independent_results.csvSeats by region at 5% and 3%
data/model-data.jsonThe data this page’s interactive runs on
assets/engine.jsThe allocation engine used above (JavaScript); checked against the Python results
Known limits Local-seat inputs are scenario assumptions, not real constituencies. The model applies new rules to old votes. Direct comparison with published disproportionality figures needs the residual convention stated. Where we’ve made a choice (for example, splitting NI minor parties out of the Library’s “other candidates” column using their official national totals), the method notes in the script say so.