At least 17 people are dead after a 19-year-old man opened fire at the Marjory Stoneman Douglas High School in the small city of Parkland, around 45 miles north of Miami, police have said.
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.
Sandy Hook School shooting: at least 27 people killed in a Connecticut primary school shooting attack
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.