2023 local elections handbook
Scheduled council elections held between April and June 2023, from our ward results. This is the final edition. Where our results for a council are incomplete, its figures will be too low.
- Councils
- 248
- Wards
- 4,927
- Seats
- 9,277
- Candidates
- 28,994
- Votes
- 16,496,254
Seats won by party
| Party | Seats | Candidates | Votes | Vote share* | |
|---|---|---|---|---|---|
| Labour | 2,978 | 6,882 | 4,979,881 | 30.5% | |
| Conservative | 2,504 | 8,302 | 4,920,020 | 30.2% | |
| Liberal Democrats | 1,813 | 5,268 | 2,927,844 | 17.9% | |
| Independent | 649 | 2,162 | 954,561 | 5.9% | |
| Green | 530 | 3,634 | 1,418,647 | 8.7% | |
| DUP | 99 | 123 | 143,531 | 0.9% | |
| Sinn Féin | 95 | 107 | 154,661 | 0.9% | |
| Alliance Party of Northern Ireland | 58 | 90 | 86,009 | 0.5% | |
| Ulster Unionist Party | 45 | 77 | 65,484 | 0.4% | |
| Ashfield Independents | 32 | 35 | 25,412 | 0.2% | |
| SDLP | 25 | 59 | 44,636 | 0.3% | |
| Residents for Uttlesford | 22 | 30 | 16,529 | 0.1% | |
| Residents Associations of Epsom and Ewell | 17 | 26 | 14,243 | 0.1% | |
| Boston Independent | 17 | 23 | 10,174 | 0.1% | |
| South Holland Independents | 14 | 17 | 9,436 | 0.1% |
*Note on vote share: this is each party's share of the votes cast in the wards we hold for 2023. It is not an estimate for the whole country: many councils did not vote this year, some of our results may be missing, and in wards with several seats each voter had several votes.
National Equivalent Vote — our estimate
What each party's share might have been if the whole of Great Britain had voted in 2023. Built from 4,808 wards that did vote, compared like-for-like with the last time each ward voted, then carried across the places that didn't vote using the change in their region. Shown beside the Elections Centre's published figure where we hold it.
| Party | Our estimate | Elections Centre | |
|---|---|---|---|
| CON | 31.1% | 29% | |
| LAB | 27.9% | 36% | |
| LD | 17.9% | 18% | |
| GRN | 11.0% | — | |
| IND | 6.2% | — | |
| SNP | 1.7% | — | |
| PC | 0.6% | — |
How far to trust this: it is an estimate, not a count. It uses each party's best-placed candidate in each ward, so multi-seat wards don't inflate anyone. Parties that stand in only a few places stay in those places. Where our ward records are incomplete for a year, the estimate is less reliable — compare it with the Elections Centre column.
Councils changing hands (91)
| Council | Before | After |
|---|---|---|
| Amber Valley | Conservative | Labour |
| Ashford | Conservative | No overall control |
| Basingstoke and Deane | Conservative | No overall control |
| Blackpool | No overall control | Labour |
| Boston | No overall control | Other |
| Bournemouth, Christchurch & Poole | Conservative | No overall control |
| Bracknell Forest | Conservative | Labour |
| Brentwood | Conservative | No overall control |
| Brighton & Hove | No overall control | Labour |
| Broadland | Conservative | No overall control |
| Bromsgrove | Conservative | No overall control |
| Broxtowe | No overall control | Labour |
| Cannock Chase | Conservative | No overall control |
| Canterbury | Conservative | No overall control |
| Central Bedfordshire | Conservative | No overall control |
| Charnwood | Conservative | No overall control |
| Cherwell | Conservative | No overall control |
| Cheshire West & Chester | No overall control | Labour |
| Chichester | No overall control | Liberal Democrats |
| Dacorum | Conservative | Liberal Democrats |
| Derbyshire Dales | Conservative | No overall control |
| Dover | Conservative | Labour |
| East Hampshire | Conservative | No overall control |
| East Hertfordshire | Conservative | No overall control |
| East Lindsey | Conservative | No overall control |
| East Riding Of Yorkshire | Conservative | No overall control |
| East Staffordshire | Conservative | Labour |
| East Suffolk | Conservative | No overall control |
| Erewash | Conservative | Labour |
| Fermanagh and Omagh | No overall control | SDLP (Social Democratic & Labour Party) |
| Forest Of Dean | Other | No overall control |
| Gravesham | No overall control | Labour |
| Great Yarmouth | Conservative | No overall control |
| Guildford | No overall control | Liberal Democrats |
| Harborough | Conservative | No overall control |
| Hertsmere | Conservative | No overall control |
| High Peak | No overall control | Labour |
| Horsham | Conservative | Liberal Democrats |
| King's Lynn And West Norfolk | Conservative | No overall control |
| Lichfield | Conservative | No overall control |
| Maldon | Other | No overall control |
| Mansfield | Other | Labour |
| Medway | Conservative | Labour |
| Melton | Conservative | No overall control |
| Mid Devon | No overall control | Liberal Democrats |
| Mid Suffolk | No overall control | Green |
| Mid Sussex | Conservative | No overall control |
| Mid Ulster | No overall control | Sinn Féin |
| Middlesbrough | No overall control | Labour |
| Newark And Sherwood | Conservative | No overall control |
| Newry, Mourne and Down | No overall control | Sinn Féin |
| North Devon | No overall control | Liberal Democrats |
| North East Derbyshire | Conservative | Labour |
| North Warwickshire | Conservative | No overall control |
| North West Leicestershire | Conservative | No overall control |
| Oldham | Labour | No overall control |
| Pendle | Conservative | No overall control |
| Plymouth | No overall control | Labour |
| Ribble Valley | Conservative | No overall control |
| Rochford | Conservative | No overall control |
| Rugby | Conservative | No overall control |
| Runnymede | Conservative | No overall control |
| Slough | Labour | No overall control |
| South Derbyshire | No overall control | Labour |
| South Gloucestershire | Conservative | No overall control |
| South Hams | Conservative | Liberal Democrats |
| South Kesteven | Conservative | No overall control |
| South Oxfordshire | No overall control | Liberal Democrats |
| South Ribble | No overall control | Labour |
| Stoke On Trent | No overall control | Labour |
| Stratford-On-Avon | Conservative | Liberal Democrats |
| Surrey Heath | No overall control | Liberal Democrats |
| Swindon | Conservative | Labour |
| Tamworth | Conservative | No overall control |
| Tandridge | No overall control | Other |
| Teignbridge | No overall control | Liberal Democrats |
| Tewkesbury | Conservative | No overall control |
| Thanet | No overall control | Labour |
| Thurrock | Conservative | No overall control |
| Tonbridge And Malling | Conservative | No overall control |
| Torbay | No overall control | Conservative |
| Wealden | Conservative | No overall control |
| Welwyn Hatfield | Conservative | No overall control |
| West Berkshire | Conservative | Liberal Democrats |
| West Devon | Conservative | No overall control |
| West Lancashire | No overall control | Labour |
| West Lindsey | No overall control | Liberal Democrats |
| West Suffolk | Conservative | No overall control |
| Windsor & Maidenhead | Conservative | Liberal Democrats |
| Wyre Forest | No overall control | Conservative |
| York | No overall control | Labour |
Every council (248)
| Council | Wards | Seats | Before | After |
|---|---|---|---|---|
| Amber Valley | 18 | 44 | Conservative | Labour |
| Antrim and Newtownabbey | 7 | 40 | No overall control | No overall control |
| Ards and North Down | 7 | 40 | No overall control | No overall control |
| Armagh City, Banbridge and Craigavon | 7 | 41 | No overall control | No overall control |
| Arun | 23 | 61 | No overall control | No overall control |
| Ashfield | 24 | 41 | Other | Other |
| Ashford | 39 | 52 | Conservative | No overall control |
| Babergh | 24 | 39 | No overall control | No overall control |
| Barnsley | 21 | 25 | Labour | Labour |
| Basildon | 14 | 17 | Conservative | Conservative |
| Basingstoke and Deane | 18 | 18 | Conservative | No overall control |
| Bassetlaw | 25 | 65 | Labour | Labour |
| Bath | 1 | 2 | — | — |
| Bath & North East Somerset | 35 | 70 | Liberal Democrats | Liberal Democrats |
| Bedford | 28 | 48 | No overall control | No overall control |
| Belfast | 10 | 60 | No overall control | No overall control |
| Blaby | 17 | 36 | Conservative | Conservative |
| Blackburn with Darwen | 17 | 18 | Labour | Labour |
| Blackpool | 21 | 44 | No overall control | Labour |
| Bolsover | 17 | 45 | Labour | Labour |
| Bolton | 20 | 63 | No overall control | No overall control |
| Boston | 15 | 31 | No overall control | Other |
| Bournemouth, Christchurch & Poole | 33 | 77 | Conservative | No overall control |
| Bracknell Forest | 15 | 41 | Conservative | Labour |
| Bradford | 30 | 31 | Labour | Labour |
| Braintree | 26 | 56 | Conservative | Conservative |
| Breckland | 27 | 50 | Conservative | Conservative |
| Brentwood | 13 | 15 | Conservative | No overall control |
| Brighton & Hove | 23 | 56 | No overall control | Labour |
| Broadland | 27 | 55 | Conservative | No overall control |
| Bromsgrove | 30 | 35 | Conservative | No overall control |
| Broxbourne | 10 | 11 | Conservative | Conservative |
| Broxtowe | 20 | 48 | No overall control | Labour |
| Burnley | 15 | 16 | No overall control | No overall control |
| Bury | 17 | 19 | Labour | Labour |
| Calderdale | 17 | 17 | Labour | Labour |
| Cambridge | 14 | 17 | Labour | Labour |
| Cannock Chase | 15 | 21 | Conservative | No overall control |
| Canterbury | 21 | 39 | Conservative | No overall control |
| Castle Point | 14 | 18 | Other | Other |
| Causeway Coast and Glens | 7 | 37 | No overall control | No overall control |
| Central Bedfordshire | 31 | 84 | Conservative | No overall control |
| Charnwood | 24 | 59 | Conservative | No overall control |
| Chelmsford | 24 | 59 | Liberal Democrats | Liberal Democrats |
| Cherwell | 16 | 18 | Conservative | No overall control |
| Cheshire East | 52 | 96 | No overall control | No overall control |
| Cheshire West & Chester | 44 | 69 | No overall control | Labour |
| Chesterfield | 16 | 45 | Labour | Labour |
| Chichester | 21 | 46 | No overall control | Liberal Democrats |
| Chorley | 14 | 16 | Labour | Labour |
| Colchester | 17 | 17 | No overall control | No overall control |
| Cotswold | 32 | 37 | Liberal Democrats | Liberal Democrats |
| Coventry | 18 | 19 | Labour | Labour |
| Crawley | 12 | 12 | Labour | Labour |
| Dacorum | 25 | 57 | Conservative | Liberal Democrats |
| Darlington | 20 | 52 | No overall control | No overall control |
| Dartford | 20 | 42 | Conservative | Conservative |
| Derby | 18 | 61 | No overall control | No overall control |
| Derbyshire Dales | 21 | 37 | Conservative | No overall control |
| Derry City and Strabane | 7 | 37 | No overall control | No overall control |
| Dover | 17 | 32 | Conservative | Labour |
| Dudley | 24 | 26 | Conservative | Conservative |
| East Cambridgeshire | 14 | 33 | Conservative | Conservative |
| East Devon | 30 | 66 | No overall control | No overall control |
| East Hampshire | 31 | 44 | Conservative | No overall control |
| East Hertfordshire | 26 | 65 | Conservative | No overall control |
| East Lindsey | 38 | 58 | Conservative | No overall control |
| East of England | 1 | 2 | — | — |
| East Riding Of Yorkshire | 26 | 78 | Conservative | No overall control |
| East Staffordshire | 16 | 37 | Conservative | Labour |
| East Suffolk | 29 | 58 | Conservative | No overall control |
| Eastbourne | 9 | 27 | Liberal Democrats | Liberal Democrats |
| Eastleigh | 13 | 17 | Liberal Democrats | Liberal Democrats |
| Elmbridge | 16 | 18 | No overall control | No overall control |
| England | 4 | 4 | — | — |
| Epping Forest | 19 | 21 | Conservative | Conservative |
| Epsom And Ewell | 14 | 36 | Other | Other |
| Erewash | 19 | 50 | Conservative | Labour |
| Exeter | 13 | 13 | Labour | Labour |
| Fenland | 18 | 48 | Conservative | Conservative |
| Fermanagh and Omagh | 2 | 1 | No overall control | SDLP (Social Democratic & Labour Party) |
| Folkestone And Hythe | 15 | 36 | No overall control | No overall control |
| Forest Of Dean | 21 | 40 | Other | No overall control |
| Fylde | 17 | 44 | Conservative | Conservative |
| Gateshead | 22 | 23 | Labour | Labour |
| Gedling | 19 | 41 | Labour | Labour |
| Gravesham | 17 | 41 | No overall control | Labour |
| Great Yarmouth | 17 | 45 | Conservative | No overall control |
| Guildford | 21 | 50 | No overall control | Liberal Democrats |
| Halton | 18 | 20 | Labour | Labour |
| Harborough | 18 | 40 | Conservative | No overall control |
| Harborough | 1 | 1 | — | — |
| Harlow | 12 | 12 | Conservative | Conservative |
| Hart | 11 | 13 | No overall control | No overall control |
| Hartlepool | 12 | 12 | No overall control | No overall control |
| Havant | 10 | 11 | Conservative | Conservative |
| Herefordshire | 53 | 60 | No overall control | No overall control |
| Hertsmere | 16 | 46 | Conservative | No overall control |
| High Peak | 28 | 50 | No overall control | Labour |
| Hinckley And Bosworth | 16 | 34 | Liberal Democrats | Liberal Democrats |
| Horsham | 22 | 52 | Conservative | Liberal Democrats |
| Hyndburn | 12 | 12 | No overall control | No overall control |
| Ipswich | 16 | 16 | Labour | Labour |
| King's Lynn And West Norfolk | 43 | 72 | Conservative | No overall control |
| Kingston Upon Hull | 20 | 22 | Liberal Democrats | Liberal Democrats |
| Kirklees | 23 | 28 | Labour | Labour |
| Knowsley | 15 | 19 | Labour | Labour |
| Lancaster | 27 | 70 | No overall control | No overall control |
| Leeds | 33 | 34 | Labour | Labour |
| Leicester | 21 | 54 | Labour | Labour |
| Lewes | 21 | 52 | No overall control | No overall control |
| Lichfield | 22 | 48 | Conservative | No overall control |
| Lincoln | 10 | 12 | Labour | Labour |
| Lisburn and Castlereagh | 7 | 40 | No overall control | No overall control |
| Liverpool | 64 | 96 | Labour | Labour |
| London | 1 | 1 | — | — |
| Luton | 20 | 48 | Labour | Labour |
| Maidstone | 18 | 18 | No overall control | No overall control |
| Maldon | 17 | 39 | Other | No overall control |
| Malvern Hills | 18 | 31 | No overall control | No overall control |
| Manchester | 32 | 34 | Labour | Labour |
| Mansfield | 35 | 36 | Other | Labour |
| Mansfield | 1 | 1 | — | — |
| Medway | 23 | 62 | Conservative | Labour |
| Melton | 16 | 28 | Conservative | No overall control |
| Mid and East Antrim | 6 | 32 | No overall control | No overall control |
| Mid Devon | 22 | 51 | No overall control | Liberal Democrats |
| Mid Suffolk | 26 | 34 | No overall control | Green |
| Mid Sussex | 27 | 54 | Conservative | No overall control |
| Mid Ulster | 3 | 16 | No overall control | Sinn Féin |
| Middlesbrough | 20 | 50 | No overall control | Labour |
| Milton Keynes | 19 | 22 | No overall control | No overall control |
| Mole Valley | 13 | 45 | Liberal Democrats | Liberal Democrats |
| New Forest | 26 | 50 | Conservative | Conservative |
| Newark And Sherwood | 26 | 52 | Conservative | No overall control |
| Newcastle Upon Tyne | 26 | 29 | Labour | Labour |
| Newry, Mourne and Down | 1 | 5 | No overall control | Sinn Féin |
| North Devon | 25 | 51 | No overall control | Liberal Democrats |
| North East Derbyshire | 24 | 62 | Conservative | Labour |
| North East Lincolnshire | 15 | 16 | Conservative | Conservative |
| North Hertfordshire | 17 | 18 | No overall control | No overall control |
| North Kesteven | 24 | 48 | Conservative | Conservative |
| North Lincolnshire | 19 | 46 | Conservative | Conservative |
| North Norfolk | 32 | 46 | Liberal Democrats | Liberal Democrats |
| North Somerset | 35 | 72 | No overall control | No overall control |
| North Tyneside | 20 | 22 | Labour | Labour |
| North Warwickshire | 17 | 43 | Conservative | No overall control |
| North West Leicestershire | 38 | 46 | Conservative | No overall control |
| Norwich | 13 | 13 | Labour | Labour |
| Nottingham | 20 | 59 | Labour | Labour |
| Oadby And Wigston | 10 | 30 | Liberal Democrats | Liberal Democrats |
| Oldham | 20 | 75 | Labour | No overall control |
| Pendle | 11 | 12 | Conservative | No overall control |
| Peterborough | 20 | 21 | No overall control | No overall control |
| Plymouth | 19 | 19 | No overall control | Labour |
| Portsmouth | 14 | 14 | No overall control | No overall control |
| Preston | 16 | 20 | Labour | Labour |
| Reading | 16 | 18 | Labour | Labour |
| Redcar & Cleveland | 24 | 61 | No overall control | No overall control |
| Redditch | 10 | 11 | Conservative | Conservative |
| Reigate & Banstead | 15 | 15 | Conservative | Conservative |
| Ribble Valley | 26 | 40 | Conservative | No overall control |
| Rochdale | 20 | 23 | Labour | Labour |
| Rochford | 13 | 14 | Conservative | No overall control |
| Rossendale | 12 | 12 | Labour | Labour |
| Rother | 21 | 42 | No overall control | No overall control |
| Rugby | 14 | 15 | Conservative | No overall control |
| Runnymede | 14 | 16 | Conservative | No overall control |
| Rushcliffe | 24 | 46 | Conservative | Conservative |
| Rushmoor | 13 | 14 | Conservative | Conservative |
| Rutland | 15 | 30 | No overall control | No overall control |
| Salford | 20 | 23 | Labour | Labour |
| Sandwell | 24 | 26 | Labour | Labour |
| Sefton | 22 | 23 | Labour | Labour |
| Sevenoaks | 26 | 58 | Conservative | Conservative |
| Sheffield | 28 | 30 | No overall control | No overall control |
| Slough | 21 | 44 | Labour | No overall control |
| Solihull | 17 | 19 | Conservative | Conservative |
| South Derbyshire | 15 | 38 | No overall control | Labour |
| South Gloucestershire | 28 | 63 | Conservative | No overall control |
| South Hams | 20 | 33 | Conservative | Liberal Democrats |
| South Holland | 18 | 45 | Conservative | Conservative |
| South Kesteven | 30 | 68 | Conservative | No overall control |
| South Norfolk | 26 | 53 | Conservative | Conservative |
| South Oxfordshire | 21 | 39 | No overall control | Liberal Democrats |
| South Ribble | 23 | 59 | No overall control | Labour |
| South Staffordshire | 20 | 49 | Conservative | Conservative |
| South Tyneside | 18 | 20 | Labour | Labour |
| Southampton | 17 | 53 | Labour | Labour |
| Southend-On-Sea | 17 | 18 | No overall control | No overall control |
| Spelthorne | 13 | 44 | No overall control | No overall control |
| St Albans | 18 | 20 | Liberal Democrats | Liberal Democrats |
| Stafford | 23 | 42 | No overall control | No overall control |
| Staffordshire Moorlands | 27 | 71 | No overall control | No overall control |
| Stevenage | 13 | 13 | Labour | Labour |
| Stockport | 21 | 69 | No overall control | No overall control |
| Stockton-on-Tees | 27 | 67 | No overall control | No overall control |
| Stoke On Trent | 34 | 46 | No overall control | Labour |
| Stratford-On-Avon | 39 | 50 | Conservative | Liberal Democrats |
| Sunderland | 25 | 30 | Labour | Labour |
| Surrey Heath | 14 | 35 | No overall control | Liberal Democrats |
| Swale | 24 | 50 | No overall control | No overall control |
| Swindon | 19 | 20 | Conservative | Labour |
| Tameside | 19 | 63 | Labour | Labour |
| Tamworth | 10 | 10 | Conservative | No overall control |
| Tandridge | 15 | 15 | No overall control | Other |
| Teignbridge | 24 | 56 | No overall control | Liberal Democrats |
| Telford & Wrekin | 31 | 55 | Labour | Labour |
| Tendring | 32 | 49 | No overall control | No overall control |
| Test Valley | 20 | 47 | Conservative | Conservative |
| Tewkesbury | 20 | 43 | Conservative | No overall control |
| Thanet | 23 | 62 | No overall control | Labour |
| The Wrekin | 1 | 1 | — | — |
| Three Rivers | 13 | 14 | Liberal Democrats | Liberal Democrats |
| Thurrock | 16 | 16 | Conservative | No overall control |
| Tonbridge And Malling | 21 | 48 | Conservative | No overall control |
| Torbay | 16 | 36 | No overall control | Conservative |
| Torridge | 16 | 43 | No overall control | No overall control |
| Trafford | 21 | 67 | Labour | Labour |
| Tunbridge Wells | 17 | 18 | No overall control | No overall control |
| Uttlesford | 22 | 44 | Other | Other |
| Vale Of White Horse | 24 | 38 | Liberal Democrats | Liberal Democrats |
| Wakefield | 21 | 26 | Labour | Labour |
| Walsall | 20 | 22 | Conservative | Conservative |
| Warwick | 17 | 50 | No overall control | No overall control |
| Watford | 12 | 12 | Liberal Democrats | Liberal Democrats |
| Waverley | 24 | 57 | No overall control | No overall control |
| Wealden | 41 | 54 | Conservative | No overall control |
| Welwyn Hatfield | 16 | 17 | Conservative | No overall control |
| West Berkshire | 24 | 43 | Conservative | Liberal Democrats |
| West Devon | 18 | 34 | Conservative | No overall control |
| West Lancashire | 15 | 51 | No overall control | Labour |
| West Lindsey | 20 | 39 | No overall control | Liberal Democrats |
| West Oxfordshire | 16 | 19 | No overall control | No overall control |
| West Suffolk | 43 | 79 | Conservative | No overall control |
| Wigan | 25 | 76 | Labour | Labour |
| Winchester | 16 | 16 | Liberal Democrats | Liberal Democrats |
| Windsor & Maidenhead | 19 | 43 | Conservative | Liberal Democrats |
| Wirral | 22 | 66 | No overall control | No overall control |
| Woking | 10 | 10 | Liberal Democrats | Liberal Democrats |
| Wokingham | 18 | 19 | No overall control | No overall control |
| Wolverhampton | 20 | 67 | Labour | Labour |
| Worcester | 11 | 13 | No overall control | No overall control |
| Worthing | 11 | 12 | Labour | Labour |
| Wychavon | 27 | 49 | Conservative | Conservative |
| Wyre | 24 | 49 | Conservative | Conservative |
| Wyre Forest | 12 | 33 | No overall control | Conservative |
| York | 21 | 48 | No overall control | Labour |
See also Election Health for 2023's competitiveness figures and Council Control.
