All years
1999 council by-elections
194 by-elections on our record, 28 of them won by a different party from last time.
Gains and losses by party
| Party | Gained | Lost | Net |
|---|---|---|---|
| Conservative | 19 | 1 | ▲ +18 |
| Liberal Democrats | 8 | 7 | ▲ +1 |
| Other | 1 | 0 | ▲ +1 |
| Labour | 0 | 20 | ▼ -20 |
Every by-election
| Date | Ward | Winner | Previously |
|---|---|---|---|
| 7 Jan | HambletonSelby | Conservative 52.3% | Gain from Labour |
| 7 Jan | Rixton and WoolstonWarrington | Labour 59.2% | Hold |
| 14 Jan | ParkSheffield | Liberal Democrats 48.6% | Gain from Labour |
| 21 Jan | IngthorpeBlackpool | Labour 63.2% | Not known |
| 21 Jan | North DefoeHackney | Labour 44.4% | Not known |
| 21 Jan | Marshalls Cross [merged 5219faec]St. Helens | Liberal Democrats 69.0% | Hold |
| 21 Jan | Newton West [merged 4f963703]St. Helens | Liberal Democrats 53.2% | Gain from Labour |
| 21 Jan | Thatto Heath [merged 87b02bf6]St. Helens | Labour 76.1% | Hold |
| 4 Feb | Marston MoorHarrogate | Liberal Democrats 61.4% | Gain from Conservative |
| 4 Feb | UptonSlough | Conservative 59.9% | Gain from Labour |
| 11 Feb | HolmerHereford | Liberal Democrats 35.6% | Hold |
| 16 Feb | Aldershot NorthHampshire | Conservative 43.2% | Not known |
| 18 Feb | North WestBarnsley | Labour 60.1% | Not known |
| 18 Feb | South WestBarnsley | Labour 43.5% | Hold |
| 18 Feb | Wombwell NorthBarnsley | Liberal Democrats 54.4% | Gain from Labour |
| 18 Feb | Stanmore SouthHarrow | Labour 56.8% | Not known |
| 18 Feb | ChaddesleyWorcestershire | Conservative 57.7% | Not known |
| 18 Feb | ChaddesleyWyre Forest | Conservative 89.3% | Not known |
| 25 Feb | Harmans WaterBracknell Forest | Labour 50.2% | Not known |
| 25 Feb | SheeringEpping Forest | Conservative 50.9% | Not known |
| 25 Feb | BarnwoodGloucestershire | Conservative 43.9% | Not known |
| 25 Feb | Wansbeck Newbiggin EastNorthumberland | Liberal Democrats 58.7% | Not known |
| 25 Feb | HawksheadSouth Lakeland | Liberal Democrats 55.7% | Hold |
| 4 Mar | MelbournCambridgeshire | Liberal Democrats 51.0% | Not known |
| 4 Mar | BykerNewcastle Upon Tyne | Labour 57.2% | Hold |
| 11 Mar | KilburnBrent | Labour 64.3% | Hold |
| 11 Mar | HawcoatCumbria | Conservative 82.9% | Not known |
| 11 Mar | Riverside [merged b53c1fde]North Tyneside | Labour 79.6% | Hold |
| 18 Mar | Little Horton [merged 43668dc1]Bradford | Labour 60.2% | Hold |
| 18 Mar | Congleton & BuglawtonCheshire | Liberal Democrats 41.5% | Not known |
| 18 Mar | St Margaret'sIpswich | Conservative 43.2% | Hold |
| 25 Mar | Seacroft [merged 066e56d8]Leeds | Labour 80.3% | Hold |
| 25 Mar | AttinghamShrewsbury and Atcham | Not recorded | Hold |
| 25 Mar | SunninghillWindsor & Maidenhead | Conservative 51.2% | Not known |
| 31 Mar | Bradninch & CreedyDevon | Conservative 51.0% | Not known |
| 8 Apr | Kingsbrook [merged 3b57ade7]Bedford | Liberal Democrats 53.0% | Gain from Labour |
| 8 Apr | Houghton & WytonCambridgeshire | Conservative 52.0% | Not known |
| 8 Apr | DownhamLewisham | Liberal Democrats 61.2% | Hold |
| 8 Apr | PrestonTorbay | Conservative 51.4% | Gain from Liberal Democrats |
| 22 Apr | Swiss CottageCamden | Conservative 43.9% | Gain from Labour |
| 6 May | WendoverBuckinghamshire | Conservative 55.8% | Not known |
| 6 May | MarazionCornwall | Liberal Democrats 50.6% | Not known |
| 6 May | Upper KentCumbria | Liberal Democrats 55.7% | Not known |
| 6 May | FerndownDorset | Conservative 65.7% | Not known |
| 6 May | HellinglyEast Sussex | Liberal Democrats 54.8% | Not known |
| 6 May | Malling Rural North EastKent | Liberal Democrats 44.2% | Not known |
| 6 May | Streatham SouthLambeth | Labour 45.7% | Hold |
| 6 May | KEMPSEYMalvern Hills | Conservative 62.8% | Not known |
| 6 May | Upton On SevernMalvern Hills | Liberal Democrats 38.5% | Not known |
| 6 May | AcleNorfolk | Conservative 43.2% | Not known |
| 6 May | LakenhamNorfolk | Labour 53.5% | Not known |
| 6 May | Ripon EastNorth Yorkshire | Liberal Democrats 43.8% | Not known |
| 6 May | The HeathsStaffordshire | Labour 58.5% | Not known |
| 6 May | AddlestoneSurrey | Conservative 59.1% | Not known |
| 6 May | SteyningWest Sussex | Conservative 44.0% | Not known |
| 6 May | BroadwayWorcestershire | Conservative 63.5% | Not known |
| 13 May | GoresbrookBarking and Dagenham | Liberal Democrats 56.4% | Not known |
| 20 May | Hope EndHerefordshire | Conservative 49.5% | Gain from Liberal Democrats |
| 27 May | BroadwindsorWest Dorset | Conservative 63.9% | Gain from Liberal Democrats |
| 3 Jun | Highfield and St PaulsDacorum | Labour 54.1% | Not known |
| 3 Jun | Huntingdon NorthHuntingdonshire | Conservative 70.7% | Not known |
| 10 Jun | Belle VueCumbria | Conservative 37.5% | Not known |
| 10 Jun | CentralCumbria | Labour 45.0% | Not known |
| 10 Jun | The HangersEast Hampshire | Conservative 57.0% | Hold |
| 10 Jun | CrabtreeHammersmith and Fulham | Conservative 47.6% | Not known |
| 10 Jun | South TottenhamHaringey | Labour 53.6% | Hold |
| 10 Jun | Hemel Hempstead South EastHertfordshire | Conservative 47.6% | Not known |
| 10 Jun | MarineLancashire | Labour 60.4% | Not known |
| 10 Jun | PepysLewisham | Other 40.4% | Gain from Labour |
| 10 Jun | BenchillManchester | Labour 54.2% | Not known |
| 10 Jun | North CravenNorth Yorkshire | Conservative 66.4% | Not known |
| 10 Jun | PalewellRichmond upon Thames | Conservative 49.1% | Not known |
| 10 Jun | MilnrowRochdale | Liberal Democrats 52.2% | Not known |
| 10 Jun | BridgeSuffolk | Labour 51.5% | Not known |
| 10 Jun | Westbourne [merged c1b2ff07]Westminster | Labour 61.6% | Not known |
| 10 Jun | St. JohnsWoking | Conservative 56.3% | Hold |
| 10 Jun | Fallings ParkWolverhampton | Labour 46.9% | Hold |
| 10 Jun | Warren [merged ff5bc6dc]Wyre | Labour 58.2% | Not known |
| 17 Jun | Lynn CentralKing's Lynn And West Norfolk | Labour 45.5% | Hold |
| 17 Jun | St. Ives NorthPenwith | Liberal Democrats 39.0% | Not known |
| 17 Jun | West EndSurrey Heath | Conservative 44.7% | Hold |
| 17 Jun | Hollybush [merged c8172430]Welwyn Hatfield | Labour 68.8% | Not known |
| 24 Jun | WidewaterAdur | Conservative 50.3% | Gain from Labour |
| 24 Jun | LudfordEast Lindsey | Conservative 52.2% | Hold |
| 24 Jun | Grange HillEpping Forest | Liberal Democrats 51.8% | Hold |
| 24 Jun | ManeaFenland | Conservative 71.8% | Hold |
| 24 Jun | GwernyfedPowys | Not recorded | Not known |
| 24 Jun | GamlingaySouth Cambridgeshire | Liberal Democrats 51.7% | Hold |
| 24 Jun | West End [merged 95da0148]Westminster | Conservative 65.5% | Hold |
| 1 Jul | MoorcloseAllerdale | Labour 64.0% | Hold |
| 1 Jul | Bromley CommonBromley | Conservative 48.3% | Not known |
| 1 Jul | Freshwater NortonIsle Of Wight | Conservative 41.0% | Hold |
| 1 Jul | Chapel GreenSheffield | Liberal Democrats 53.2% | Hold |
| 1 Jul | BalhamWandsworth | Conservative 61.2% | Hold |
| 1 Jul | AlderburyWiltshire | Conservative 60.6% | Not known |
| 8 Jul | Boyd ValleySouth Gloucestershire | Conservative 48.0% | Gain from Liberal Democrats |
| 15 Jul | Rustington SouthArun | Conservative 64.1% | Hold |
| 15 Jul | Stockland GreenBirmingham | Labour 62.9% | Hold |
| 15 Jul | Fareham WestFareham | Conservative 60.6% | Gain from Liberal Democrats |
| 15 Jul | RectoryHackney | Labour 52.7% | Hold |
| 15 Jul | ChurchdownLewisham | Labour 41.8% | Hold |
| 15 Jul | Hateley HeathSandwell | Labour 44.4% | Hold |
| 22 Jul | Evie, Rendall, Rousay Egilsay & WyreOrkney Islands | Not recorded | Not known |
| 22 Jul | Bayston HillShropshire | Conservative 35.9% | Not known |
| 22 Jul | CathedralSouthwark | Liberal Democrats 59.6% | Hold |
| 29 Jul | Hoyland EastBarnsley | Labour 72.0% | Hold |
| 29 Jul | South WestBarnsley | Not recorded | Hold |
| 29 Jul | BucklowCheshire | Conservative 83.8% | Not known |
| 29 Jul | CallingtonCornwall | Not recorded | Not known |
| 12 Aug | AdwickDoncaster | Labour 38.0% | Hold |
| 19 Aug | VassallLambeth | Labour 48.5% | Hold |
| 19 Aug | Thringstone [merged de315860]North West Leicestershire | Labour 44.5% | Not known |
| 26 Aug | Elie, St Monans and PittenweemFife | Conservative 28.6% | Not known |
| 26 Aug | CentralManchester | Labour 50.1% | Not known |
| 26 Aug | BristnallSandwell | Labour 56.8% | Hold |
| 2 Sept | Houghton EastSouth Bedfordshire | Liberal Democrats 69.0% | Not known |
| 9 Sept | Arlesey & LangfordBedfordshire | Labour 47.8% | Not known |
| 9 Sept | Chilwell East [merged 6968f50e]Broxtowe | Conservative 49.6% | Gain from Labour |
| 9 Sept | RothleyLeicestershire | Conservative 72.0% | Not known |
| 9 Sept | NortonMid Suffolk | Conservative 61.4% | Hold |
| 9 Sept | St MinverNorth Cornwall | Not recorded | Not known |
| 9 Sept | Old Marston & RisinghurstOxford | Liberal Democrats 43.7% | Not known |
| 9 Sept | ColburnRichmondshire | Not recorded | Hold |
| 9 Sept | BasildonWest Berkshire | Liberal Democrats 57.5% | Not known |
| 16 Sept | Old MoulshamChelmsford | Conservative 34.4% | Gain from Liberal Democrats |
| 16 Sept | South Ribble CentralLancashire | Labour 38.5% | Not known |
| 23 Sept | Boston Rural SouthLincolnshire | Conservative 46.8% | Not known |
| 23 Sept | Bandley Hill [merged d36f31eb]Stevenage | Labour 73.9% | Hold |
| 23 Sept | Cheam SouthSutton | Conservative 70.1% | Hold |
| 28 Sept | OversladeRugby | Conservative 41.1% | Gain from Labour |
| 30 Sept | TenantryBrighton & Hove | Labour 51.9% | Hold |
| 30 Sept | OustonChester-le-Street | Labour 83.9% | Not known |
| 30 Sept | MandevilleEaling | Conservative 54.8% | Gain from Labour |
| 30 Sept | St. JamesHigh Peak | Labour 41.6% | Hold |
| 30 Sept | St. Johns 2Isle Of Wight | Liberal Democrats 46.3% | Hold |
| 30 Sept | Brent NorthSedgemoor | Conservative 77.7% | Hold |
| 30 Sept | Godalming North WestWaverley | Liberal Democrats 57.9% | Hold |
| 30 Sept | CARTERTON SOUTHWest Oxfordshire | Conservative 46.3% | Not known |
| 7 Oct | Pontefract SouthWakefield | Labour 55.0% | Hold |
| 14 Oct | EastburyBarking and Dagenham | Liberal Democrats 70.8% | Not known |
| 14 Oct | RingsteadEast Northamptonshire | Conservative 64.5% | Hold |
| 14 Oct | ScotswoodNewcastle Upon Tyne | Labour 66.9% | Hold |
| 21 Oct | PeacehavenEast Sussex | Conservative 43.9% | Not known |
| 21 Oct | YarboroughNorth East Lincolnshire | Liberal Democrats 67.5% | Not known |
| 21 Oct | AbbeyNottingham | Conservative 61.9% | Hold |
| 21 Oct | PortlandNottingham | Conservative 41.5% | Gain from Labour |
| 21 Oct | CollegeTelford & Wrekin | Conservative 52.0% | Not known |
| 28 Oct | CatshillBromsgrove | Conservative 57.5% | Gain from Labour |
| 28 Oct | EllandCalderdale | Liberal Democrats 59.5% | Hold |
| 28 Oct | RocheCornwall | Liberal Democrats 47.0% | Not known |
| 28 Oct | DawlishDevon | Conservative 46.1% | Not known |
| 28 Oct | UffdownHereford & Worcester | Conservative 77.0% | Not known |
| 28 Oct | ClerkenwellIslington | Liberal Democrats 55.4% | Hold |
| 28 Oct | CambridgeKingston upon Thames | Liberal Democrats 62.0% | Hold |
| 28 Oct | Loughborough ShelthorpeLeicestershire | Labour 52.3% | Not known |
| 28 Oct | HoltNorfolk | Liberal Democrats 55.4% | Not known |
| 28 Oct | Oxford WestOxfordshire | Labour 39.8% | Not known |
| 28 Oct | Temple CowleyOxfordshire | Liberal Democrats 42.5% | Not known |
| 28 Oct | LydeardSomerset | Conservative 68.2% | Not known |
| 28 Oct | Waverley WestSurrey | Conservative 52.1% | Not known |
| 4 Nov | Knutsford OverMacclesfield | Conservative 52.5% | Hold |
| 11 Nov | Great WitchinghamBroadland | Conservative 46.7% | Gain from Labour |
| 11 Nov | Morpeth KirkhillCastle Morpeth | Labour 40.8% | Hold |
| 11 Nov | Asheridge ValeChiltern | Liberal Democrats 45.1% | Hold |
| 11 Nov | WalpoleEaling | Labour 52.3% | Hold |
| 11 Nov | Debden GreenEpping Forest | Labour 68.8% | Hold |
| 11 Nov | Loughton St. JohnsEssex | Labour 48.4% | Not known |
| 11 Nov | Wansbeck HirstNorthumberland | Labour 58.0% | Not known |
| 18 Nov | Three ElmsHerefordshire | Conservative 53.1% | Gain from Liberal Democrats |
| 18 Nov | Gainsborough NorthLincolnshire | Liberal Democrats 46.8% | Not known |
| 18 Nov | Disserth and TrecoedPowys | Not recorded | Not known |
| 18 Nov | Hateley HeathSandwell | Liberal Democrats 48.6% | Gain from Labour |
| 18 Nov | St PaulsSandwell | Not recorded | Hold |
| 18 Nov | Burntwood ChaseStaffordshire | Labour 56.9% | Not known |
| 18 Nov | Ewell Court Auriol & CuddingtonSurrey | Not recorded | Not known |
| 18 Nov | Margate WestThanet | Conservative 72.9% | Gain from Labour |
| 19 Nov | ConisbroughDoncaster | Labour 53.5% | Hold |
| 25 Nov | Sidlaw East and AshludieAngus | SNP 66.3% | Hold |
| 25 Nov | Blackwater and HawleyHart | Liberal Democrats 58.7% | Hold |
| 25 Nov | West HeathRushmoor | Liberal Democrats 49.0% | Hold |
| 25 Nov | TudhoeSedgefield | Labour 60.2% | Hold |
| 2 Dec | GreasbroughRotherham | Labour 81.7% | Hold |
| 2 Dec | VerulamSt. Albans | Conservative 47.0% | Not known |
| 2 Dec | HindsfordWigan | Liberal Democrats 57.1% | Hold |
| 9 Dec | Rosyth EastFife | Labour 43.0% | Not known |
| 9 Dec | WillitonWest Somerset | Conservative 64.6% | Gain from Labour |
| 16 Dec | WhitfordBromsgrove | Conservative 51.1% | Not known |
| 16 Dec | Middle DealDover | Labour 50.3% | Not known |
| 16 Dec | Andover NorthHampshire | Conservative 47.4% | Not known |
| 16 Dec | HillriseIslington | Liberal Democrats 61.4% | Gain from Labour |
| 16 Dec | Banbury RuscoteOxfordshire | Conservative 48.0% | Not known |
| 16 Dec | Sonning CommonOxfordshire | Liberal Democrats 47.0% | Not known |
| 16 Dec | MillwayTest Valley | Conservative 60.7% | Hold |
| 23 Dec | BeechwoodNewport | Liberal Democrats 48.3% | Gain from Labour |
