← Bradford (all cycles) · 4 May 2023 cohort

Bradford 2023

Local elections held 4 May 2023.

30 ward races
30 seats
10 elected below the proportional quota
33.3% of seats below quota

How to read this page

Each race below shows the share of valid ballots the marginal elected candidate actually won, and compares it to the proportional quota: the share that would be needed to be guaranteed that seat under any proportional voting method (1 seats + 1). For a 1-seat ward the quota is 50%; for 2 seats, 33.3%; for 3 seats, 25%.

Where the actual winning share fell below the quota, we show the gap as points under par — the editorial indictment. Above-par results are just majority mandates and pass without comment. The voting method is the subject of every observation here. Named candidates appear as the public election record requires; the cause being audited is the voting method, not the individuals. See the methodology page for derivations.

If votes were counted by party

Across the 30 wards in this cycle, parties received the vote totals below. The proportional column shows what each party would have won if the 30 seats had been allocated to those vote totals in proportion (how, with caveats). The Δ column is the actual seat count minus the proportional seat count — positive numbers are parties First-Past-the-Post over-represented in this council, negative are parties it under-represented.

PartyVotesVote %Seats won% of seatsProportional seatsProportional %Δ
Labour Party56,91647.0%2273.3%1550.0%+7
Conservative and Unionist Party29,09324.0%413.3%826.7%-4
Green Party17,60714.5%310.0%413.3%-1
Liberal Democrats10,3538.5%13.3%26.7%-1
Independent5,0734.2%00.0%13.3%-1
Yorkshire Party1,4081.2%00.0%00.0%0
Reform UK4430.4%00.0%00.0%0
BDP1400.1%00.0%00.0%0
Social Democratic Party370.0%00.0%00.0%0
Trade Unionist and Socialist Coalition350.0%00.0%00.0%0
Total121,105100.0%30100.0%30100.0%0

Vote share vs seats won

The top bar is each party's share of votes cast in this council. Below, one square per seat, coloured by the party that won it — first the actual First-Past-the-Post result, then what a proportional method would have produced from the same vote totals. Divergence between the bar and the actual grid is the indictment of the method.

Vote share
Actual seats
Proportional seats

Wards in this council

Sorted with the largest gap below the quota first. Click any ward to jump to its full result.

Race results

Queensbury · single-seat

Marginal winner 35.3% Proportional quota 50.0% Difference +14.7 pts below quota Valid ballots 3,412

RankCandidatePartyVotesShareElected
1Mitchell, A.Labour Party1,20635.3%Elected
2Hargreaves, R.Independent1,04230.5%
3Paterson, A.Conservative and Unionist Party84924.9%
4Dodwell, E.Green Party2296.7%
5Whitrick, M.Liberal Democrats862.5%

Electorate 12,452 · Ballots cast 3,412 · Back to ward index

Wharfedale · single-seat

Marginal winner 39.4% Proportional quota 50.0% Difference +10.6 pts below quota Valid ballots 4,364

RankCandidatePartyVotesShareElected
1Steele, C.Labour Party1,71839.4%Elected
2Cochrane, P.Conservative and Unionist Party1,69238.8%
3Turner, C.Green Party53412.2%
4Needle, J.Liberal Democrats4209.6%

Electorate 9,556 · Ballots cast 4,364 · Back to ward index

Ilkley · single-seat

Marginal winner 41.9% Proportional quota 50.0% Difference +8.1 pts below quota Valid ballots 6,341

RankCandidatePartyVotesShareElected
1Nunns, D.Conservative and Unionist Party2,65541.9%Elected
2Brown, R.Green Party2,49539.3%
3Baldwin, M.Labour Party97715.4%
4Jones, C.Liberal Democrats2143.4%

Electorate 11,949 · Ballots cast 6,341 · Back to ward index

Eccleshill · single-seat

Marginal winner 43.1% Proportional quota 50.0% Difference +6.9 pts below quota Valid ballots 3,360

RankCandidatePartyVotesShareElected
1Parsons, I.Labour Party1,44743.1%Elected
2Knox, S.Liberal Democrats1,17334.9%
3Rasool, W.Conservative and Unionist Party46713.9%
4Barras, J.Yorkshire Party1524.5%
5Vanicat, S.Green Party1213.6%

Electorate 12,921 · Ballots cast 3,360 · Back to ward index

Baildon · single-seat

Marginal winner 44.5% Proportional quota 50.0% Difference +5.5 pts below quota Valid ballots 4,842

