Menurut Sensus A.S. 2010, populasinya adalah 17.606, menjadikannya kota terbesar di Marion County, meskipun bukan ibu kota county. Ini juga merupakan kota utama wilayah mikropolitan Hannibal, Missouri, yang terdiri dari kedua kabupaten.