"We have so far recovered 23 bodies from the sunken ferry," fire brigade official Enayet Hossain told AFP.
"There were 50 people on board... Our rescue divers are still searching," she said.
The Morning Bird vessel was hit by another ferry at Farashganj, just metres (yards) from the country's largest river port Sadarghat.
Read also: Scores arrested in Bangladesh over Libya migrant massacre
Several witnesses told local television stations that the boat was carrying more than 50 people, with many stuck in cabins.
Ferry accidents are common in Bangladesh due to poor safety standards in the country's many shipyards. The ferries are often overcrowded and sink in bad weather.
Follow us on Facebook, Twitter and Instagram to stay connected
The New ArabComments