A teenage gunman killed 19 young children at a primary school in Texas on Tuesday, prompting a furious US President Joe Biden to denounce the country's gun lobby and vow to end the cycle of mass shootings.
The attack at Robb Elementary School in Uvalde, a small community about 130 kilometres from the Mexican border, is the deadliest US school shooting in years and the latest in a spree of bloody gun violence across America.
"It's time to turn this pain into action for every parent, for every citizen of this country," Mr Biden said, his voice heavy with emotion.
State senator Roland Gutierrez had earlier said 18 children and two adults were killed in the rampage. Later on Tuesday, a Texas Department of Public Safety spokesman put the toll at 19 pupils and two adults.
Texas Governor Greg Abbott named the suspect as Salvador Ramos, an 18-year-old local resident and a US citizen.
"He shot and killed, horrifically and incomprehensibly," Mr Abbott said.
Texas Department of Public Safety officials told CNN that the gunman shot his grandmother before heading to the school at about noon. He abandoned his vehicle and entered with a handgun and a rifle, wearing body armour.
The gunman is also dead, Mr Abbott said.
“It is believed that responding officers killed him,” he said.
Uvalde is about 135 kilometres west of San Antonio.
Mr Biden learnt of the killings on his return to Washington from a trip in Asia, White House press secretary Karine Jean-Pierre said on Twitter.
"I had hoped when I became president I would not have to do this again," Mr Biden said at the White House.
"Another massacre. Uvalde, Texas. An elementary school. Beautiful, second, third, fourth graders."
Mr Biden has issued an order for US flags at the White House to be flown at half-staff.
An emotional US Vice President Kamala Harris announced the shooting from the dais at the Asian Pacific American Institute in Washington.
"Enough is enough," Ms Harris said.
"As a nation, we have to have the courage to take action and understand the nexus between what makes for reasonable and sensible public policy to ensure something like this never happens again.
"I will just say to the people of Uvalde, please know that this is a roomful of leaders who grieve with you. And we are praying for you and we stand with you."
On Tuesday, the Uvalde School District tweeted that there was a shooter at Robb Elementary, which has fewer than 600 pupils.
The district had earlier announced that all local schools were in lockdown because of reports of gunshots in the area.
Shortly after 2pm, the school district said pupils were taken to a civic centre where they could be picked up by relatives.
The gun control issue has divided the US, with some calling for stricter laws and others defending their constitutional right to bear arms.
US senator Chris Murphy tweeted: "Oh my God. I'm shaking. I'm just shaking all over. With fear. With anger. With resolve."
Mr Murphy, a member of the Democratic Party, gave a speech in Senate chamber floor, repeatedly saying: "What are we doing here?
"The 14 kids dead in an elementary school in Texas right now. What are we doing? What are we doing?"
The Uvalde shooting was the deadliest at a US primary school since 26 people died in an attack at Sandy Hook Elementary in Newtown, Connecticut, about a decade ago.
"Our kids are living in fear, every single time they set foot in a classroom, because they think they’re going to be next," Mr Murphy told the Senate.
"What are we doing? Why do you spend all this time running for the United States Senate?"
The shooting comes days before Mr Abbott, senator Ted Cruz and former president Donald Trump are scheduled to speak at a National Rifle Association conference in Houston, Texas.
Beto O’Rourke, a Democratic candidate for the Texas governor's post, tweeted: “The moment to stop Uvalde was right after Sandy Hook. After Santa Fe High. After El Paso.
"Instead, Abbott made it easier to carry guns in public. The moment to stop the next slaughter is right now.”
Texans will go the polls in November to chose between keeping pro-gun candidate Mr Abbott, or voting for Mr O’Rourke.
Mr Abbott last year signed legislation that allows Texans to carry handguns without any type of licence.
Agencies contributed to this report