The boat was carrying about 50 people when it capsized in the Meghna river, 110km south of capital Dhaka, after being hit by an empty vessel. Several passengers swam to safety.
"So far we have recovered 20 bodies and are looking for those missing," rescue operator Abdul Mannan told Reuters.
Boat and ferry accidents occur frequently in riverine Bangladesh and hundreds of people die every year. Poor enforcement of safety laws means boats are often poorly serviced and packed well beyond capacity.