| City | Rank | 2026 Pop. ↓ | 2020 Pop. | Annual Change | Density (/mi²) | Area (mi²) | Type |
|---|---|---|---|---|---|---|---|
| Storm Lake | 1 | 11,661 | 11,262 | 0.61% | 2,149 | 5 | City |
| Alta | 2 | 1,940 | 2,089 | -0.92% | 1,800 | 1 | City |
| Newell | 3 | 799 | 902 | -1.84% | 633 | 1 | City |
| Sioux Rapids | 4 | 686 | 747 | -1.15% | 837 | 1 | City |
| Lakeside | 5 | 680 | 700 | -0.58% | 3,009 | 0 | City |
| Albert City | 6 | 587 | 673 | -2.33% | 1,077 | 1 | City |
| Marathon | 7 | 210 | 231 | -1.41% | 280 | 1 | City |
| Rembrandt | 8 | 190 | 210 | -1.55% | 809 | 0 | City |
| Linn Grove | 9 | 145 | 161 | -2.03% | 260 | 1 | City |
| Truesdale | 10 | 59 | 65 | -1.67% | 404 | 0 | City |
Storm Lake is the largest city in Buena Vista County, with a population of 11,661.
Truesdale is the smallest city in Buena Vista County, with a population of 59.
There are 10 cities in Buena Vista County, Iowa.