"This is a long overdue step to advance the peace process and work towards a lasting agreement," the US president said.
"Today we finally acknowledge the obvious, that Jerusalem is Israel's capital."
He acknowledged there would be disagreement and dissent but said the announcement marked the beginning of a new approach to the Israel-Palestinian conflict.
Mr Trump's decision, a core pledge of his election campaign last year, will upend decades of American policy that has seen the status of Jerusalem as part of a "two-state solution" for Israelis and Palestinians.
The Palestinians have said Mr Trump's move would mean the "kiss of death" to the two-state solution, which envisages a Palestinian state in territory - the Gaza Strip, the West Bank and East Jerusalem - that Israel took in the 1967 war.
The Islamist Hamas group in Gaza said it was flagrant aggression on the Palestinian people.
Manuel Hassassian, chief Palestinian representative to Britain, earlier told the BBC Mr Trump's announcement was "declaring war in the Middle East, he is declaring war against 1.5 billion Muslims (and) hundreds of millions of Christians that are not going to accept the holy shrines to be totally under the hegemony of Israel".
Israel considers the city its eternal and indivisible capital and wants all embassies based there. Palestinians want the capital of an independent Palestinian state to be in the city's eastern sector, which Israel captured in the 1967 Middle East war and annexed in a move never recognized internationally.
In his speech in Washington, Mr Trump said the US remained deeply committed to helping facilitate a peace agreement acceptable to both Israelis and Palestinians and he intended "to do everything in my power to help forge such an agreement".
After the announcement, UN Secretary-General Antonio Guterres said there was "no alternative to the two-state solution, no Plan B".
French President Francois Macron said it was a "regrettable decision that France does not approve of and goes against international law and all the resolutions of the UN Security Council". He called for calm from all sides and said status of Jerusalem must be determined by Israelis and Palestinians through negotiation.
Iran condemned the decision saying it violated international resolutions.
Israeli Prime Minister Benjamin Netanyahu said the US decision was a "historic landmark" and urged other countries to follow its lead. In a pre-recorded video message, he said any peace deal with the Palestinians must include Jerusalem as Israel's capital.
Ahead of the speech, Washington's allies in the region warned of dangerous repercussions.
Pope Francis called for Jerusalem's status quo to be respected, saying new tension would further inflame world conflicts. China and Russia expressed concern the plans could aggravate Middle East hostilities.
Turkey said it could go as far as breaking off diplomatic ties with Israel if the US move went ahead. A government spokesman said it would plunge the region into "a fire with no end in sight".
US Vice President Mike Pence will travel to Israel next week to address the Israeli Parliament about the decision.
The US State Department issued a cable to all its diplomatic posts worldwide asking its officials to defer non-essential travel to Israel, Jerusalem and the West Bank until 20 December, but did not specify a reason, Reuters reported.
Photo: AFP Donald Trump announcing the US recognises Jerusalem as Israel's capital and will move its embassy there.