Two packed commuter trains collided head-on during the rush hour outside Brussels on Monday killing at least 20 people, a local mayor told Belgian media.

The crash left several carriages on their side, according to witnesses while an official said doctors were carrying out amputations at the scene.

The two trains hit each other near the town of Halle, about 15 kilometres (nine miles) southwest of Brussels in Dutch-speaking Flanders.

Halle mayor Dirk Pieters told Flemish public television VRT and national press agency Belga that there are "at least 20 dead".

"All the emergency services are there. The most seriously injured are being treated at the scene before being taken to hospital," the mayor added.

The Belgian government's secretary of state for mobilitity, Etienne Schouppe, told the RTBF broadcaster there were many serious injuries at the scene who needed amputations.

"The collision was brutal, the train didn't brake," one unnamed passenger was quoted as saying by the RTL television news website. "Wagons have been turned over, lots of people are in shock."

Neither the national rail company SNCB nor the track operator Infrabel were able to confirm the toll. Infrabel spokeswoman Fanny Charpentier told AFP that police believed there were at least 12 dead.

One train was going from Quievrain to Liege and the other from Leuven to Braine-le-Comte, according to Infrabel.

The accident caused major rail traffic disruption.

Thalys and Eurostar high-speed train services in and out of Brussels are seriously disrupted, the two operators said.

Thalys advised passengers to change their travel plans.

Eurostar warned that "it is possible that services remain suspended all day."

In 2008, more than 40 people were injured when a passenger train travelling in the wrong direction struck a freight train at Hermalle-sous-Huy in central Belgium.

In March 2001, two passenger trains crashed head-on at Pecrot to the east of Brussels, killing eight people including both drivers, and injuring 12.

That crash was blamed on human error, including that staff at two Belgian stations did not speak a common language.