Post-mortem · 2026 English Local Elections
How PollCheck's 2026 projections performed
A full audit of our pre-election projections against the declared results.
- Summary
- Headline numbers
- Vote-share accuracy
- Implied vote share per council
- Per-council seat accuracy
- Multi-member ward seat splits
- Where the model worked
- Where the model missed
- Accuracy by council type
- London-specific accuracy
- Why some headlines say Lab −1,500 and we say −1,235
- Methodology recap
- Data sources and acknowledgements
- Appendix: all 136 councils ranked
Summary
Broadly, the model performed well and fell within backtest expectations on its first real test. In many ways it outperformed expectations, dealing with the Reform and Green surge that was missing from historical data.
The seat MAE per party was 45 across the five main parties plus Others (which includes Independents and localist parties), with a Conservative miss of 127 underestimated being the largest single party seat error.
At the council level, the per-council seat MAE averaged 2.29 across the 136 voting councils, with a median of 1.67. Just over half of councils came in at 2.0 or less; only 11 had a per-council MAE of 5 or more.
Council Control accuracy was 80.9%, above backtesting benchmarks.
Most seat errors were the result of three geographic and demographic patterns. In metropolitan boroughs, previous Labour strongholds crumbled at a greater rate than anticipated, and Reform picked up 121 more seats here than I projected.
In Outer London, Conservative incumbency and defence was underestimated, while in inner London, Green performance was slightly underestimated. Reform was overestimated throughout London, while Labour defence in London was well projected.
Green strength was underestimated in young university towns like Manchester, where demographic modelling perhaps needs additional updating.
1. Headline numbers
The projection of record is the one I published on 6 May 2026, the day before polls opened. The polling basis was Reform 26.6, Labour 18.6, Conservative 18.4, Green 15.7, Liberal Democrats 11.6, Others 5.5. The model converts that into a projected national share and applies it to ward-level baselines from each council's last fought election.
Here are the contested-seat totals I projected, the seats actually won, and the per-party error.
| Party | Defending | Projected | Won | Error |
|---|---|---|---|---|
| Reform UK | 69 | 1,476 | 1,453 | +23 |
| Labour | 2,303 | 1,116 | 1,068 | +48 |
| Liberal Democrat | 707 | 836 | 844 | −8 |
| Conservative | 1,230 | 674 | 801 | −127 |
| Green | 184 | 638 | 587 | +51 |
| Others | 538 | 294 | 281 | +13 |
| Total | 5,031 | 5,034 | 5,034 | 270 abs |
Won totals are contested seats only (held-over thirds excluded), 5,034 declared of 5,046 expected (12 seats outstanding from 7 postponed wards). Defending baseline is "current holders" the day before polls opened, including by-election results and councillor defections.
Reform, Labour, Green and Others all came in below my projection, by between 13 and 51 seats. Lib Dems went 8 above. Conservative was the major under-projection at 127 seats: 674 projected, 801 won.
Projection error and how baselines shift it
PollCheck's projection error is one set of numbers: the gap between the seats I projected and the seats each party actually won. That gap is consistent across every results source.
| Party | Projected end-state | Actual end-state | Error |
|---|---|---|---|
| Conservative | 674 | 801 | −127 |
| Labour | 1,116 | 1,068 | +48 |
| Reform UK | 1,476 | 1,453 | +23 |
| Liberal Democrat | 836 | 844 | −8 |
| Green | 638 | 587 | +51 |
| Others | 294 | 281 | +13 |
| MAE | 45.0 | ||
| RMSE | 60.3 |
Two conventions are used to calculate net changes:
- Polling-day baseline. Each party's seat count the day before the election, after defections and by-elections since the last comparable election are factored in. PollCheck uses this. The Guardian reports a Labour change of −1,193, consistent with a polling-day baseline around 2,300.
- Last-election baseline. Each party's seat count immediately after the previous comparable election (2022 for most councils). BBC uses this. BBC reports a Labour change of −1,496, consistent with a 2022 baseline of 2,564.
The 261-seat gap between conventions for Labour (2,303 vs 2,564) is the seats Labour lost to defections and by-elections between 2022 and 2026.
Running RMSE on PollCheck's polling-day change figures against an aggregator's last-election change figures mixes the two and produces a much larger number. Values below are calculated across the five major parties (Con, Lab, Ref, LD, Green), matching the convention used in Mark Pack's published forecaster table:
| Aggregator | Baseline convention | RMSE on PollCheck's published changes |
|---|---|---|
| Guardian | Polling-day | 65.8 |
| BBC | 2022 election | 140.2 |
Labour drives almost the entire gap. Compared with BBC's −1,496, PollCheck's −1,187 looks 309 seats off. The end-state miss is 48; the rest is the baseline gap. Against Guardian's −1,193 the error is 6.
Change-figure RMSE depends on which baseline a forecaster used and which one the aggregator used. End-state seat counts sidestep both.
Confidence interval coverage
The 6 May projection included 80% confidence intervals on each party's end-state seat count. The actual result for each of the six parties landed inside its interval.
| Party | Projection | 80% interval | Actual |
|---|---|---|---|
| Labour | 1,116 | 915 to 1,357 | 1,068 |
| Reform UK | 1,476 | 1,063 to 1,787 | 1,453 |
| Liberal Democrat | 836 | 667 to 921 | 844 |
| Conservative | 674 | 589 to 901 | 801 |
| Green | 638 | 460 to 867 | 587 |
| Others | 294 | 261 to 322 | 281 |
Across six parties, none of the actual results fell outside the 80% intervals. With proper 80% calibration we'd expect about one to fall outside, so zero suggests the intervals may have been slightly too wide, though six parties is too few to say for sure.
Lib Dem was the tightest call: 836 projected, 844 won. Conservative had the biggest gap between projection and actual, at 127 seats, but the actual of 801 still sat inside the 901 upper bound. The interval was right to allow for that level of Conservative resilience even when the point estimate didn't.
If I tune the intervals for next cycle, Reform and Green could be narrower; both finished mid-interval or below. Conservative's wider range was useful and worth keeping.
Chart · Per-party seat accuracy
Projected vs actual contested seats won, by party
Each line connects the seats I projected on 6 May (left axis) to the seats actually won on 7 May (right axis). Steeper slope = bigger miss. Five parties trend downward (I over-projected); Conservative trends sharply upward (I under-projected).
2. Vote-share accuracy
Across 2,951 wards with full-slate per-party vote totals, the all-party mean absolute error in vote share was 5.19 percentage points. RMSE was 7.86pp.
| Party | MAE (pp) | RMSE (pp) |
|---|---|---|
| Liberal Democrat | 4.19 | 6.73 |
| Green | 5.48 | 7.56 |
| Labour | 5.51 | 7.70 |
| Conservative | 5.91 | 8.28 |
| Reform UK | 6.82 | 9.01 |
| Others | 3.23 | 7.68 |
| Overall | 5.19 | 7.86 |
Reform's 6.82pp MAE was the highest of the five major parties. The model tracked Reform's national share, but ward-by-ward variation around that share was wider than for any other party.
The distribution of per-ward total errors:
| Percentile | Per-ward MAE (pp) |
|---|---|
| Median (50th) | 4.71 |
| 75th | 6.48 |
| 90th | 8.71 |
| 99th | 14.24 |
Half of all wards came in under 4.7pp average per-party error; only 1% exceeded 14.2pp.
Chart · Per-ward vote-share error
Distribution of per-ward mean absolute error (MAE)
Each bar is the count of wards whose mean per-party error in vote share fell within that bin. 2,951 wards with full-slate vote totals.
3. Implied vote share per council
The model publishes a pre-election projected council-wide vote share per party for every contested council. Comparing each council's projection against its actual aggregate vote share gives a per-council accuracy measure.
Across 136 councils with comparable full-slate vote data, the per-party council-level MAE:
| Party | MAE (pp) | RMSE (pp) |
|---|---|---|
| Liberal Democrat | 2.11 | 2.93 |
| Others | 1.70 | 2.67 |
| Labour | 2.51 | 3.27 |
| Green | 2.72 | 3.50 |
| Conservative | 3.75 | 5.50 |
| Reform UK | 3.96 | 5.25 |
| Overall | 2.79 | 4.01 |
Conservative and Reform are the highest-error parties at council level, matching the ward-level pattern. Lib Dems are the tightest, with most council projections within 2.1pp of actual.
Chart · Projected vs actual vote share per council
Per-party projected vs actual vote share across 136 councils
Each panel is one party. Each dot is one council, plotting the projected vote share (x-axis) against the actual vote share (y-axis). The dashed diagonal is a perfect projection. London boroughs are highlighted in the party colour; non-London councils are grey.
Chart · Per-council vote-share accuracy
Five most accurate and five least accurate councils on vote-share MAE
Per-council mean absolute error in vote share across six parties (weighted by ward turnout). Bars share a 0-12pp scale.
4. Per-council seat accuracy
The headline figures in section 1 measure how close the projection came at the national level. The per-council seat MAE measures how close it came inside each council: the average difference between projected and actual seats per party, across the six parties, for each of the 136 voting councils. A council with a per-council seat MAE of 1.0 had its projection out by one seat per party on average. The mean across all 136 councils was 2.29, the median 1.67.
The distribution is skewed towards small errors. Just over half of councils (79 of 136) had a per-council seat MAE of 2.0 or less. Only 11 councils had an MAE of 5 or more. The worst performer, Norfolk, came in at 11.33 - the model under-projected Reform in the county wards by a wide margin and over-projected both Conservative and Independent retentions. The best performer, Hastings, came in at zero: every party's seat count matched exactly.
Chart · Per-council seat error
Distribution of per-council seat MAE
Each bar is the count of councils whose mean per-party seat error fell within that bin, full-council basis. 136 councils.
5. Multi-member ward seat splits
About 2,950 wards held contested elections on 7 May, producing 5,034 contested seats. Of those wards, around 1,230 elected 2 or 3 councillors on a single ballot. The biggest contributor of multi-member wards is London: almost every ward across all 32 London boroughs is multi-member, accounting for about 670. Metropolitan boroughs add another 360, mostly from the all-out boundary-changed councils (Birmingham, Bradford, Sunderland, Newcastle, others). Unitaries add around 145 and districts another 70. The model uses a rule-based allocation to decide how those seats split between parties (rule set out in full in the methodology document).
The rule backtested at 80% per-seat on 2022-2025. In 2026 it landed at 71% per-seat. Per-ward, 47% of the 1,230 multi-member wards matched the actual seat split exactly.
The dominant one-seat miss is over-distribution: the rule gave one seat to a runner-up where the leading party in fact swept. Most of these were close to the 40% slate-sweep threshold, with the leading party clearing it on the day.
6. Where the model worked
Calls worth flagging
- Westminster. Called as a Conservative majority on 32 seats. Conservative won exactly 32 seats, a 59% outright majority. The three London MRPs published before the election (JL Partners, More in Common, YouGov) had all put Labour ahead on vote share by between 5 and 11 points.
- Birmingham. Reform largest in an all-out election. Projected 24 Reform seats; Reform won 23, largest party in no-overall-control.
- Hammersmith and Fulham. Labour majority projected on 38 seats. Labour won 38.
- Walsall. Reform majority projected at 42 seats. Reform won 40.
- Newcastle-under-Lyme. Reform majority projected at 28 seats. Reform won 27.
Liberal Democrats. Smallest single-party seat error at 8 (836 projected, 844 won). I called Sutton, Kingston upon Thames, Richmond upon Thames, South Cambridgeshire and Cheltenham as Lib Dem majorities; all held.
Inner-London Greens. I correctly called Hackney and Lewisham as Green majorities.
Most accurate single council. Hastings, per-party seat error of zero. Eight other councils came in within a third of a seat per party (Cheltenham, Colchester, Hart, Hartlepool, Hyndburn, North East Lincolnshire, Watford, Winchester).
7. Where the model missed
Conservative under-projection (largest single-party error)
I projected 674 contested Conservative seats. They won 801. The 127-seat under-projection is the largest single-party error in the table.
The pattern across the council-level data: I applied the national Conservative-to-Reform swing too uniformly. In shire districts where Conservative incumbents held a strong personal vote, the Con vote held in the high 20s or low 30s, but I'd already moved that ground to Reform. The same under-projection hit outer-London Conservative councils: Bexley finished a Conservative majority on 29, Bromley a Conservative majority on 35, both of which I'd called as no-overall-control with Reform leading.
Labour over-projection (48 seats)
I projected 1,116 Labour seats. Labour won 1,068. The 48-seat over-projection sits in two places: inner-London boroughs where I under-rated Green strength at ward level, and marginal northern districts where Reform took more Labour seats than the national swing implied.
Leading-party misses
The five councils where the model named the wrong leading party.
| Council | Predicted leader | Actual leader | Miss |
|---|---|---|---|
| Bexley | Reform (21 seats) | Conservative (29, outright) | Reform finished third on 7 seats. Conservative incumbency held. |
| Bromley | Reform (21 seats) | Conservative (35, outright) | Same pattern as Bexley; Reform finished on 6 seats. |
| Sandwell | Labour (majority, 50) | Reform (majority, 41) | The Labour-to-Reform swing in the West Midlands was sharper than projected. |
| Bradford | Green (21 seats) | Reform (29, largest in NOC) | Greens won 7. The boundary-changed map produced more Reform and Conservative strength than the rebuilt baselines implied. |
| Portsmouth | Reform (20 seats) | Liberal Democrat (22, largest in NOC) | Reform finished second on 12 seats; Lib Dem ground was stronger than the model assumed. |
Chart · Best and worst-projected councils
The five most accurate and five least accurate councils
Each council's per-party seat MAE is the mean absolute error across the six parties (projected seats minus actual). Bars share a 0-12 scale so the spread between best and worst is directly visible.
Greens slightly over-projected
638 projected, 587 won. A 51-seat over-projection. The Green model worked in target councils but applied too much uplift where ward-level history didn't support that level of Green vote, particularly in some county-council divisions outside known Green concentrations.
Postponed wards
Twelve seats from seven wards were postponed under the candidate-death rule in the Representation of the People Act 1983. A small number weren't flagged in the projection output even though I knew about the postponements before polling day, leaving a handful of phantom projected seats in the headline numbers.
8. Accuracy by council type
| Type | Councils | Control accuracy | Avg seat MAE |
|---|---|---|---|
| District | 48 | 87.5% | 1.28 |
| Metropolitan borough | 32 | 84.4% | 2.81 |
| County council | 6 | 83.3% | 5.03 |
| Unitary authority | 18 | 77.8% | 2.67 |
| London (Outer) | 19 | 68.4% | 3.07 |
| London (Inner) | 13 | 69.2% | 1.82 |
District councils returned the highest control accuracy (87.5%) and the lowest seat MAE (1.28). London boroughs were the weakest, both Inner (69.2% / 1.82) and Outer (68.4% / 3.07). County councils have a high absolute MAE (5.03) because they have larger seat counts; in percentage terms the error is comparable to other types.
Chart · Accuracy by council type
Council types plotted by accuracy and seat error
Each circle is one council type, plotted by control-call accuracy (x-axis) and average per-party seat MAE (y-axis). Circle size scales with the number of councils in the type. Best calls sit bottom-right (high accuracy, low MAE); worst sit top-left.
9. London-specific accuracy
I called 22 of 32 London boroughs correctly on control. The ten missed calls:
Leader-flip misses (2). I had the wrong leading party.
- Bexley: I projected Reform leading on 21 seats. Bexley finished as a Conservative majority on 29, with Reform third on 7. Conservative incumbency held; Reform didn't break through.
- Bromley: I projected Reform leading on 21 seats. Bromley finished as a Conservative majority on 35, with Reform on 6. Same pattern as Bexley.
Independent-slate miss (1). Leader correct, but seat distribution badly off.
- Newham: I projected a Labour majority on 34 with the Newham Independents Party on 17. Newham finished NOC with Labour on 26 and NIP on 24. I had Labour as the largest party, but under-projected NIP strength after the multi-councillor Labour defection that founded the slate.
Threshold misses (7). I had the right leading party, on the wrong side of the majority line.
- Camden, Greenwich, Merton, Waltham Forest: I projected no-overall-control with the eventual majority party leading; all four finished as outright majorities (Labour in Camden, Greenwich and Merton; Green in Waltham Forest).
- Lambeth, Haringey: I projected Green majorities; both finished NOC with Greens still the largest party (29 and 28 seats).
- Barnet: I projected a Labour majority on 33 with Conservative on 25. Barnet finished tied at Con 31, Lab 31.
London accuracy of 68.8% (22/32) is below the national 80.9%. Bexley and Bromley share a pattern: Conservative incumbency held and I over-projected Reform. Newham was the independent-slate problem.
10. Why some headlines say Lab −1,500 and we say −1,235
The BBC reports that Labour lost 1,496 seats at the 2026 elections. The same election on a polling-day baseline is a loss of 1,235 (Labour defended 2,303 seats on 6 May and won 1,068 on 7 May); the Guardian publishes −1,193, similar. The 261-seat gap to BBC is two different baselines, not a disagreement about the result.
BBC compares each party's seats won to the seats they held immediately after the previous comparable election. In Labour's case, that's the 2022 high. PollCheck compares to who held each seat the day before this election. Between 2022 and 2026, Labour lost 261 seats to by-election defeats, councillor defections and councillors quitting to sit as independents. Those seats had already gone before polling day. BBC counts them as part of Labour's 7 May losses; the polling-day basis treats them as lost earlier.
| Number | Value |
|---|---|
| Labour seats won at 2022 election | 2,564 |
| Labour seats held going into 2026 election | 2,303 |
| Labour seats lost between elections (by-elections, defections) | 261 |
| Labour seats won 7 May 2026 | 1,068 |
| BBC change (2022 baseline) | −1,496 |
| PollCheck change (polling-day baseline) | −1,235 |
The baseline shift moves both projection and result by the same amount; the underlying error is the same either way. I projected 1,116 Labour seats. Labour won 1,068. A 48-seat error.
Independents are the one row where the baseline choice changes the direction of the change. On a polling-day basis they lost 257 seats (538 → 281). On a BBC basis they gained 12 (269 → 281). The 269-seat difference is the seats won by a major party at 2022 but sitting as Independents by the eve of 2026.
BBC and the polling-day basis describe the same election from different starting points.
11. Methodology recap
The model is a ward-level swingometer with five inputs: national polling, ward baselines from each council's last fought election, by-election data, demographic adjustments, and incumbency effects. Each ward's baseline vote shares are shifted by a calibrated swing model, then ward winners are picked using first-past-the-post for single-member wards and a slate-allocation rule for multi-member wards (see section 5 for slate performance).
The full methodology is published at pollcheck.co.uk/locals-2026-methodology. One methodological choice to flag:
- Polling-day baseline. We use the seats each party actually held the day before polling, not their seat count at the previous election. This makes our headline change figures smaller than BBC's by a constant amount per party (see section 10).
12. Data sources and acknowledgements
The accuracy analysis in this post-mortem draws on:
- Open Council Data UK: historical council composition data and per-ward winners from previous cycles, used as the projection baseline.
- Democracy Club: candidates and results API.
- UK Election Maps: 2026 results data.
- Britain Elects / New Statesman / Ben Walker: 2026 results data.
- Per-council declaration sources: official council declaration pages and PDFs, used directly for councils where structured data was not available elsewhere.
- Mark Pack: forecaster comparison data, collated in The Week in Polls on Substack, 10 May 2026 (how-did-the-local-election-predictions).
All seat changes are calculated against PollCheck's polling-day baseline unless otherwise noted.
13. Appendix: all 136 voting councils ranked
Full per-council per-party seat MAE for every council that voted on 7 May 2026. The top 5 and bottom 5 appear in section 7. Rank 1 is the most accurate.
Per-council seat MAE in the appendix is calculated against full-council totals (contested seats plus held-over seats from prior years), not contested seats only. This keeps thirds councils comparable to all-out councils in the ranking.
Chart · Per-council accuracy
All 136 voting councils ranked by per-party seat MAE
Each row: council name, mean absolute error in seat count over the six parties. Coloured by council type. Lower is more accurate.