In a landmark 5-4 decision, Justice Anthony Kennedy writing for the majority ruled that marriage is a constitutional right for all.
“No union is more profound than marriage,” he wrote, backed by the court’s four more liberal justices.
It is unclear how soon marriage licences will be issued in states where gay unions were previously prohibited.
Before the ruling on Thursday, gay couples could marry in 37 states in addition to Washington DC.
Loud cheers erupted outside the court after the ruling was announced, said the BBC’s Paul Blake at the Supreme Court.
Hundreds of people had camped out for hours awaiting the news.
One of the demonstrators, Jordan Monaghan, called his mother from his mobile phone amid the celebrations.
“Hey mom, I’m at the Supreme Court. Your son can have a husband now,” Mr Monaghan said.
On social media, Democratic presidential candidate Hillary Clinton merely tweeted the word “proud” and the White House changed its Twitter avatar into the rainbow colours.
However, many Christian conservatives decried the decision.
“We must resist and reject judicial tyranny, not retreat,” said Mike Huckabee, Republican presidential candidate and former Arkansas governor.
“The only outcome worse than this flawed, failed decision would be for the president and congress, two co-equal branches of government, to surrender in the face of this out-of-control act of unconstitutional, judicial tyranny.”