liberal ukip labour conservatives democrats
Stream Keywords: labour ukip,liberal ukip,democrats labour,conservatives labour,democrats ukip,labour liberal,conservatives ukip,conservatives democrats,conservatives liberal,democrats liberal
The Conservatives failed to make the widely predicted gains in Labour heartlands or benefit from the collapse of support for UKIP.
The Liberal Democrats gained five seats in England, but former deputy prime minister Nick Clegg lost his.
A high turnout among young voters boosted Labour's vote share, the National Union of Students said.
Labour performed strongly in areas with universities including Sheffield and Canterbury.
Warwick and Leamington also changed hands from the Conservatives to Labour with a swing of 7.6%.
The seat had seen a 4% rise in the number of registered voters, while turnout was two percentage points up on 2015.
In Canterbury, turnout was up seven percentage points, although the number of registered voters dropped.
Labour's Rosie Duffield overturned Conservative former MP Julian Brazier's 9,798-vote majority to take the seat by just 187 votes.
The Tories have won Richmond Park by just 45 votes with Zac Goldsmith back seven months after losing the seat.
The Liberal Democrats, represented by Sarah Olney, were hoping to increase their majority in Richmond Park, which they won in a by-election in December 2016.
However the Conservatives took it back, following several recounts, by 28,588 votes to 28,543.
Mr Goldsmith lost the 2016 London mayoral election to Sadiq Khan and resigned as an MP to stand as an independent in a by-election in a dispute over his party's stance on Heathrow, before losing his seat to Ms Olney.
After winning it back as a Tory candidate, he said: "I'm grateful to my constituents for having put their trust in me again.
"I hope that I will never let them down - we have the most special community in the world and representing them is an unimaginable honour."
Richmond Park was not the smallest majority in England.
In Dudley North, Labour's Ian Austin held on by a slender 22 votes while in Southampton Itchen, Conservative Royston Smith has a majority of 31.
Turnout among young people was significantly higher than in the past three general elections, the National Union of Students (NUS) said.
It said there had been a leap in registered voters aged 18 to 24 between the 2015 general election and the EU referendum.
There were also 750,000 voters who turned 18, the age at which they became eligible to vote, since the referendum.
NUS president Malia Bouattia said: "We have seen the student vote play a key role in marginal seats across the UK."
The constituencies with the largest proportion of adults aged 18 to 24 also delivered some of the biggest rises in support for Labour.
Based on official population estimates, in all of the 10 seats with the highest potential young voters, the growth in the Labour vote was up to 30% on the 2015 election result.
In Sheffield Hallam, where Mr Clegg lost his seat, there were 957 more voters than at the 2015 general election and turnout was up about 1%.
Mr Clegg, who was elected leader of the party in December 2007, said he had "never shirked from the political battlefield".
He warned of an "agonising" future ahead for the next government as it sought to unite a "divided" country.
Mr Clegg formed a coalition with the Conservatives in 2010. He stood down as leader in 2015, after which Tim Farron was elected.
The former deputy prime minister is one of the highest-profile figures to lose his seat in the general election, with Labour's Jared O Mara winning by more than 2,000 votes.
Housing minister Gavin Barwell lost his Croydon Central seat to Labour's Sarah Jones.
Labour took Crewe and Nantwich, Keighley, Enfield Southgate, Brighton Kemptown, Colne Valley, Plymouth Sutton and Devonport, Reading East, Portsmouth South, Warrington South, Lincoln, Weaver Vale, Derby North, Peterborough, Bedford, Ipswich, Stroud, High Peak, Battersea, Stockton South, Bury North and Bristol North West from the Conservatives.
And it took Leeds North West from the Liberal Democrats. The constituency saw the biggest rise in registered voters.
In the West Midlands, Sandwell councillor Preet Gill became the first ever female Sikh MP, holding Edgbaston for Labour. She takes over from Gisela Stuart, who stood down after 20 years.
And Tanmanjeet Singh Dhesi became the first turbaned Sikh MP, after winning Slough from the Conservatives.
The Tories won in Clacton, which had previously been UKIP's only seat.
And it took Stoke-on-Trent South, which had been held by Labour ever since it was created in 1950.
Jack Brereton, aged 26, unseated Labour's Rob Flello with a majority of 663.
The Conservatives held on to Copeland, which it had won from Labour in a by-election in February and took Mansfield as well as Derbyshire North East, Middlesbrough South and Cleveland.
And it gained Walsall North from Labour, where David Winnick had represented the area since 1979.
Liberal Democrat Sir Vince Cable regained the Twickenham seat he had lost to the Conservatives in 2015, while the party also won Bath.
The party has also taken Oxford West and Abingdon, Kingston and Surbiton, Eastbourne and Bath.