Hannibal is a city located in Marion County, Missouri. Hannibal has a 2026 population of 16,809. Hannibal is currently declining at a rate of -0.09% annually and its population has decreased by -1.55% since the most recent census, which recorded a population of 17,073 in 2020.