Hannibal is a city in Marion and Ralls counties in the U.S. state of Missouri. Interstate 72 and U.S. Routes 24, 36, and 61 intersect in the city, which is located along the Mississippi River across from East Hannibal, Illinois. Hannibal is approximately 210 miles (340 km) east of Kansas City, 100 miles (160 km) northwest of St. Louis, and approximately 100 miles (160 km) west of Springfield, Illinois. According to the 2010 U.S. Census, the population was 17,916, 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.
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 of both Marion and Ralls counties.
The site of Hannibal was long occupied by various cultures of indigenous Native American tribes.