Nikolas Cruz, a former student at the school who had been expelled, has been identified as suspect.
As the attack unfolded students were forced to hide as police swooped in on the building.
It is the deadliest school shooting since 26 people were killed at Connecticut school Sandy Hook in 2012.
It is the sixth school shooting incident in 2018 that has either wounded or killed students
Broward County Sheriff Scott Israel told reporters Nikolas Cruz killed three people outside the school, before entering the building and killing another 12.
Two people later died after being taken to hospital.
According to health officials, three people remain in a critical condition and three others are in stable condition.
The victims are still being identified. Sheriff Scott Israel said a football coach was among the dead but no names have been released.
On February 14, the local public school district tweeted that “students and staff heard what sounded like gunfire” just before the end of the day at the Marjory Stoneman Douglas High School.
The attack began at 14:30 local time.
Witnesses said that the suspect set off a fire alarm before the violence erupted.
Police and SWAT team members swarmed the campus and began clearing students from the school in Parkland, about an hour north of Miami, as parents and ambulances converged on the scene.
Nikolas Cruz, who had been expelled for “disciplinary reasons”, was taken into custody without incident in the nearby town of Coral Springs about an hour after he left the high school, according to police.
Sheriff Scott Israel said: “We have already begun to dissect his websites and things on social media that he was on and some of the things… are very, very disturbing.”
“Just a horrible day for us,” said Robert Runcie, the superintendent of the county’s school district.
The school has nearly 3,000 students. Classes are cancelled for the rest of this week.
Many students said they thought it was a drill because a fire alarm practice had taken place shortly before the shooting.
Since 2013, there have been 291 reported school shootings in America, which averages out to about one per week.
This is the worst shooting since 2012, when gunman Adam Lanza attacked Sandy Hook Elementary School in Newtown, Connecticut. He shot dead 20 young children and six adults before killing himself.
Millions of Americans are bracing for difficult weather conditions during the Christmas holiday, with storms…
The US House Ethics Committee has voted to release its report on former Republican Representative…
ABC News has agreed to pay $15 million to President-elect Donald Trump to settle a…
South Korea’s parliament has voted to impeach President Yoon Suk Yeol over his failed attempt…
Israeli war planes have carried out more than 100 air strikes in Syria on December…
President-elect Donald Trump has threatened to impose 100% tariffs on the BRICS countries if they…