Post-mortem · 2026 English Local Elections

How PollCheck's 2026 projections performed

A full audit of our pre-election projections against the declared results.


Total seat error
270
six parties
Council control
80.9%
110 of 136
Seat MAE
45.0
RMSE 60.3
Ward leader accuracy
67.7%
1,998 of 2,951
Per-ward vote-share MAE
5.19pp
all-party
Per-council seat MAE
2.29
median 1.67

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.

PartyDefendingProjectedWonError
Reform UK691,4761,453+23
Labour2,3031,1161,068+48
Liberal Democrat707836844−8
Conservative1,230674801−127
Green184638587+51
Others538294281+13
Total5,0315,0345,034270 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.

PartyProjected end-stateActual end-stateError
Conservative674801−127
Labour1,1161,068+48
Reform UK1,4761,453+23
Liberal Democrat836844−8
Green638587+51
Others294281+13
MAE45.0
RMSE60.3

Two conventions are used to calculate net changes:

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:

AggregatorBaseline conventionRMSE on PollCheck's published changes
GuardianPolling-day65.8
BBC2022 election140.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.

PartyProjection80% intervalActual
Labour1,116915 to 1,3571,068
Reform UK1,4761,063 to 1,7871,453
Liberal Democrat836667 to 921844
Conservative674589 to 901801
Green638460 to 867587
Others294261 to 322281

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).

PROJECTED WON Reform UK 1,476 1,453 −23 Labour 1,116 1,068 −48 Liberal Dem 836 844 +8 Conservative 674 801 +127 Green 638 587 −51 Others 294 281 −13
Common scale 0–1,500 seats. Sources: May 6 projection of record (PollCheck) and BBC declared totals as at the close of declarations on 9 May.

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.

PartyMAE (pp)RMSE (pp)
Liberal Democrat4.196.73
Green5.487.56
Labour5.517.70
Conservative5.918.28
Reform UK6.829.01
Others3.237.68
Overall5.197.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:

PercentilePer-ward MAE (pp)
Median (50th)4.71
75th6.48
90th8.71
99th14.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.

22 wards
156 wards
426 wards
496 wards
507 wards
435 wards
298 wards
218 wards
129 wards
108 wards
91 wards
34 wards
21 wards
10 wards
<1 1-2 2-3 3-4 4-5 5-6 6-7 7-8 8-9 9-10 10-12 12-14 14-16 16+
Median 4.71pp 75th 6.48pp 90th 8.71pp 99th 14.24pp
X-axis: per-ward mean absolute error (percentage points). Bin widths are 1pp until 10pp, then 2pp from 10–16pp, then 16pp+. Half of all wards fell below 4.7pp; only 1% above 14.2pp.

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:

PartyMAE (pp)RMSE (pp)
Liberal Democrat2.112.93
Others1.702.67
Labour2.513.27
Green2.723.50
Conservative3.755.50
Reform UK3.965.25
Overall2.794.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.

ConservativeMAE 3.75pp00202040406060PROJECTED %ACTUAL %
LabourMAE 2.51pp00202040406060PROJECTED %ACTUAL %
Liberal DemocratMAE 2.11pp00202040406060PROJECTED %ACTUAL %
GreenMAE 2.72pp00202040406060PROJECTED %ACTUAL %
Reform UKMAE 3.96pp00202040406060PROJECTED %ACTUAL %
OthersMAE 1.70pp00202040406060PROJECTED %ACTUAL %
Non-London council London borough (Inner or Outer) Perfect projection (45° line)
London is the worst-fit subset on Conservative (5.15pp MAE vs 3.75 nationally), Lib Dem (3.50pp vs 2.11) and Labour (2.76pp vs 2.51). London is slightly better than the national figure on Reform (3.32pp vs 3.96) and roughly even on Green and Others.

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.

