Andis, a passenger on the flight, said the plane suddenly fell into the sea on its final approach. There was a loud bang as it hit the water, he said.
"I looked down. It was suddenly sea. I realised that the plane was flying too low, but we still stayed calm until we heard a bang. There was panic."
The aircraft was operated by Lion Air, a rapidly expanding budget airline which recently sealed orders for hundreds of new planes, but which is banned from United States and European airspace because of safety concerns.
Lion Air's general affairs director, Edward Sirait, said the plane was arriving from Bandung in West Java province with 101 passengers - 95 adults, five children and a baby - and seven crew on board.
The domestic flight ended with passengers screaming in terror as the aircraft hit the water in fine weather and came to rest in the sea not far from the end of the runway.
Inflatable slides were deployed from the front exits and passengers in lifejackets could be seen in the water as police in rubber dinghies rowed out to them.
Three foreigners were on the Lion Air flight - a Frenchman, a Singaporean woman and a Singaporean man, the airport's head of communications said.
Transport Ministry official Herry Bhakti initially said the plane overshot the runway, but later clarified his comments to say it landed straight on the water. Officials said they were still determining exactly why it ditched.
Sirait said the plane was new. "The plane is Boeing 737-800 NG, Next Generation. It's a new one, a 2012 product," he said.
However, the airline is sure to come under fire again with Saturday's crash the latest in a string of incidents in recent years, including one crash in 2004 which left 25 people dead.
The pilot had been with Lion Air for six years and was fit to fly, Sirait said.
- Observer, AFP, AAP