RankCandidatePartyVotesShareElected
1Pollard, M.Conservative and Unionist Party2,15344.5%Elected
2Ashton, P.Labour Party2,00341.4%
3Dunk, C.Green Party2445.0%
4Wilkinson, D.Liberal Democrats2314.8%
5Moncaster, P.Reform UK2114.4%

Electorate 11,969 · Ballots cast 4,842 · Back to ward index

Bingley Rural · single-seat

Marginal winner 46.8% Proportional quota 50.0% Difference +3.2 pts below quota Valid ballots 5,254

RankCandidatePartyVotesShareElected
1Sullivan, P.Conservative and Unionist Party2,45746.8%Elected
2Malik, A.Labour Party1,21123.0%
3Bacon, C.Independent96018.3%
4Newham, B.Green Party4328.2%
5Baranowski, H.Liberal Democrats1943.7%

Electorate 14,607 · Ballots cast 5,254 · Back to ward index

Bingley · single-seat

Marginal winner 46.9% Proportional quota 50.0% Difference +3.1 pts below quota Valid ballots 5,958

RankCandidatePartyVotesShareElected
1Fricker, S.Labour Party2,79646.9%Elected
2Winnard, G.Conservative and Unionist Party2,36539.7%
3Drucquer, R.Green Party5589.4%
4Russell, P.Liberal Democrats2394.0%

Electorate 14,037 · Ballots cast 5,958 · Back to ward index

Keighley West · single-seat

Marginal winner 47.3% Proportional quota 50.0% Difference +2.7 pts below quota Valid ballots 3,183

RankCandidatePartyVotesShareElected
1Lintern, J.Labour Party1,50747.3%Elected
2Kelly, L.Conservative and Unionist Party1,44745.5%
3Spoerry, S.Liberal Democrats1274.0%
4Whittaker, J.Green Party1023.2%

Electorate 11,815 · Ballots cast 3,183 · Back to ward index

Keighley Central · single-seat

Marginal winner 49.3% Proportional quota 50.0% Difference +0.7 pts below quota Valid ballots 6,336

RankCandidatePartyVotesShareElected
1Zaman, A.Labour Party3,12549.3%Elected
2Akhtar, J.Conservative and Unionist Party2,28436.0%
3Ali, Z.Independent5809.2%
4Telfer, A.Green Party1782.8%
5Robinson, L.Independent851.3%
6Allon, N.Liberal Democrats841.3%

Electorate 12,448 · Ballots cast 6,336 · Back to ward index

Craven · single-seat

Marginal winner 49.5% Proportional quota 50.0% Difference +0.5 pts below quota Valid ballots 5,722

RankCandidatePartyVotesShareElected
1Russell, J.Green Party2,83149.5%Elected
2Irving, E.Conservative and Unionist Party1,83832.1%
3Knight, A.Labour Party70012.2%
4Kaye, P.Yorkshire Party2804.9%
5Mann, P.Liberal Democrats731.3%

Electorate 14,064 · Ballots cast 5,722 · Back to ward index

Manningham · single-seat

Marginal winner 50.9% Proportional quota 50.0% Difference −0.9 pts Valid ballots 4,913

RankCandidatePartyVotesShareElected
1Kauser, S.Labour Party2,50250.9%Elected
2Islam, M.Independent2,15343.8%
3Fetherston, A.Green Party1693.4%
4Anjum, K.Conservative and Unionist Party891.8%

Electorate 12,254 · Ballots cast 4,913 · Back to ward index

Keighley East · single-seat

Marginal winner 51.2% Proportional quota 50.0% Difference −1.2 pts Valid ballots 3,933

RankCandidatePartyVotesShareElected
1Robinson, L.Labour Party2,01551.2%Elected
2Crangle, M.Conservative and Unionist Party1,42536.2%
3Hunnisett, D.Green Party2706.9%
4Briggs, J.Liberal Democrats1864.7%
5Vann, A.Social Democratic Party370.9%

Electorate 12,480 · Ballots cast 3,933 · Back to ward index

Wibsey · single-seat

Marginal winner 55.9% Proportional quota 50.0% Difference −5.9 pts Valid ballots 2,629

RankCandidatePartyVotesShareElected
1Berry, R.Labour Party1,47055.9%Elected
2Peterken, N.Conservative and Unionist Party54820.8%
3Boulton, B.Liberal Democrats37514.3%
4Daw, M.Green Party1204.6%
5Buxton, B.Yorkshire Party1164.4%

