"I have just chaired a meeting of the cabinet where we agreed that the government should call a General Election to be held on the 8th of June," May said outside her Downing Street office.
Since becoming prime minister last July in the wake of Britain's vote to leave the EU, May had consistently said she would not seek an early election.
But she told reporters on Tuesday that the divisions in Parliament explained her change of heart on an early election.
The Conservative leader said that the "only way to guarantee certainty and security for years ahead is to hold this election".
May has accused her opponents of "political game-playing" and undermining the country in the upcoming talks to exit the European Union.
Under the Fixed-Term Parliaments Act, the next general election date was to be in 2020. But an early election can take place if two-thirds of lawmakers in the House of Commons vote for it.
The opposition Labour Party, which trails May's Conservative Party in opinion polls, has said it supports such a move.
Sterling rose against the dollar after May made her surprise announcement on Tuesday.
(FRANCE 24 with AP, REUTERS)