The Sriwijaya Air disappeared from radars four minutes into its journey to Pontianak in West Kalimantan province.
It is thought to have dropped more than 3,000m (10,000ft) in less than a minute, according to flight tracking website Flightradar24.com.
Witnesses said they had seen and heard at least one explosion.
Fisherman Solihin, who goes by one name, told the BBC Indonesian service he had witnessed a crash and his captain decided to return to land.
“The plane fell like lightning into the sea and exploded in the water,” he said.
“It was pretty close to us, the shards of a kind of plywood almost hit my ship.”
A number of residents of an island near where the plane disappeared told the BBC they had found objects they thought were from the plane. The transport ministry said search and rescue efforts were under way.
The Indonesian navy has been deployed to look for the aircraft, reports say. Navy official Abdul Rasyid told Reuters news agency it had determined the plane’s coordinates and ships had been deployed to the location.
The aircraft is not a 737 Max, the Boeing model that was grounded from March 2019 until last December following two deadly crashes.
Last contact with the plane, with the call sign SJY182, was made at 14:40 local time (07:40 GMT), according to the transport ministry. The usual flight time to Pontianak, in the west of the island of Borneo, is 90 minutes.
It did not send a distress signal, according to the head of national search and rescue agency Air Marshal Bagus Puruhito.
There were thought to be 50 passengers – including seven children and three babies – and 12 crew on board, though the plane has a capacity of 130. Everyone on board was Indonesian, officials say.
Relatives of the passengers have been waiting anxiously at the airport in Pontianak, as well as at Jakarta’s Soekarno-Hatta International Airport.
“I have four family members on the flight – my wife and my three children,” Yaman Zai told reporters through tears.
“[My wife] sent me a picture of the baby today… How could my heart not be torn into pieces?”
According to registration details, the plane is a 26-year-old Boeing 737-500.
It was in good condition, Sriwijaya Air chief executive Jefferson Irwin Jauwena told reporters. Take-off had been delayed for 30 minutes due to heavy rain, he said.
Sriwijaya Air, founded in 2003, is a local budget airline which flies to Indonesian and other South-East Asian destinations.