Electorate 10,650 · Ballots cast 2,629 · Back to ward index

Bradford Moor · single-seat

Marginal winner 56.0% Proportional quota 50.0% Difference −6.0 pts Valid ballots 4,657

RankCandidatePartyVotesShareElected
1Iqbal, Z.Labour Party2,60756.0%Elected
2Thair, M.Liberal Democrats1,72737.1%
3Iqbal, A.Conservative and Unionist Party1924.1%
4Grant, W.Yorkshire Party681.5%
5Wood, A.Green Party631.4%

Electorate 13,064 · Ballots cast 4,657 · Back to ward index

Wyke · single-seat

Marginal winner 56.0% Proportional quota 50.0% Difference −6.0 pts Valid ballots 2,753

RankCandidatePartyVotesShareElected
1Ferriby, S.Labour Party1,54256.0%Elected
2McLean, M.Conservative and Unionist Party65423.8%
3Hall, K.Liberal Democrats1545.6%
4Lewthwaite, J.BDP1405.1%
5Walker, I.Reform UK1354.9%
6Parkinson, D.Green Party1284.6%

Electorate 10,664 · Ballots cast 2,753 · Back to ward index

Heaton · single-seat

Marginal winner 58.4% Proportional quota 50.0% Difference −8.4 pts Valid ballots 4,831

RankCandidatePartyVotesShareElected
1Amran, M.Labour Party2,82158.4%Elected
2Mahmood, K.Green Party1,76936.6%
3Khan, S.Conservative and Unionist Party1673.5%
4Ali, A.Liberal Democrats741.5%

Electorate 12,529 · Ballots cast 4,831 · Back to ward index

Worth Valley · single-seat

Marginal winner 59.2% Proportional quota 50.0% Difference −9.2 pts Valid ballots 4,071

RankCandidatePartyVotesShareElected
1Poulson, R.Conservative and Unionist Party2,41259.2%Elected
2Joomun-Whitehead, A.Labour Party1,29031.7%
3Hussain, H.Green Party1874.6%
4Kirkham, K.Liberal Democrats1824.5%

Electorate 10,911 · Ballots cast 4,071 · Back to ward index

Tong · single-seat

Marginal winner 59.8% Proportional quota 50.0% Difference −9.8 pts Valid ballots 2,584

RankCandidatePartyVotesShareElected
1Sutcliffe, U.Green Party1,54659.8%Elected
2Mukhtar, K.Labour Party65025.2%
3Turpin, P.Conservative and Unionist Party2218.6%
4Elliott, S.Liberal Democrats923.6%
5Inman, B.Yorkshire Party752.9%

Electorate 12,612 · Ballots cast 2,584 · Back to ward index

Bolton & Undercliffe · single-seat

Marginal winner 59.9% Proportional quota 50.0% Difference −9.9 pts Valid ballots 3,445

RankCandidatePartyVotesShareElected
1Choudhry, S.Labour Party2,06459.9%Elected
2Lubenko, S.Liberal Democrats62018.0%
3Singh, S.Conservative and Unionist Party2968.6%
4Gulland, B.Green Party1684.9%
5Barras, W.Yorkshire Party1654.8%
6Bourn, S.Reform UK972.8%
7Gibson, T.Trade Unionist and Socialist Coalition351.0%

Electorate 12,049 · Ballots cast 3,445 · Back to ward index

Windhill & Wrose · single-seat

Marginal winner 60.4% Proportional quota 50.0% Difference −10.4 pts Valid ballots 3,038

RankCandidatePartyVotesShareElected
1Hinchcliffe, S.Labour Party1,83460.4%Elected
2Harrison, W.Conservative and Unionist Party75324.8%
3Thorne, G.Liberal Democrats2397.9%
4Wood, J.Green Party2127.0%

Electorate 11,346 · Ballots cast 3,038 · Back to ward index

Thornton & Allerton · single-seat

Marginal winner 61.8% Proportional quota 50.0% Difference −11.8 pts Valid ballots 3,596

RankCandidatePartyVotesShareElected
1Duffy, S.Labour Party2,22461.8%Elected
2Morton, J.Conservative and Unionist Party74320.7%
3Whitaker, J.Green Party3229.0%
4Griffiths, A.Liberal Democrats3078.5%

Electorate 12,592 · Ballots cast 3,596 · Back to ward index

