Twelve people died when a mini-tornado caused an overloaded boat to capsize in remote southern Philippine marshes, a local official said on Wednesday.

The small motorboat, designed for 10 passengers, was carrying 18 people from a small town through marshland on Mindanao island on Monday night when the accident happened, said the local mayor, Alan Aguas.

"The winds were strong and there was a small tornado. It passed near the boat and some of the passengers panicked, causing the boat to capsize," he said, quoting survivors.

Among the dead were children aged 3, 7 and 9, Aguas said, adding that some of the bodies were only recovered on Wednesday.

He described the mini-tornado as a "freak" event, although he said there were persistent strong winds and rain at the time. The darkness may have also contributed to the high death toll.

Small, poorly regulated ferries and boats are a backbone of transport in the Philippines, an archipelago of more than 7,000 islands. But they are often involved in deadly mishaps due to bad weather and overloading.