Most accurate
1BroxbourneDistrict0.57
2WolverhamptonMetropolitan0.98
3West OxfordshireDistrict0.99
4Welwyn HatfieldDistrict1.07
5HaveringLondon (Outer)1.08
Least accurate
1HarlowDistrict10.87
2PortsmouthUnitary6.16
3Blackburn with DarwenUnitary5.94
4BromleyLondon (Outer)5.69
5Kensington and ChelseaLondon (Inner)5.41
Harlow at 10.87pp is an outlier. The next-worst councils sit between 5 and 7 percentage points.

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.

9 councils
15 councils
33 councils
14 councils
18 councils
9 councils
14 councils
13 councils
8 councils
3 councils
0-0.5 0.5-1 1-1.5 1.5-2 2-2.5 2.5-3 3-4 4-5 5-7 7+
Median 1.67 75th 3.00 90th 4.33 95th 5.67
X-axis: per-council mean absolute seat error per party. Full ranking in the appendix.

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.

47%
32%
15%
6%
Exact split · 574 wards · 47%
One seat off · 398 wards · 32%
Two seats off · 186 wards · 15%
Three or more off · 72 wards · 6%

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.

CouncilPredicted leaderActual leaderMiss
BexleyReform (21 seats)Conservative (29, outright)Reform finished third on 7 seats. Conservative incumbency held.
BromleyReform (21 seats)Conservative (35, outright)Same pattern as Bexley; Reform finished on 6 seats.
SandwellLabour (majority, 50)Reform (majority, 41)The Labour-to-Reform swing in the West Midlands was sharper than projected.
BradfordGreen (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.
PortsmouthReform (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.

Most accurate
1HastingsDistrict0.00
2CheltenhamDistrict0.33
3ColchesterDistrict0.33
4HartDistrict0.33
5HartlepoolUnitary0.33
Least accurate
1NorfolkCounty11.33
2BradfordMetropolitan9.00
3SandwellMetropolitan8.00
4SuffolkCounty6.33
5BromleyLondon (Outer)6.33
Bars scaled to a maximum of 12 seats (Norfolk, the worst council, sits at 11.33). Hastings is the only council where the projection matched the result party-for-party.

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

TypeCouncilsControl accuracyAvg seat MAE
District4887.5%1.28
Metropolitan borough3284.4%2.81
County council683.3%5.03
Unitary authority1877.8%2.67
London (Outer)1968.4%3.07
London (Inner)1369.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.

0 2 4 6 70% 75% 80% 85% 90% CONTROL ACCURACY AVG SEAT MAE District 87.5% · 1.28 MAE · n=48 Metropolitan 84.4% · 2.81 MAE · n=32 County 83.3% · 5.03 MAE · n=6 Unitary 77.8% · 2.67 MAE · n=18 London (Inner) 69.2% · 1.82 MAE · n=13 London (Outer) 68.4% · 3.07 MAE · n=19
N = number of councils in each type. London-borough types underperform on both axes; County has a high absolute MAE because county councils are large, not because the percentage error is unusually high.

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.

Independent-slate miss (1). Leader correct, but seat distribution badly off.

Threshold misses (7). I had the right leading party, on the wrong side of the majority line.

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.

NumberValue
Labour seats won at 2022 election2,564
Labour seats held going into 2026 election2,303
Labour seats lost between elections (by-elections, defections)261
Labour seats won 7 May 20261,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:

12. Data sources and acknowledgements

The accuracy analysis in this post-mortem draws on:

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.

District Metropolitan County Unitary London (Inner) London (Outer)
1 Hastings 0.00
2 Cheltenham 0.33
3 Colchester 0.33
4 Hart 0.33
5 Hartlepool 0.33
6 Hyndburn 0.33
7 North East Lincolnshire 0.33
8 Watford 0.33
9 Winchester 0.33
10 Barking and Dagenham 0.67
11 Eastleigh 0.67
12 Hammersmith and Fulham 0.67
13 Ipswich 0.67
14 Kingston upon Hull 0.67
15 Kingston upon Thames 0.67
16 Lincoln 0.67
17 Nuneaton and Bedworth 0.67
18 Redditch 0.67
19 Rugby 0.67
20 St Albans 0.67
21 Three Rivers 0.67
22 Tunbridge Wells 0.67
23 Walsall 0.67
24 Wigan 0.67
25 Adur 1.00
26 Bolton 1.00
27 Brentwood 1.00
28 Broxbourne 1.00
29 Dudley 1.00
30 Havant 1.00
31 Lambeth 1.00
32 Norwich 1.00
33 Pendle 1.00
34 Plymouth 1.00
35 Rochdale 1.00
36 Rochford 1.00
37 South Cambridgeshire 1.00
38 Tamworth 1.00
39 Tower Hamlets 1.00
40 West Oxfordshire 1.00
41 Basildon 1.33
42 Bury 1.33
43 Cannock Chase 1.33
44 Crawley 1.33
45 East Sussex 1.33
46 Haringey 1.33
47 Newcastle-under-Lyme 1.33
48 Oxford 1.33
49 Preston 1.33
50 Rushmoor 1.33
51 Southwark 1.33
52 Stevenage 1.33
53 Stockport 1.33
54 Trafford 1.33
55 Wandsworth 1.33
56 West Lancashire 1.33
57 Wolverhampton 1.33
58 Blackburn with Darwen 1.67
59 Burnley 1.67
60 Chorley 1.67
61 Exeter 1.67
62 Gateshead 1.67
63 Hillingdon 1.67
64 Islington 1.67
65 Knowsley 1.67
66 Leeds 1.67
67 Reading 1.67
68 Southampton 1.67
69 Westminster 1.67
70 Wokingham 1.67
71 Cambridge 1.83
72 Barnet 2.00
73 Camden 2.00
74 Cherwell 2.00
75 Fareham 2.00
76 Huntingdonshire 2.00
77 Oldham 2.00
78 Tameside 2.00
79 Worthing 2.00
80 Barnsley 2.17
81 Coventry 2.33
82 Gosport 2.33
83 Merton 2.33
84 North Tyneside 2.33
85 Richmond upon Thames 2.33
86 Sheffield 2.33
87 Thurrock 2.33
88 Waltham Forest 2.33
89 Welwyn Hatfield 2.33
90 Epping Forest 2.67
91 Halton 2.67
92 Kensington and Chelsea 2.67
93 Newcastle upon Tyne 2.67
94 Newham 2.67
95 Portsmouth 2.67
96 Southend-on-Sea 2.67
97 Sunderland 2.67
98 Calderdale 3.00
99 Harrow 3.00
100 Isle of Wight 3.00
101 Lewisham 3.00
102 Sutton 3.00
103 Brent 3.33
104 Enfield 3.33
105 Essex 3.33
106 Hackney 3.33
107 Harlow 3.33
108 Hampshire 3.50
109 Havering 3.67
110 Salford 3.67
111 Wakefield 3.67
112 Birmingham 4.00
113 Ealing 4.00
114 Hounslow 4.00
115 Kirklees 4.00
116 Peterborough 4.00
117 Redbridge 4.00
118 Sefton 4.00
119 Solihull 4.00
120 St Helens 4.00
121 Greenwich 4.33
122 Manchester 4.33
123 West Sussex 4.33
124 Bexley 4.67
125 Croydon 4.67
126 South Tyneside 5.00
127 West Surrey 5.00
128 Swindon 5.33
129 East Surrey 5.67
130 Milton Keynes 5.67
131 Basingstoke and Deane 5.83
132 Bromley 6.33
133 Suffolk 6.33
134 Sandwell 8.00
135 Bradford 9.00
136 Norfolk 11.33
Ranked ascending: rank 1 = most accurate. Bar width scaled to the worst council’s MAE (Norfolk, 11.33).