Boris Johnson could be denied a majority if Labour, Lib Dem and Green supporters vote tactically.
The Conservatives could be ousted from dozens of seats if just few hundred voters back the second placed party.
Labour came within 31 votes of taking Southampton Itchen from the Tories in 2017.
They could easily win the seat if the 725 Green voters and 1,421 Lib Dems back the Labour candidate this time.
It is a similar story in Amber Rudd’s former seat of Hastings which she held from Labour by 246 votes in 2017.
If a sixth of the 1,885 Lib Dem voters switch to Labour then the Tories will lose.
Labour could also take Cabinet Minister Theresa Villiers’s Chipping Barnet seat with Lib Dem support and boot out Iain Duncan Smith from his Chingford and Woodford Green constituency.
Labour votes are needed to help the Lib Dems defeat Tory Zac Goldsmith in Richmond which he held by 21 votes in 2017.
If just a handful of the 5,773 people who voted Labour two years ago switch to the Lib Dems then he will be out.
The Lib Dems are also best placed to beat the Conservatives in St Ives, Cheltenham, Devon North and Cheadle.
Labour and Green voters should also look to support the Lib Dems in Dominic Raab ’s seat of Esher and Walton.
Polls put the Lib Dem candidate within 4% of a toppling the Foreign Secretary but to guarantee success requires the 11,773 people who voted Labour and the 1,074 who voted Green to back them.
In return Lib Dem voters could make the difference in Labour held seats such as Kensington, Dudley North, Canterbury and Crewe & Nantwich.
Oxford University’s Prof Stephen Fisher says there were 174 seats in the 2017 general election where MPs were elected with less than half the vote.
“In those constituencies, supporters of the parties that came third place or lower, could have defeated the MP by backing the second-placed party,” he told the BBC.
A survey by the pro-EU Best for Britain group found that if 117,314 people voted tactically in just 57 marginal seats it could deprive Johnson of a majority.
So we’ve now compiled our own guide to how you should vote tactically if you want to stop Boris Johnson taking power.
Vote Labour to beat Conservative-held Seat
Southampton, Itchen
Labour Candidate: Simon Letts
Tory Majority: 31
Swing needed for Labour win: 0.10%
Pudsey
Labour Candidate: Jane Aitchison
Tory Majority: 331
Swing needed for Labour win: 0.31%
Hastings and Rye
Labour Candidate: Peter Chowney
Tory Majority: 346
Swing needed for Labour win: 0.32%
Chipping Barnet
Labour Candidate: Emma Whysall
Tory Majority: 353
Swing needed for Labour win: 0.32%
Preseli Pembrokeshire
Labour Candidate: Philippa Thompson
Tory Majority: 314
Swing needed for Labour win: 0.41%
Thurrock
Labour Candidate: John Kent
Tory Majority: 345
Swing needed for Labour win: 0.34%
Calder Valley
Labour Candidate: Joshua Fenton-Glynn
Tory Majority: 609
Swing needed for Labour win: 0.53%
Norwich North
Labour Candidate: Karen Davis
Tory Majority: 507
Swing needed for Labour win: 0.56%
Broxtowe
Labour Candidate: Greg Marshall
Tory Majority: 863
Swing needed for Labour win: 0.78%
Stoke-On-Trent South
Labour Candidate: Mark McDonald
Tory Majority: 663
Swing needed for Labour win: 0.80%
Telford
Labour Candidate: Katrina Gilman
Tory Majority: 720
Swing needed for Labour win: 0.81%
Bolton West
Labour Candidate: Julie Hilling
Tory Majority: 936
Swing needed for Labour win: 0.92%
Aberconwy
Labour Candidate: Emily Owen
Tory Majority: 635
Swing needed for Labour win: 0.99%
Northampton North
Labour Candidate: Sally Keeble
Tory Majority: 807
Swing needed for Labour win: 1.00%
Hendon
Labour Candidate: David Pinto-Duschinsky
Tory Majority: 1072
Swing needed for Labour win: 1.03%
Mansfield
Labour Candidate: Sonya Rose Ward
Tory Majority: 1057
Swing needed for Labour win: 1.05%
Middlesbrough South & Cleveland East
Labour Candidate: Lauren Dingsdale
Tory Majority: 1020
Swing needed for Labour win: 1.07%
Milton Keynes South
Labour Candidate: Hannah O’Neill
Tory Majority: 1725
Swing needed for Labour win: 1.34%
Northampton South
Labour Candidate: Gareth Eales
Tory Majority: 1159
Swing needed for Labour win: 1.41%
Pendle
Labour Candidate: Azhar Ali
Tory Majority: 1279
Swing needed for Labour win: 1.43%
Morecambe & Lunesdale
Labour Candidate: Lizzi Collinge
Tory Majority: 1139
Swing needed for Labour win: 1.53%
Milton Keynes North
Labour Candidate: Charlynne Pullen
Tory Majority: 1975
Swing needed for Labour win: 1.50%
Finchley & Golden Green
Labour Candidate: Ross Houston
Tory Majority: 1657
Swing needed for Labour win: 1.58%
Camborne & Redruth
Labour Candidate: Paul Farmer
Tory Majority: 1577
Swing needed for Labour win: 1.63%
Putney
Labour Candidate: Fleur Anderson
Tory Majority: 1554
Swing needed for Labour win: 1.66%
Harrow East
Labour Candidate: Pamela Fitzpatrick
Tory Majority: 1757
Swing needed for Labour win: 1.73%
Watford
Labour Candidate: Chris Ostrowski
Tory Majority: 2092
Swing needed for Labour win: 1.78%
Copeland
Labour Candidate: Tony Lywood
Tory Majority: 1695
Swing needed for Labour win: 1.97%
Morley and Outwood
Labour Candidate: Deanne Ferguson
Tory Majority: 2104
Swing needed for Labour win: 2.01%
Vale of Glamorgan
Labour Candidate: Belinda Loveluck-Edwards
Tory Majority: 2190
Swing needed for Labour win: 2.04%
Corby
Labour Candidate: Beth Miller
Tory Majority: 2690
Swing needed for Labour win: 2.24%
Carmarthen West and Pembrokeshire South
Labour Candidate: Marc Tierney
Tory Majority: 3110
Swing needed for Labour win: 3.68%
Scarborough and Whitby
Labour Candidate: Hugo Fearnley
Tory Majority: 3435
Swing needed for Labour win: 3.40%
Blackpool North and Cleveleys
Labour Candidate: Chris Webb
Tory Majority: 2023
Swing needed for Labour win: 2.47%
Swindon South
Labour Candidate: Sarah Church
Tory Majority: 2464
Swing needed for Labour win: 2.40%
Carlisle
Labour Candidate: Ruth Alcroft
Tory Majority: 2599
Swing needed for Labour win: 3.02%
Truro and Falmouth
Labour Candidate: Jennifer Forbes
Tory Majority: 3792
Swing needed for Labour win: 3.35%
Stevenage
Labour Candidate: Jill Borcherds
Tory Majority: 3384
Swing needed for Labour win: 3.43%
Loughborough
Labour Candidate: Stuart Brady
Tory Majority: 4269
Swing needed for Labour win: 3.94%
Filton and Bradley Stoke
Labour Candidate: Mhairi Threlfalll
Tory Majority: 4190
Swing needed for Labour win: 4.12%
Clwyd West
Labour Candidate: Joanne Thomas
Tory Majority: 3437
Swing needed for Labour win: 4.23%
Shipley
Labour Candidate: Jo Pike
Tory Majority: 4681
Swing needed for Labour win: 4.38%
Erewash
Labour Candidate: Catherine Atkinson
Tory Majority: 4534
Swing needed for Labour win: 4.55%
Worthing East and Shoreham
Labour Candidate: Lavinia O’Connor
Tory Majority: 5106
Swing needed for Labour win: 4.81%
Vote Lib Dem to beat Conservative-held Seat
Richmond Park
Lib Dem Candidate: Sarah Olney
Tory Majority: 45
Swing needed for LibDem win: 0.04%
St. Ives
Lib Dem Candidate: Andrew George
Tory Majority: 312
Swing needed for LibDem win: 0.30%
Cheltenham
Lib Dem Candidate: Max Wilkinson
Tory Majority: 2569
Swing needed for LibDem win: 2.25%
Devon North
Lib Dem Candidate: Alex James White
Tory Majority: 4332
Swing needed for LibDem win: 3.89%
Cheadle
Lib Dem Candidate: Tom Morrison
Tory Majority: 4507
Swing needed for LibDem win: 4.13%
Lewes
LibDem Candidate: Oli Henman
Tory Majority: 5508
Swing needed for LibDem win: 5.08%
St Albans
LibDem Candidate: Daisy Cooper
Tory Majority: 6,109
Swing needed for LibDem win: 5.36%
Wells
LibDem Candidate: Tessa Munt
Tory Majority: 7582
Swing needed for LibDem win: 6.23%
Hazel Grove
LibDem Candidate: Lisa Smart
Tory Majority: 5514
Swing needed for LibDem win: 6.25%
Vote Labour To Secure Labour-held marginal
Kensington
Labour Candidate: Emma Dent Coad
Majority: 20
Swing needed for Conservative win: 0.03%
Dudley North
Labour Candidate: Melanie Dudley
Majority: 22
Swing needed for Conservative win: 0.03%
Newcastle-under-Lyme
Labour Candidate: Carl Greatbatch
Majority: 30
Swing needed for Conservative win: 0.03%
Crewe & Nantwich
Labour Candidate: Laura Smith
Majority: 48
Swing needed for Conservative win: 0.04%
Canterbury
Labour Candidate: Rosie Duffield
Majority: 187
Swing needed for Conservative win: 0.16%
Barrow & Furness
Labour Candidate: Chris Altree
Majority: 209
Swing needed for Conservative win: 0.22%
Keighley
Labour Candidate: John Grogan
Majority: 239
Swing needed for Conservative win: 0.24%
Ashfield
Labour Candidate: Natalie Fleet
Majority: 441
Swing needed for Conservative win: 0.44%
Stroud
Labour Candidate: David Drew
Majority: 687
Swing needed for Conservative win: 0.54%
Bishop Auckland
Labour Candidate: Helen Goodman
Majority: 502
Swing needed for Conservative win: 0.58%
Peterborough
Labour Candidate: Lisa Forbes
Majority: 607
Swing needed for Conservative win: 0.64%
Colne Valley
Labour Candidate: Thelma Walker
Majority: 915
Swing needed for Conservative win: 0.76%
Bedford
Labour Candidate: Mohammad Yasin
Majority: 789
Swing needed for Conservative win: 0.81%
Ipswich
Labour Candidate: Sandy Martin
Majority: 831
Swing needed for Conservative win: 0.81%
Stockton South
Labour Candidate: Paul Williams
Majority: 888
Swing needed for Conservative win: 0.82%
Warwick & Leamington
Labour Candidate: Matt Western
Majority: 1206
Swing needed for Conservative win: 1.12%
Penistone and Stocksbridge
Labour Candidate: Francyne Johnson
Majority: 1322
Swing needed for Conservative win: 1.33%
Lincoln
Labour Candidate: Karen Lee
Majority: 1538
Swing needed for Conservative win: 1.58%
Portsmouth South
Labour Candidate: Stephen Morgan
Majority: 1554
Swing needed for Conservative win: 1.74%
Warrington South
Labour Candidate: Faisal Rashid
Majority: 2549
Swing needed for Conservative win: 2.06%
Derby North
Labour Candidate: Tony Tinley
Majority: 2015
Swing needed for Conservative win: 2.07%
High Peak
Labour Candidate: Ruth George
Majority: 2322
Swing needed for Conservative win: 2.16%
Battersea
Labour Candidate: Marsha De Cordova
Majority: 2416
Swing needed for Conservative win: 2.19%
Wakefield
Labour Candidate: Mary Creagh
Majority: 2176
Swing needed for Conservative win: 2.35%
Wolverhampton South West
Labour Candidate: Eleanor Smith
Tory Majority: 2185
Swing needed for Conservative win: 2.58%
Wrexham
Labour Candidate: Mary Wimbury
Majority: 1832
Swing needed for Conservative win: 2.61%
Stoke-on-Trent North
Labour Candidate: Ruth Smeeth
Majority: 2359
Swing needed for Conservative win: 2.82%
Dewsbury
Labour Candidate: Paula Sherriff
Majority: 3321
Swing needed for Conservative win: 2.94%
Vale of Clwyd
Labour Candidate: Chris Ruane
Majority: 2379
Swing needed for Conservative win: 3.07%
Reading East
Labour Candidate: Matt Rodda
Majority: 3749
Swing needed for Conservative win: 3.39%
Gower
Labour Candidate: Tonia Antoniazzi
Majority: 3269
Swing needed for Conservative win: 3.59%
Blackpool South
Labour Candidate: Gordon Marsden
Majority: 2523
Swing needed for Conservative win: 3.61%
Great Grimsby
Labour Candidate: Melanie Onn
Majority: 2565
Swing needed for Conservative win: 3.61%
Darlington
Labour Candidate: Jenny Chapman
Majority: 3280
Swing needed for Conservative win: 3.66%
Weaver Vale
Labour Candidate: Mike Amesbury
Majority: 3928
Swing needed for Conservative win: 3.88%
Rother Valley
Labour Candidate: Sophie Wilson
Majority: 3882
Swing needed for Conservative win: 3.92%
Cardiff North
Labour Candidate: Anna McMorrin
Majority: 4174
Swing needed for Conservative win: 4.01%
Bolton North East
Labour Candidate: Dave Crausby
Majority: 3797
Swing needed for Conservative win: 4.20
Scunthorpe
Labour Candidate: Nicholas Dakin
Majority: 3431
Swing needed for Conservative win: 4.27%
Bristol North West
Labour Candidate: Darren Jones
Majority: 4761
Swing needed for Conservative win: 4.40%
Enfield Southgate
Labour Candidate: Feryal Clark
Majority: 4355
Swing needed for Conservative win: 4.51%
Gedling
Labour Candidate: Vernon Coaker
Majority: 4694
Swing needed for Conservative win: 4.54%
Bury North
Labour Candidate: James Frith
Majority: 4375
Swing needed for Conservative win: 4.57%
Bassetlaw
Labour Candidate: Keir Alexander Morrison
Majority: 4,852
Swing needed for Conservative win: 4.64%
Workington
Labour Candidate: Sue Hayman
Majority: 3925
Swing needed for Conservative win: 4.71%
Croydon Central
Labour Candidate: Sarah Jones
Majority: 5652
Swing needed for Conservative win: 4.95%
Vote Lib Dem to secure Lib Dem-held marginal
Oxford West and Abingdon
Lib Dem Candidate: Layla Moran
Majority: 816
Swing needed for Conservative win: 0.68%
Westmorland and Lonsdale
Lib Dem Candidate: Tim Farron
Majority: 777
Swing needed for Conservative win: 0.75%
Carshalton and Wallington
Lib Dem Candidate: Tom Brake
Majority: 1369
Swing needed for Conservative win: 1.35%
Eastbourne
Lib Dem Candidate: Stephen Lloyd
Majority: 1609
Swing needed for Conservative win: 1.40%
Kingston and Surbiton
Lib Dem Candidate: Ed Davey
Majority: 4124
Swing needed for Conservative win: 3.32%
Norfolk North
Lib Dem Candidate: Karen Ward
Majority: 3512
Swing needed for Conservative win: 3.36%
Weird and unusual seats
Beaconsfield
Labour Candidate: Alexa Collins
Tory Majority: 24543
Swing needed for Labour win: 21.90%
Conservative-held by Dominic Grieve who is now standing as an independent, voted 51% remain
Broxtowe
Labour Candidate: Greg Marshall
Tory Majority: 863
Swing needed for Labour win: 0.78%
Conservative-held by Anne Soubry who is now standing for the Independent Group for Change
Buckingham
Labour Candidate: David Morgan
Tory Majority: N/A
Swing needed for Labour win: N/A
Formerly held by ex-Speaker John Bercow and last contested by Labour in 2005.
East Devon
Independent candidate: Claire Wright
Tory majority: 8,036
Local campaigner Claire Wright has been snapping at the Tory heels in the last two elections. With Labour and Lib Dem support she could easily take the seat
Four Tories we could finally get rid of:
Dominic Raab (Esher and Walton)
LibDem Candidate: Monica Harding
Tory Majority: 23298
Despite Raab’s prominent majority in the 2017 election, a recent Deltapoll survey claims he only has a five-point lead over the Lib Dems.
Iain Duncan Smith (Chingford and Woodgreen)
Labour Candidate: Faiza Shaheen
Tory Majority: 2438
If enough Lib Dem voters vote tactically they could oust IDS from parliament.
Boris Johnson (Uxbridge and South Ruislip)
Labour Candidate: Ali Milani
Tory Majority: 5034
Boris Johnson’s majority of 5034 is the smallest of any sitting Prime Minister since 1918.
John Redwood (Wokingham)
Lib Dem Candidate: Phillip Lee
Tory Majority: 18,798
A recent poll put the Tories at 42%, and LibDems at 38% in Wokingham.