A speedboat carrying Indonesian workers home from Malaysia has capsized in stormy weather, killing at least 18 people, police say.

Key points: About 90 people were on the boat when it was travelling during a storm

About 90 people were on the boat when it was travelling during a storm 39 people people have been rescued

39 people people have been rescued Police suspect the trip was illegal

The boat reportedly crashed into a reef after being hit by big waves and strong wind, and sank at around dawn (local time), Indonesia's national disaster agency said.

About 100 people were on the boat, which capsized off the Indonesian island of Batam, the island's police chief Sambudi Gusdian said.

The body of a child under the age of five was among those taken to a local hospital, he said, adding searchers had rescued 39 people.

As night fell, rescue authorities said the search for more than 40 people still missing would resume at daylight on Thursday (local time).

Police suspect the trip was illegal and the workers were undocumented because of the high fares that passengers said they paid.

Mr Gusdian said an Indonesian woman believed to be responsible for the voyage was arrested as she tried to leave Batam for nearby Singapore.

Haryanto, a 51-year-old survivor, said the boat capsized in heavy rain and high waves about two hours after it left Johor Bahru in Malaysia.

He also said the boat was overcrowded.

"It was so crowded, some of us could not sit," Haryanto said.

Speedboats and ferries are a common form of transport in Indonesia, and sinkings are common due to poorly enforced safety regulations.

One of the worst ferry disasters in recent years occurred off Sulawesi island in 2009, killing more than 330 people.

AP/Reuters