Hannibal is about 100 miles (160 km) north of St Louis on US Highway 61, an easy two-hour drive. Coming from the east, US-36 crosses the Mississippi at Hannibal over the Mark Twain Memorial Bridge from Illinois.
There are no scheduled passenger trains and no airport in town. The closest major airport is St Louis Lambert (STL); the closest regional service is at Quincy, Illinois, just across the river to the north. Amtrak's Missouri River Runner runs to nearby La Plata, an hour west, with a connecting Burlington Trailways bus to Hannibal.