I’ve had a go at plotting how election night could play out, including when each party will make gains and where seats will change hands.
This isn’t a prediction of the election result. Rather it’s a template for what could happen hour-by-hour, and there are bound to be plenty of deviations from this scenario on Thursday night. Saying that, the outcome that I reach is just as likely as any other.
Two safe seats for Labour to begin with, both in north-east England.
Labour (2): Houghton & Sunderland South; Washington & Sunderland West
Two more safe seats for Labour from its north-east heartland.
Labour (2): Sunderland Central; Durham North West
Results from Northern Ireland start to come in, plus a safe seat for the SNP and half a dozen more safe seats for Labour. The first gain of the night is also due: Nuneaton, which Labour is hoping to take from the Tories.
Labour (6): Dagenham & Rainham; Durham North; Darlington; City of Durham; Easington; Vale of Clwyd
DUP (3): Antrim North; Lagan Valley; Upper Bann
SDLP (1): Foyle
Sinn Fein (1): Tyrone West
SNP (1): Na h-Eileanan an Iar
Labour GAIN (1): Nuneaton
The first Tory seats will declare, along with more from Northern Ireland including Belfast East which the DUP is hoping to take from the Alliance. The SNP should start to gain seats from Labour in this hour, while Labour is eyeing two more gains from the Tories: Northampton North and the City of Chester.
Conservatives (26): Battersea; Broxbourne; Canterbury; Carmarthen West & Pembrokeshire South; Chelmsford; Chesham & Amersham; Christchurch; Epping Forest; Northampton South; Putney; Staffordshire South; Surrey East; Tamworth; Cities of London & Westminster; Cleethorpes; Devon East; Eddisbury; Filton & Bradley Stoke; Hampshire East; Hemel Hempstead; Hertford & Stortford; Leicestershire North West; Lichfield; Ludlow; Newbury; Wimbledon
Labour (17): Barking; Bishop Auckland; Blaenau Gwent; Halton; Llanelli; Oxford East; Tooting; Ynys Mon; Ellesmere Port & Neston; Hartlepool; Islington North; Islington South & Finsbury; Makerfield; Mitcham & Morden; Rochdale; Westminster North; Workington
Lib Dems (2): Thornbury & Yate, Yeovil
DUP (4): Antrim East; Antrim South; Belfast North; Strangford
Independent (1): Down North
Plaid Cymru (2): Carmathen East & Dinefwr; Dwyfor Meirionydd
SDLP (1): Belfast South
Sinn Fein (1): Belfast West
SNP (2): Angus, Dundee East
Conservatives HOLD (3): Castle Point, Kingswood; Montgomeryshire
Lib Dems HOLD (1): Eastleigh
Labour HOLD (3): Glenrothes; Kirkcaldy & Cowdenbeath; Rutherglen & Hamilton West
DUP GAIN (1): Belfast East
SNP GAIN (7): East Kilbride; Strathaven & Lesmahagow; Fife North East; Lanark & Hamilton East, Dundee West; Inverclyde; Kilmarnock & Loudoun; Stirling
Labour GAIN (2): Northampton North, City of Chester
Results will start to flood in from 3am onwards, with declarations due in dozens of safe Tory and Labour seats. Ukip will hope to gain Thurrock, Labour could make 10 gains from the Tories and Lib Dems, but lose a similar number to the SNP.
Conservatives (33) Aberconwy; Basildon South & Thurrock East; Bosworth; Bracknell; Bristol North West; Bury St Edmunds; Clwyd West; Croydon South; Derbyshire Mid; Derbyshire South; Fylde; Harrogate & Knaresborough; Hastings & Rye; Havant; Hertfordshire South West; Huntingdon; Isle of Wight; Maldon; Norfolk Mid; Ribble Valley; Rushcliffe; Skipton & Ripon; Sleaford & North Hykeham; Somerset North; Stafford; Stone; Suffolk West; Swindon North; Wellingborough; Welwyn Hatfield; Windsor; Wycombe; Wyre & Preston North
Labour (44): Aberavon; Alyn & Deeside; Barnsley Central; Barnsley East; Bolsover; Bolton North East; Bolton South East; Bolton West; Brent North; Bury South; Camberwell & Peckham; Clwyd South; Copeland; Croydon North; Delyn; Derby North; Derby South; Derbyshire North East; Exeter; Gedling; Gower; Holborn & St Pancras; Hull East; Hull North; Hull West & Hessle; Jarrow; Knowsley; Merthyr Tydfil & Rhymney; Middlesbrough South & Cleveland East; Neath; Newport East; Newport West; Preston; Renfrewshire East; Rother Valley; Rotherham; Slough; South Shields; Stockton North; Swansea East; Swansea West; Telford; Wentworth & Dearne; Wrexham
DUP (1): Londonderry East
SNP (2): Moray; Perth & Perthshire North
Conservatives HOLD (5): Croydon Central; Erewash; High Peak; Swindon South; Vale of Glamorgan;
Labour GAIN (10): Amber Valley; Arfon; Bedford; Brent Central; Bristol West; Bury North; Carlisle; Peterborough; Hornsey & Wood Green; Stockton South
Labour HOLD (7): Coatbridge, Chryston & Bellshill; Glasgow East; Glasgow North East; Glasgow South West; Hampstead & Kilburn; Motherwell & Wishaw; Paisley & Renfrewshire South
Lib Dems HOLD (3): Bermondsey & Old Southwark; Brecon & Radnorshire; Kingston & Surbiton
SNP GAIN (10): Airdrie & Shotts; Argyll & Bute; Dunbartonshire East; Dunfermline & Fife West; East Lothian; Falkirk; Glasgow Central; Glasgow North; Glasgow North West; Glasgow South
Ukip GAIN (1): Thurrock
Labour should move past 100 seats, with the Tories not too far behind.
Conservatives (24): Aldridge-Brownhills; Beckenham; Bedfordshire Mid; Bedfordshire South West; Bournemouth East; Bournemouth West; Bromley & Chislehurst; Cambridgeshire North West; Cambridgeshire South; Charnwood; Cotswolds, The; Dover; Enfield Southgate; Gosport; Harlow; Orpington; Rayleigh & Wickford; Reigate; South Ribble; Suffolk Coastal; Surrey Heath; Thirsk & Malton; Worcestershire Mid; Wrekin, The
SDLP (1): Down South
Sinn Fein (1): Newry & Armagh
Labour (15): Bassetlaw; Blackpool South; Blaydon; Dulwich & West Norwood; East Ham; Edmonton; Streatham; Torfaen; Vauxhall; Walsall North; Walsall South; Warley; West Bromwich East; West Bromwich West; West Ham
Conservatives HOLD (2): Blackpool North & Cleveleys; Loughborough
Labour HOLD (2): Dunbartonshire West; Great Grimsby
Labour GAIN (4): Burnley; Enfield North; Lincoln; Weaver Vale;
Lib Dems HOLD (1): Cheltenham
SNP GAIN (3): Linlithgow & Falkirk East; Livingston; Midlothian
A torrent of safe Conservative seats will push the party’s total past 150. The Tories could make their first gain of the night in Devon North, while over a dozen more Labour seats may fall to the SNP. The Lib Dems will move into double figures.
Conservatives (64): Aldershot; Basildon & Billericay; Bedfordshire North East; Bexleyheath & Crayford; Braintree; Brentwood & Ongar; Bridgwater & Somerset West; Bromsgrove; Cambridgeshire North East; Chelsea & Fulham; Chichester; Crawley; Dartford; Derbyshire Dales; Devon South West; Devon West & Torridge; Dorset West; Dudley South; Epsom & Ewell; Esher & Walton; Fareham; Folkestone & Hythe; Gloucester; Guildford; Hampshire North West; Harborough; Hereford & Herefordshire South; Hertsmere; Kettering; Maidenhead; Meriden; Monmouth; New Forest East; Newark; Northamptonshire South; Old Bexley & Sidcup; Pendle; Penrith & The Border; Preseli Pembrokeshire; Redditch; Richmond Park; Rochford & Southend East; Romsey & Southampton North; Runnymede & Weybridge; Saffron Walden; Scarborough & Whitby; Selby & Ainsty; Sevenoaks; Southend West; Spelthorne; Staffordshire Moorlands; Suffolk Central & Ipswich North; Suffolk South; Surrey South West; Sussex Mid; Sutton Coldfield; Tunbridge Wells; Wealden; Weston-Super-Mare; Wiltshire South West; Witham; Woking; Worcestershire West; Wyre Forest
Lib Dems (5): Eastbourne, Lewes, Norfolk North, Twickenham, Westmorland & Lonsdale
Labour (45): Ashfield; Barrow & Furness; Birmingham Ladywood; Blackburn; Bridgend; Bristol East; Bristol South; Caerphilly; Chesterfield; Don Valley; Doncaster Central; Doncaster North; Dudley North; Eltham; Erith & Thamesmead; Garston & Halewood; Gateshead; Greenwich & Woolwich; Hackney North & Stoke Newington; Hackney South & Shoreditch; Hammersmith; Harrow West; Heywood & Middleton; Islwyn; Leigh; Lewisham Deptford; Lewisham East; Lewisham West & Penge; Luton North; Luton South; Mansfield; Newcastle upon Tyne Central; Newcastle upon Tyne East; Newcastle upon Tyne North; Newcastle-under-Lyme; Nottingham East; Nottingham North; Nottingham South; Ogmore; Penistone & Stocksbridge; Plymouth Moor View; Southampton Itchen; Southampton Test; Tottenham; Wigan
SNP (1): Banff & Buchan
Conservatives GAIN (1): Devon North
Lib Dems HOLD (2): Carshalton & Wallington; Sutton & Cheam
Plaid Cymru GAIN (1): Ceredigion
SNP GAIN (13): Aberdeenshire West & Kincardine; Ayr, Carrick & Cumnock; Ayrshire Central; Ayrshire North & Arran; Cumbernauld, Kilsyth & Kirkintilloch East; Dumfries & Galloway; Dumfriesshire, Clydesdale & Tweeddale; Edinburgh East; Edinburgh North & Leith; Edinburgh South; Edinburgh South West; Edinburgh West; Orkney & Shetland
Labour GAIN (7): Broxtowe; Cannock Chase; Harrow East; Ipswich; Plymouth Sutton & Devonport; Stroud; Warwickshire North
The gap between Labour and the Tories will narrow to a tiny handful of seats, and both will make gains from the Lib Dems. Ukip will hold Clacton.
Conservatives (27): Arundel & South Downs; Banbury; Bexhill & Battle; Brigg & Goole; Chipping Barnet; Colne Valley; Congleton; Daventry; Devizes; Gravesham; Harwich & Essex North; Hertfordshire North East; Horsham; Ilford North; Kensington; Leicestershire South; Mole Valley; Newton Abbot; Norfolk South; Norwich North; Pudsey; Salisbury; Shrewsbury & Atcham; Stevenage; Totnes; Wiltshire North; Witney
Labour (22): Batley & Spen; Birmingham Erdington; Corby; Huddersfield; Ilford South; Lancashire West; Leeds Central; Leeds East; Leeds North East; Leeds West; Middlesbrough; Morley & Outwood; Scunthorpe; Sheffield Brightside & Hillsborough; Sheffield Central; Sheffield Heeley; Sheffield South East; Stockport; Tynemouth; Tyneside North; Wolverhampton North East; Wolverhampton South East
Conservatives HOLD (2): Crewe & Nantwich; Elmet & Rothwell
Conservatives GAIN (2): Chippenham; Somerton & Frome
Labour GAIN (4): Dewsbury; Norwich South; Redcar; Wolverhampton South West
Lib Dems HOLD (5): Cheadle; Colchester; Hazel Grove; Leeds North West; Sheffield Hallam
Ukip HOLD:(1): Clacton
SNP GAIN (2): Berwickshire, Roxburgh & Selkirk; Gordon
All the results from Northern Ireland will be in, and Plaid and the Greens will have reached their maximum totals. Dozens of Tory and Labour safe seats will push both parties above 200, and Labour could make as many as 14 gains.
Conservatives (44): Altrincham & Sale West; Ashford; Aylesbury; Basingstoke; Beaconsfield; Beverley & Holderness; Broadland; Burton; Calder Valley; Cambridgeshire South East; Chatham & Aylesford; Chingford & Woodford Green; Devon Central; Dorset North; Dorset South; Faversham & Kent Mid; Gainsborough; Grantham & Stamford; Great Yarmouth; Haltemprice & Howden; Herefordshire North; Hitchin & Harpenden; Louth & Horncastle; Maidstone & The Weald; Meon Valley; New Forest West; Poole; Richmond; Rochester & Strood; Rossendale & Darwen; Rugby; Rutland & Melton; Shipley; Sittingbourne & Sheppey; Somerset North East; South Holland & The Deepings; St Albans; Stourbridge; Stratford-on-Avon; Tiverton & Honiton; Winchester; Worcester; York Outer; Yorkshire East
Labour (37): Bethnal Green & Bow; Birkenhead; Birmingham Edgbaston; Birmingham Hodge Hill; Birmingham Northfield; Bootle; Bradford South; Chorley; Coventry North East; Coventry North West; Coventry South; Cynon Valley; Ealing North; Feltham & Heston; Halifax; Hemsworth; Hyndburn; Leyton & Wanstead; Liverpool Riverside; Liverpool Walton; Liverpool Wavertree; Liverpool West Derby; Normanton, Pontefract & Castleford; Pontypridd; Poplar & Limehouse; Rhondda; Salford & Eccles; Sedgefield; Sefton Central; Stretford & Urmston; Wakefield; Wallasey; Walthamstow; Warrington North; Wirral South; Worsley & Eccles South; York Central
Lib Dems (1): Bath
Conservatives HOLD (1): Boston & Skegness
Conservatives GAIN (2): Dorset Mid & Poole North; Taunton Deane
Labour GAIN (14): Bradford East; Bradford West; Brentford & Isleworth; Brighton Kemptown; Ealing Central & Acton; Finchley & Golders Green; Halesowen & Rowley Regis; Hendon; Hove; Keighley; Sherwood; Warrington South; Waveney; Wirral West;
Green HOLD (1): Brighton Pavilion
Lib Dems HOLD (4): Birmingham Yardley, Cambridge, Southport, Torbay
Sinn Fein HOLD (1): Fermanagh & South Tyrone
SNP GAIN (2): Caithness, Sutherland & Easter Ross; Inverness, Nairn, Badenoch & Strathspey
The Tories move ahead of Labour for the first time, while Ukip wins its third and final seat in Thanet South. Labour will still be making gains, however, as will the SNP.
Conservatives (26): Bognor Regis & Littlehampton; Cornwall South East, Forest of Dean; Gillingham & Rainham; Hampshire North East; Henley; Norfolk North West; Norfolk South West; Reading East; Reading West; Romford; Ruislip, Northwood & Pinner; Portsmouth North; Shropshire North; Tatton; Tewkesbury; Thanet North; Tonbridge & Malling; Truro & Falmouth; Uxbridge & Ruislip South; Wantage; Watford; Wokingham; Worthing East & Shoreham; Worthing West
Labour (15): Ashton-under-Lyne; Birmingham Hall Green; Birmingham Perry Barr; Birmingham Selly Oak; Cardiff South & Penarth; Cardiff West; Denton & Reddish; Ealing Southall; Hayes & Harlington; St Helens North; St Helens South & Whiston; Stalybridge & Hyde; Stoke-on-Trent Central; Stoke-on-Trent North; Stoke-on-Trent South
Conservatives HOLD (2): Camborne & Redruth; Oxford West & Abingdon
Conservatives GAIN (2): Portsmouth South; St Austell & Newquay
Ukip GAIN (1): Thanet South
SNP GAIN (2): Aberdeen North; Aberdeen South
Labour GAIN (4): Cardiff Central; Cardiff North; Lancaster & Fleetwood; Morecambe & Lunesdale
Lib Dem HOLD (1): Cornwall North
Some late safe Labour seats could push the party back in front by a tiny margin. The SNP is set to make one final gain in Ross, Skye & Lochaber. The results will then dry up until Friday lunchtime.
Conservatives (4): Hornchurch & Upminster; Macclesfield; Milton Keynes North; Milton Keynes South
Labour (9): Blackley & Broughton; Leicester East; Leicester South; Leicester West; Manchester Central; Manchester Gorton; Oldham East & Saddleworth; Oldham West & Royton; Wythenshawe & Sale East
Conservatives GAIN (1): Wells
Labour GAIN (1): Manchester Withington
SNP GAIN (1): Ross, Skye & Lochaber
A final gain for the Tories in Berwick-upon-Tweed pulls it level with Labour, while the Lib Dems will hold St Ives in possibly the final result to declare.
Conservatives (3): Hexham; Kenilworth & Southam; Warwick & Leamington
Labour (2): Blyth Valley; Wansbeck
Conservatives GAIN (1): Berwick-upon-Tweed
Lib Dems HOLD (1): St Ives