Nineteen young children and two adults have died in a shooting at a primary school in south Texas.
The gunman opened fire at Robb Elementary School – which teaches children aged seven to 10 – in the city of Uvalde before he was killed by law enforcement, officials said.
The 18-year-old suspect had a handgun, an AR-15 semi-automatic rifle and high-capacity magazines, investigators say.
The teenager is suspected of shooting his grandmother before the rampage.
Local media report he may have been a high school student in the area.
Uvalde Consolidated Independent School District Chief of Police Pete Arredondo said the shooting began at 11:32 local time on Tuesday, and that investigators believe the attacker “did act alone during this heinous crime”.
Texas Governor Greg Abbott said the shooter, whom he named as Salvador Ramos, abandoned a vehicle before entering the school to “horrifically, incomprehensibly” open fire.
The Associated Press news agency reports that a US Border Patrol official who was nearby when the shooting began rushed into the school and shot and killed the gunman, who was behind a barricade.
Border Patrol is a federal agency that guards US ports of entry. Uvalde, which is fewer than 80 miles from the border with Mexico, is home to a Border Patrol station.
Two border agents were reportedly shot in an exchange with the gunman. One agent was shot in the head, officials say, adding that both were now in a stable condition in hospital.
According to CBS News, the attacker was wearing body armour as he carried out the attack. Another 18-year-old who is suspected of attacking a grocery store in Buffalo, New York, on 14 May was also wearing body armour and carrying a semi-automatic rifle – both of which are commercially available in the US.
The Uvalde Memorial Hospital posted on Facebook earlier that 13 children had been taken to hospital “via ambulances or buses”.