Marginal seats
Liberal Democrats target seatsThe 27 seats where the Liberal Democrats came second at the 2024 general election, ranked by the swing needed to win them. It won 72 seats in 2024; 326 are needed for a majority.
Barnsley North Barnsley South Beckenham and Penge Bethnal Green and Stepney Bicester and Woodstock Birmingham Edgbaston Birmingham Erdington Birmingham Hall Green and Moseley Birmingham Hodge Hill and Solihull North Birmingham Ladywood Birmingham Northfield Birmingham Perry Barr Birmingham Selly Oak Birmingham Yardley Blackley and Middleton South Blackpool North and Fleetwood Blaydon and Consett Blyth and Ashington Bolton South and Walkden Brent East Brent West Bridgwater Bridlington and The Wolds Brigg and Immingham Brighton Kemptown and Peacehaven Brighton Pavilion Bristol Central Bristol North East Bristol North West Bristol South Broadland and Fakenham Bromley and Biggin Hill Bromsgrove Broxbourne Broxtowe Buckingham and Bletchley #9 Burnley: needs 4.31% swing from Lab Burton and Uttoxeter Bury North Bury South Bury St Edmunds and Stowmarket Calder Valley Camborne and Redruth #25 Cambridge: needs 13.16% swing from Lab Cannock Chase Canterbury Carlisle Carshalton and Wallington Castle Point Central Devon Central Suffolk and North Ipswich Chatham and Aylesford Cheadle Chelmsford Chelsea and Fulham Cheltenham Chesham and Amersham Chester North and Neston Chester South and Eddisbury Chesterfield Chichester Chingford and Woodford Green Chippenham Chipping Barnet Chorley #18 Christchurch: needs 7.88% swing from Con Cities of London and Westminster City of Durham Clacton #27 Clapham and Brixton Hill: needs 21.07% swing from Lab Colchester Colne Valley Congleton Corby and East Northamptonshire Coventry East Coventry North West Coventry South Cramlington and Killingworth Crawley Crewe and Nantwich Croydon East Croydon South Croydon West Dagenham and Rainham Darlington Dartford Daventry Derby North Derby South Derbyshire Dales Dewsbury and Batley Didcot and Wantage Doncaster Central Doncaster East and the Isle of Axholme Doncaster North Dorking and Horley Dover and Deal Droitwich and Evesham Dudley Dulwich and West Norwood Dunstable and Leighton Buzzard Ealing Central and Acton Ealing North Ealing Southall Earley and Woodley Easington #21 East Grinstead and Uckfield: needs 8.42% swing from Con East Ham #3 East Hampshire: needs 1.28% swing from Con East Surrey East Thanet East Wiltshire East Worthing and Shoreham Eastbourne Eastleigh Edmonton and Winchmore Hill Ellesmere Port and Bromborough Eltham and Chislehurst Ely and East Cambridgeshire Enfield North Epping Forest Epsom and Ewell Erewash Erith and Thamesmead Esher and Walton Exeter Exmouth and Exeter East Fareham and Waterlooville #2 Farnham and Bordon: needs 1.27% swing from Con Faversham and Mid Kent Feltham and Heston Filton and Bradley Stoke Finchley and Golders Green Folkestone and Hythe Forest of Dean Frome and East Somerset Fylde Gainsborough Gateshead Central and Whickham Gedling Gillingham and Rainham Glastonbury and Somerton Gloucester #1 Godalming and Ash: needs 0.82% swing from Con Goole and Pocklington Gorton and Denton Gosport Grantham and Bourne Gravesham Great Grimsby and Cleethorpes Great Yarmouth Greenwich and Woolwich Guildford Hackney North and Stoke Newington Hackney South and Shoreditch Halesowen Halifax #10 Hamble Valley: needs 4.45% swing from Con Hammersmith and Chiswick Hampstead and Highgate Harborough, Oadby and Wigston Harlow Harpenden and Berkhamsted Harrogate and Knaresborough Harrow East Harrow West Hartlepool Harwich and North Essex Hastings and Rye Havant Hayes and Harlington Hazel Grove Hemel Hempstead Hendon Henley and Thame Hereford and South Herefordshire Herne Bay and Sandwich Hertford and Stortford Hertsmere Hexham Heywood and Middleton North High Peak #14 Hinckley and Bosworth: needs 5.66% swing from Con Hitchin Holborn and St Pancras Honiton and Sidmouth Hornchurch and Upminster Hornsey and Friern Barnet Horsham Houghton and Sunderland South Hove and Portslade Huddersfield Huntingdon Hyndburn Ilford North Ilford South Ipswich Isle of Wight East Isle of Wight West Islington North Islington South and Finsbury Jarrow and Gateshead East Keighley and Ilkley Kenilworth and Southam Kensington and Bayswater Kettering Kingston and Surbiton Kingston upon Hull East Kingston upon Hull North and Cottingham Kingston upon Hull West and Haltemprice Kingswinford and South Staffordshire Knowsley Lancaster and Wyre Leeds Central and Headingley Leeds East Leeds North East Leeds North West Leeds South West and Morley Leeds South Leeds West and Pudsey Leicester East Leicester South Leicester West Leigh and Atherton Lewes Lewisham East Lewisham North Lewisham West and East Dulwich Leyton and Wanstead Lichfield Lincoln Liverpool Garston Liverpool Riverside Liverpool Walton Liverpool Wavertree Liverpool West Derby Loughborough Louth and Horncastle Lowestoft Luton North Luton South and South Bedfordshire Macclesfield Maidenhead Maidstone and Malling Makerfield Maldon Manchester Central Manchester Rusholme Manchester Withington Mansfield Melksham and Devizes Melton and Syston Meriden and Solihull East Mid Bedfordshire #12 Mid Buckinghamshire: needs 5.44% swing from Con Mid Cheshire Mid Derbyshire Mid Dorset and North Poole Mid Leicestershire Mid Norfolk Mid Sussex Middlesbrough and Thornaby East Middlesbrough South and East Cleveland Milton Keynes Central Milton Keynes North Mitcham and Morden Morecambe and Lunesdale New Forest East New Forest West Newark Newbury Newcastle upon Tyne Central and West Newcastle upon Tyne East and Wallsend Newcastle upon Tyne North Newcastle-under-Lyme Newton Abbot Newton Aycliffe and Spennymoor Normanton and Hemsworth North Bedfordshire North Cornwall #7 North Cotswolds: needs 3.34% swing from Con North Devon #5 North Dorset: needs 1.60% swing from Con North Durham North East Cambridgeshire North East Derbyshire North East Hampshire North East Hertfordshire North East Somerset and Hanham North Herefordshire North Norfolk North Northumberland North Shropshire North Somerset North Warwickshire and Bedworth North West Cambridgeshire North West Essex North West Hampshire North West Leicestershire North West Norfolk Northampton North Northampton South Norwich North Norwich South Nottingham East Nottingham North and Kimberley Nottingham South Nuneaton Old Bexley and Sidcup Oldham East and Saddleworth Oldham West, Chadderton and Royton Orpington Ossett and Denby Dale Oxford East Oxford West and Abingdon Peckham Pendle and Clitheroe Penistone and Stocksbridge Penrith and Solway Peterborough Plymouth Moor View Plymouth Sutton and Devonport Pontefract, Castleford and Knottingley Poole Poplar and Limehouse Portsmouth North Portsmouth South Preston Putney Queen's Park and Maida Vale Rawmarsh and Conisbrough Rayleigh and Wickford Reading Central Reading West and Mid Berkshire Redcar Redditch Reigate Ribble Valley Richmond and Northallerton Richmond Park Rochdale Rochester and Strood Romford #6 Romsey and Southampton North: needs 2.19% swing from Con Rossendale and Darwen Rother Valley Rotherham Rugby Ruislip, Northwood and Pinner Runcorn and Helsby #19 Runnymede and Weybridge: needs 7.91% swing from Con Rushcliffe Rutland and Stamford Salford Salisbury Scarborough and Whitby Scunthorpe Sefton Central Selby #13 Sevenoaks: needs 5.45% swing from Con Sheffield Brightside and Hillsborough Sheffield Central #20 Sheffield Hallam: needs 7.94% swing from Lab Sheffield Heeley Sheffield South East Sherwood Forest Shipley Shrewsbury Sittingbourne and Sheppey Skipton and Ripon Sleaford and North Hykeham Slough Smethwick Solihull West and Shirley South Basildon and East Thurrock South Cambridgeshire South Cotswolds South Derbyshire South Devon South Dorset South East Cornwall South Holland and The Deepings South Leicestershire South Norfolk South Northamptonshire South Ribble South Shields #4 South Shropshire: needs 1.57% swing from Con South Suffolk South West Devon #11 South West Hertfordshire: needs 4.62% swing from Con South West Norfolk South West Wiltshire Southampton Itchen Southampton Test Southend East and Rochford Southend West and Leigh Southgate and Wood Green Southport Spelthorne Spen Valley St Albans St Austell and Newquay St Helens North St Helens South and Whiston St Ives St Neots and Mid Cambridgeshire Stafford Staffordshire Moorlands Stalybridge and Hyde Stevenage Stockport Stockton North Stockton West Stoke-on-Trent Central Stoke-on-Trent North Stoke-on-Trent South Stone, Great Wyrley and Penkridge Stourbridge Stratford and Bow Stratford-on-Avon Streatham and Croydon North Stretford and Urmston Stroud Suffolk Coastal Sunderland Central Surrey Heath #17 Sussex Weald: needs 6.96% swing from Con Sutton and Cheam Sutton Coldfield Swindon North Swindon South Tamworth Tatton Taunton and Wellington Telford Tewkesbury The Wrekin Thirsk and Malton Thornbury and Yate Thurrock Tipton and Wednesbury Tiverton and Minehead Tonbridge Tooting Torbay #8 Torridge and Tavistock: needs 3.89% swing from Con Tottenham Truro and Falmouth Tunbridge Wells Twickenham Tynemouth Uxbridge and South Ruislip Vauxhall and Camberwell Green Wakefield and Rothwell Wallasey Walsall and Bloxwich Walthamstow Warrington North Warrington South Warwick and Leamington Washington and Gateshead South Watford Waveney Valley Weald of Kent Wellingborough and Rushden Wells and Mendip Hills Welwyn Hatfield West Bromwich West Dorset West Ham and Beckton West Lancashire West Suffolk #16 West Worcestershire: needs 5.99% swing from Con Westmorland and Lonsdale Weston-super-Mare Wetherby and Easingwold Whitehaven and Workington Widnes and Halewood Wigan Wimbledon Winchester Windsor Wirral West Witham Witney Woking Wokingham Wolverhampton North East Wolverhampton South East Wolverhampton West Worcester Worsley and Eccles Worthing West Wycombe Wyre Forest Wythenshawe and Sale East Yeovil York Central York Outer East Antrim South Antrim Lagan Valley Upper Bann Belfast North East Londonderry West Tyrone Foyle North Antrim Mid Ulster Fermanagh and South Tyrone South Down North Down Strangford Belfast East Belfast West Belfast South and Mid Down Newry and Armagh Berwickshire, Roxburgh and Selkirk Arbroath and Broughty Ferry Dunfermline and Dollar Airdrie and Shotts East Kilbride and Strathaven East Renfrewshire Edinburgh East and Musselburgh Edinburgh North and Leith Edinburgh South West Alloa and Grangemouth Glasgow South West Inverclyde and Renfrewshire West Kilmarnock and Loudoun Livingston Midlothian Motherwell, Wishaw and Carluke Paisley and Renfrewshire South Angus and Perthshire Glens Stirling and Strathallan West Dunbartonshire Moray West, Nairn and Strathspey Argyll, Bute and South Lochaber West Aberdeenshire and Kincardine Gordon and Buchan Cowdenbeath and Kirkcaldy Aberdeen South Edinburgh West Lothian East Ayr, Carrick and Cumnock Central Ayrshire Orkney and Shetland Na h-Eileanan an Iar North Ayrshire and Arran Perth and Kinross-shire Dundee Central Falkirk Bathgate and Linlithgow Inverness, Skye and West Ross-shire Edinburgh South Dumfries and Galloway Paisley and Renfrewshire North Aberdeenshire North and Moray East Caithness, Sutherland and Easter Ross Glasgow East Mid Dunbartonshire Glasgow North Glasgow South Glasgow West Cumbernauld and Kirkintilloch Coatbridge and Bellshill Hamilton and Clyde Valley Rutherglen Glasgow North East Aberdeen North Dumfriesshire, Clydesdale and Tweeddale North East Fife Glenrothes and Mid Fife Aberafan Maesteg Alyn and Deeside Bangor Aberconwy Blaenau Gwent and Rhymney Brecon, Radnor and Cwm Tawe Bridgend Caerfyrddin Caerphilly #24 Cardiff East: needs 11.63% swing from Lab Cardiff North Cardiff South and Penarth Cardiff West #26 Ceredigion Preseli: needs 15.97% swing from PC Clwyd East Clwyd North Dwyfor Meirionnydd Gower Llanelli Merthyr Tydfil and Aberdare Mid and South Pembrokeshire Monmouthshire Montgomeryshire and Glyndŵr Neath and Swansea East Newport East Newport West and Islwyn Pontypridd Rhondda and Ogmore Swansea West Torfaen Vale of Glamorgan Wrexham Ynys Môn Aldershot Aldridge-Brownhills Altrincham and Sale West Amber Valley #23 Arundel and South Downs: needs 11.09% swing from Con Ashfield Ashford Ashton-under-Lyne Aylesbury Banbury Barking Barrow and Furness Basildon and Billericay Basingstoke Bassetlaw Bath Battersea #15 Beaconsfield: needs 5.72% swing from Con Bedford #22 Bermondsey and Old Southwark: needs 10.36% swing from Lab Beverley and Holderness Bexhill and Battle Bexleyheath and Crayford Birkenhead Bishop Auckland Blackburn Blackpool South Bognor Regis and Littlehampton Bolsover Bolton North East Bolton West Bootle Boston and Skegness Bournemouth East Bournemouth West Bracknell Bradford East Bradford South Bradford West Braintree Brentford and Isleworth Brentwood and Ongar Bristol East Seats where the Liberal Democrats came second; paler = smaller majority, so an easier target.
# Constituency Held by Majority Swing needed Seats if won
1 Godalming and Ash Con891 0.82% 73 2 Farnham and Bordon Con1,349 1.27% 74 3 East Hampshire Con1,275 1.28% 75 4 South Shropshire Con1,624 1.57% 76 5 North Dorset Con1,589 1.60% 77 6 Romsey and Southampton North Con2,191 2.19% 78 7 North Cotswolds Con3,357 3.34% 79 8 Torridge and Tavistock Con3,950 3.89% 80 9 Burnley Lab3,420 4.31% 81 10 Hamble Valley Con4,802 4.45% 82 11 South West Hertfordshire Con4,456 4.62% 83 12 Mid Buckinghamshire Con5,872 5.44% 84 13 Sevenoaks Con5,440 5.45% 85 14 Hinckley and Bosworth Con5,408 5.66% 86 15 Beaconsfield Con5,455 5.72% 87 16 West Worcestershire Con6,547 5.99% 88 17 Sussex Weald Con6,842 6.96% 89 18 Christchurch Con7,455 7.88% 90 19 Runnymede and Weybridge Con7,627 7.91% 91 20 Sheffield Hallam Lab8,189 7.94% 92 21 East Grinstead and Uckfield Con8,480 8.42% 93 22 Bermondsey and Old Southwark Lab7,787 10.36% 94 23 Arundel and South Downs Con12,134 11.09% 95 24 Cardiff East Lab9,097 11.63% 96 25 Cambridge Lab11,078 13.16% 97 26 Ceredigion Preseli PC14,789 15.97% 98 27 Clapham and Brixton Hill Lab18,005 21.07% 99
"Seats if won" adds each target in order to the seats the party already holds, ignoring seats it might lose.
Official results UK Parliament election results data (House of Commons Library). Contains Parliamentary information licensed under the Open Parliament Licence v3.0. How we use this data