Hannibal is a city along the Mississippi River in Marion and Ralls counties in the U.S. state of Missouri. According to the 2020 U.S. Census, the population was 17,312, making it the largest city in Marion County. The bulk of the city is in Marion County, with a tiny sliver in the south extending into Ralls County.
Developed for river traffic, today the city is tied to vehicle traffic, intersected by Interstate 72 and U.S. Routes 24, 36, and 61. It is across the river from East Hannibal, Illinois. Hannibal is approximately northwest of St. Louis (also bordering the Mississippi), east-northeast of Kansas City and miles east of Saint Joseph (both cities on the Missouri River), and approximately west of Springfield, Illinois.
Hannibal is not the county seat, but it has one of two county courthouses. There is also one in Palmyra, the county seat, which is located more centrally in the county. Hannibal is the principal city of the Hannibal, Missouri micropolitan area, which consists