The coordinated explosions tore through crowds of people hoping to board evacuation flights to safety, away from the country’s new Taliban rulers.
Graphic footage shared on social media showed men and women in a tangled mess in the shin-deep water of a drainage canal.
Stunned survivors pulled themselves to their feet, while others desperately shouted for help in searching the carnage for loved ones.
“These are dead bodies laying here,” a person off-camera says.
One man held a semi-conscious victim by the elbow, trying to stop his head from slipping beneath the surface of the murky water.
“Bodies, flesh and people were thrown into a canal nearby,” Milad, who was at the scene of the first blast, told AFP.
“It was a huge explosion among the crowd of people who were waiting at the gate. A lot of people are killed or wounded,” he added.
He had applied for a visa to the United States, but in the confusion dropped the documents he hoped would help him board a flight with his wife and three children.
“I will never, ever want to go (to the airport) again. Death to America, its evacuation and visas.”
A second witness told AFP that “total panic” erupted when the first explosion was heard.
“The Taliban then started firing in the air to disperse the crowd at the gate,” he said.
“I saw a man rushing with an injured baby in his hands.”
Western intelligence agencies had warned yesterday of an imminent attack, with US President Joe Biden citing a terrorist threat from the regional chapter of the Islamic State jihadist group.
But crowds still gathered, with just five days until the deadline set by the United States to end the airlifts.
The devices were detonated as the sun started to set, killing between 13 and 20 people and wounding 52, according to the Taliban.
The Pentagon said one explosion was at the Abbey Gate of Kabul airport, and at least one more blast hit the nearby Baron Hotel.
Shortly after, an AFP photographer saw several bodies arriving at the Emergency Hospital in Kabul.
Women with blood-stained faces and clothes wept as the wounded were taken into the clinic on stretchers.
Another witness at the airport, 26-year-old Akram Lubega, who works for a catering firm, said he didn’t understand what was happening at first.
“Of course we are all scared,” the Ugandan national said.
“Everyone is tense and the army is taking positions around the airport.”