Idle & Thackley · single-seat

Marginal winner 63.7% Proportional quota 50.0% Difference −13.7 pts Valid ballots 4,215

RankCandidatePartyVotesShareElected
1Sunderland, J.Liberal Democrats2,68663.7%Elected
2Logan, G.Labour Party80519.1%
3Robertshaw, J.Conservative and Unionist Party4049.6%
4Barras, L.Yorkshire Party1613.8%
5Lawrence, T.Green Party1593.8%

Electorate 13,348 · Ballots cast 4,215 · Back to ward index

Royds · single-seat

Marginal winner 63.9% Proportional quota 50.0% Difference −13.9 pts Valid ballots 2,680

RankCandidatePartyVotesShareElected
1Tait, A.Labour Party1,71363.9%Elected
2Bayap, E.Conservative and Unionist Party59222.1%
3Sharp, I.Green Party2519.4%
4Riach, I.Liberal Democrats1244.6%

Electorate 12,180 · Ballots cast 2,680 · Back to ward index

Shipley · single-seat

Marginal winner 64.6% Proportional quota 50.0% Difference −14.6 pts Valid ballots 4,963

RankCandidatePartyVotesShareElected
1Warnes, K.Green Party3,20464.6%Elected
2Martin, V.Labour Party1,23824.9%
3Golding, P.Conservative and Unionist Party4238.5%
4Errington, N.Liberal Democrats982.0%

Electorate 11,618 · Ballots cast 4,963 · Back to ward index

Clayton & Fairweather Green · single-seat

Marginal winner 69.3% Proportional quota 50.0% Difference −19.3 pts Valid ballots 2,988

RankCandidatePartyVotesShareElected
1Thirkill, C.Labour Party2,07169.3%Elected
2Lawton, K.Conservative and Unionist Party57419.2%
3May, S.Green Party2287.6%
4Cotterell, S.Liberal Democrats1153.8%

Electorate 11,966 · Ballots cast 2,988 · Back to ward index

Great Horton · single-seat

Marginal winner 70.2% Proportional quota 50.0% Difference −20.2 pts Valid ballots 3,380

RankCandidatePartyVotesShareElected
1Hussain, T.Labour Party2,37470.2%Elected
2Khan, S.Conservative and Unionist Party35010.4%
3Boota, H.Independent2537.5%
4Moses, S.Liberal Democrats1574.6%
5Sykes, A.Green Party1364.0%
6Grant, W.Yorkshire Party1103.3%

Electorate 11,570 · Ballots cast 3,380 · Back to ward index

Bowling & Barkerend · single-seat

Marginal winner 75.0% Proportional quota 50.0% Difference −25.0 pts Valid ballots 3,386

RankCandidatePartyVotesShareElected
1Khan, I.Labour Party2,54075.0%Elected
2Middleton, H.Liberal Democrats2858.4%
3Fazal, M.Conservative and Unionist Party2427.1%
4Rickford, A.Green Party1765.2%
5Wood, K.Yorkshire Party1434.2%

Electorate 13,726 · Ballots cast 3,386 · Back to ward index

City · single-seat

Marginal winner 79.1% Proportional quota 50.0% Difference −29.1 pts Valid ballots 3,178

RankCandidatePartyVotesShareElected
1Lal, S.Labour Party2,51379.1%Elected
2Patel, A.Conservative and Unionist Party34811.0%
3Tadych, M.Green Party31710.0%

Electorate 14,427 · Ballots cast 3,178 · Back to ward index

Toller · single-seat

Marginal winner 82.4% Proportional quota 50.0% Difference −32.4 pts Valid ballots 3,870

RankCandidatePartyVotesShareElected
1Shaheen, F.Labour Party3,19082.4%Elected
2Ford, B.Green Party3549.1%
3Iqbal, S.Conservative and Unionist Party3268.4%

Electorate 13,102 · Ballots cast 3,870 · Back to ward index

Little Horton · single-seat

Marginal winner 85.7% Proportional quota 50.0% Difference −35.7 pts Valid ballots 3,223

RankCandidatePartyVotesShareElected
1Salam, T.Labour Party2,76385.7%Elected
2Longhorn, D.Yorkshire Party1384.3%
3Afzal, M.Conservative and Unionist Party1273.9%
4Arobi, N.Green Party1043.2%
5Mahmood, T.Liberal Democrats912.8%

Electorate 12,088 · Ballots cast 3,223 · Back to ward index