
There were 23 by-elections in the 2019–24 Parliament. Nine seats were held by the same parties that had won them in the 2019 general election, and in 14 of them a different party won the seat. By comparison, there were five by-elections in the 2017–19 Parliament: four holds and one gain.
The 2019–24 Parliament had the highest number of by-elections since the 1987–1992 Parliament, which also had 23 by-elections.
All those who won by-elections in the 2019–24 Parliament stood in the 2024 general election; five lost and 18 held their seat. However, constituency boundaries changed for the 2024 general election and the constituency won by an MP in 2024 may have been different from the previous seat.
Why were by-elections triggered?
Five of the 23 by-elections were caused by the death of the sitting MP (in Chesham and Amersham, Old Bexley and Sidcup, Southend West, Birmingham Erdington, Rochdale). The remaining 18 were due to resignations.
Reasons for these resignations can be grouped into four broad categories:
- Eight resignations were for reasons relating to scandal, misconduct or criminal convictions: Hartlepool, North Shropshire, Tiverton and Honiton, Wakefield, City of Chester, Uxbridge and South Ruislip, Somerton and Frome, Tamworth.
- Three by-elections occurred after MPs who had already announced that they would not be returning after the 2024 general election resigned earlier for personal reasons: Selby and Ainsty, Mid Bedfordshire, Kingswood.
- Four by-elections took place after MPs resigned to take up positions outside Parliament: Batley and Spen, West Lancashire, Stretford and Urmston, Airdrie and Shotts.
- Three by-elections were due to resignations of MPs following successful recall petitions: Rutherglen and Hamilton West, Wellingborough, Blackpool South.
Winning parties compared with the 2019 general election
Labour won 13 by-elections during the 2019–24 Parliament, with the Conservatives and Liberal Democrats each winning four, and the Scottish National Party (SNP) and the Workers Party of Britain (WPB) each winning one.
Labour held five seats (Batley and Spen, Birmingham Erdington, City of Chester, Stretford and Urmston, and West Lancashire) and gained seven seats from the Conservatives (Wakefield, Selby and Ainsty, Mid Bedfordshire, Tamworth, Kingswood, Wellingborough and Blackpool South) and one from the SNP (Rutherglen and Hamilton West).
The Conservatives retained three seats (Old Bexley and Sidcup, Southend West, and Uxbridge and South Ruislip) and gained one from Labour (Hartlepool).
The Liberal Democrats gained all four of their seats from the Conservatives (Chesham and Amersham, North Shropshire, Tiverton and Honiton, and Somerton and Frome).
The SNP held onto their seat in Airdrie and Shotts, and the Workers Party of Britain gained a seat from Labour in Rochdale.
The chart below shows the percentage point change in the vote shares of winners of by-elections compared with the 2019 general election. Negative values represent a lower vote share in the by-election compared with the 2019 general election.
In most cases, the winning parties had substantially higher vote shares in the by-elections than in the 2019 general election. Notable examples include Rochdale, Tiverton and Honiton and North Shropshire.
In three by-elections, the winning party won with a smaller share of the vote then they had achieved in the 2019 general election (Batley and Spen, Old Bexley and Sidcup and Uxbridge and South Ruislip).
By-election winners in the 2024 general election
All Liberal Democrat and Labour by-election winners won their seats again in the 2024 general election. The remaining five of the 23 winners stood again in 2024 but lost their seat; three Conservative candidates, one SNP and one Workers Party of Britain.
Hartlepool
The first by-election of the 2019–24 Parliament occurred in Hartlepool following the resignation of Labour’s Mike Hill after accusations of sexual harassment and victimisation.
It was won by Jill Mortimer, who became the first Conservative to represent the area since 1959. This seat was a Conservative gain with a 51.9% vote share and a 23.2% majority.
At the 2024 general election, the seat was lost to Labour’s Jonathan Brash who defeated Jill Mortimer, the Conservative candidate.
Chesham and Amersham
The by-election of Chesham and Amersham followed the death of Dame Cheryl Gillan in April 2021. Sarah Green won the June 2021 by-election for the Liberal Democrats with a 56.7% vote share. She became the first non-Conservative to win the seat since its creation.
Sarah Green won the new Chesham and Amersham constituency in 2024.
Southend West
In Southend West, Anna Firth won the highest by-election vote share at 86.1%. The by-election had been triggered by the fatal attack on the sitting MP, Sir David Amess, and was not contested by the other main parties.
Anna Firth lost her seat in the general election to Labour’s David Burton-Sampson.
Wakefield
In Wakefield, the resignation of the Conservative MP, Imran Ahmad Khan, following criminal conviction for child sexual assault triggered the by-election.
Simon Lightwood gained this seat for Labour. He was elected with a 47.9% vote share. This was a seat regained by Labour after its loss to the Conservatives in the 2019 general election. Previously it had been a Labour seat since 1932.
Simon Lightwood remains the MP for the new Wakefield and Rothwell seat after the 2024 general election.
Uxbridge and South Ruislip
In Uxbridge and South Ruislip, the by-election held in July 2023 was due to the resignation of Conservatives Boris Johnson following a Commons Privileges Committee report. This concluded that he had misled the House over breaches of covid-19 regulations.
The constituency was retained by the Conservative’s Steve Tuckwell, with a 45.3% vote share and a majority of 1.6% at the by-election.
Labour’s Danny Beales defeated Steve Tuckwell in the new Uxbridge and South Ruislip seat in the 2024 general election.
Rutherglen and Hamilton West
A recall petition removed sitting SNP MP Margaret Ferrier for Rutherglen and Hamilton West, following a 30-day suspension from the House for breaching covid-19 regulations.
Labour’s Michael Shanks won the by-election with a 58.6% vote share and a 20.4% swing from the SNP. Constituency boundaries have changed but Michael Shanks won the successor constituency of Rutherglen in the 2024 election.
Kingswood
The by-election held in Kingswood in February 2024 followed the resignation of Conservative Chris Skidmore over the government’s proposal to introduce the Offshore Petroleum Licensing Bill. Mr Skidmore had previously said he would stand down at the next election.
Labour’s Damien Egan gained this seat in the by-election with a vote share of 44.9%. He won the new Bristol North East seat, which comprises some of the Kingswood constituency’s area, in the 2024 general election.
Wellingborough
In Wellingborough, Conservative Peter Bone was removed by a recall petition in December 2023. This had been triggered following allegations relating to bullying, harassment, and sexual misconduct, and his subsequent suspension from the House of Commons for six weeks.
Labour’s Gen Kitchen won the by-election with a 45.9% vote share. Gen Kitchen held the new Wellingborough and Rushden seat at the 2024 general election.
Further reading
Full results and analysis from the 2024 general election are available in our research briefing, General election 2024 results.
Full sets of data for all general elections up to 2010 are available from the Library’s election results website.
Votes for each candidate at by-elections are available at:
- House of Commons Library, By-elections in the 2019 Parliament
- House of Commons Library, By-elections in the 2017 Parliament
To see how constituency boundaries changed at the 2024 general election, see our Insight on the 2023 boundary review.
About the author: Meghan Seaborne is completing an internship with the House of Commons Library. Richard Cracknell is the elections specialist in the Social and General Statistics section of the Library.
Picture credit: Rennett Stowe on Flickr. CC BY 2.0