The Town Files

The 25 Most Affordable Small Towns in Iowa

Ranked by home value ÷ income among 99 towns of 500–10,000 people in Iowa. #1 is Tama, IA (homes cost 1.6× income).

Map of the 25 towns12345678910111213141516171819202122232425
Numbers match the ranking.
  1. 25Missouri Valley, Iowa

    Homes cost 2.1× income

    Missouri Valley is a city of 2,678 people in Harrison County, Iowa. The median home is worth $148,500 and the median household earns $71,818, so homes cost 2.1× income (typical Iowa town: 2.2×). Median rent is $753.

    2,678 people · Harrison County · median home $148,500 · income $71,818 · Jan low 10°F · 29 in snow

    Full Missouri Valley, Iowa profile: weather, storms, schools, jobs →

    Missouri Valley vs the typical Iowa townMissouri ValleyTypical Iowa townHome value$148,500$156,300Income$71,818$69,254Rent$753$820
    Census ACS 2020–2024 medians.
  2. 24Madrid, Iowa

    Homes cost 2.1× income

    Madrid is a city of 2,802 people in Boone County, Iowa. The median home is worth $185,600 and the median household earns $89,844, so homes cost 2.1× income (typical Iowa town: 2.2×). Median rent is $1,029.

    2,802 people · Boone County · median home $185,600 · income $89,844 · Jan low 12°F · 33 in snow

    Full Madrid, Iowa profile: weather, storms, schools, jobs →

    Madrid vs the typical Iowa townMadridTypical Iowa townHome value$185,600$156,300Income$89,844$69,254Rent$1,029$820
    Census ACS 2020–2024 medians.
  3. 23Carlisle, Iowa

    Homes cost 2.1× income

    Carlisle is a city of 4,160 people in Warren County, Iowa. The median home is worth $234,300 and the median household earns $109,191, so homes cost 2.1× income (typical Iowa town: 2.2×). Median rent is $1,000.

    4,160 people · Warren County · median home $234,300 · income $109,191 · Jan low 14°F · 37 in snow

    Full Carlisle, Iowa profile: weather, storms, schools, jobs →

    Carlisle vs the typical Iowa townCarlisleTypical Iowa townHome value$234,300$156,300Income$109,191$69,254Rent$1,000$820
    Census ACS 2020–2024 medians.
  4. 22Forest City, Iowa

    Homes cost 2.1× income

    Forest City is a city of 4,285 people in Winnebago County, Iowa. The median home is worth $143,500 and the median household earns $69,205, so homes cost 2.1× income (typical Iowa town: 2.2×). Median rent is $720.

    4,285 people · Winnebago County · median home $143,500 · income $69,205 · Jan low 6°F · 41 in snow

    Full Forest City, Iowa profile: weather, storms, schools, jobs →

    Forest City vs the typical Iowa townForest CityTypical Iowa townHome value$143,500$156,300Income$69,205$69,254Rent$720$820
    Census ACS 2020–2024 medians.
  5. 21Hampton, Iowa

    Homes cost 2.1× income

    Hampton is a city of 4,337 people in Franklin County, Iowa. The median home is worth $99,400 and the median household earns $47,088, so homes cost 2.1× income (typical Iowa town: 2.2×). Median rent is $631.

    4,337 people · Franklin County · median home $99,400 · income $47,088 · Jan low 8°F · 29 in snow

    Full Hampton, Iowa profile: weather, storms, schools, jobs →

    Hampton vs the typical Iowa townHamptonTypical Iowa townHome value$99,400$156,300Income$47,088$69,254Rent$631$820
    Census ACS 2020–2024 medians.
  6. 20Osceola, Iowa

    Homes cost 2.1× income

    Osceola is a city of 5,415 people in Clarke County, Iowa. The median home is worth $146,300 and the median household earns $68,284, so homes cost 2.1× income (typical Iowa town: 2.2×). Median rent is $943.

    5,415 people · Clarke County · median home $146,300 · income $68,284 · Jan low 11°F · 28 in snow

    Full Osceola, Iowa profile: weather, storms, schools, jobs →

    Osceola vs the typical Iowa townOsceolaTypical Iowa townHome value$146,300$156,300Income$68,284$69,254Rent$943$820
    Census ACS 2020–2024 medians.
  7. 19Oelwein, Iowa

    Homes cost 2.1× income

    Oelwein is a city of 5,920 people in Fayette County, Iowa. The median home is worth $96,300 and the median household earns $46,653, so homes cost 2.1× income (typical Iowa town: 2.2×). Median rent is $847.

    5,920 people · Fayette County · median home $96,300 · income $46,653 · Jan low 9°F · 39 in snow

    Full Oelwein, Iowa profile: weather, storms, schools, jobs →

    Oelwein vs the typical Iowa townOelweinTypical Iowa townHome value$96,300$156,300Income$46,653$69,254Rent$847$820
    Census ACS 2020–2024 medians.
  8. 18Hudson, Iowa

    Homes cost 2.0× income

    Hudson is a city of 2,546 people in Black Hawk County, Iowa. The median home is worth $242,700 and the median household earns $120,481, so homes cost 2.0× income (typical Iowa town: 2.2×). Median rent is $947.

    2,546 people · Black Hawk County · median home $242,700 · income $120,481 · Jan low 11°F · 39 in snow

    Full Hudson, Iowa profile: weather, storms, schools, jobs →

    Hudson vs the typical Iowa townHudsonTypical Iowa townHome value$242,700$156,300Income$120,481$69,254Rent$947$820
    Census ACS 2020–2024 medians.
  9. 17Emmetsburg, Iowa

    Homes cost 2.0× income

    Emmetsburg is a city of 3,706 people in Palo Alto County, Iowa. The median home is worth $114,300 and the median household earns $55,833, so homes cost 2.0× income (typical Iowa town: 2.2×). Median rent is $624.

    3,706 people · Palo Alto County · median home $114,300 · income $55,833 · Jan low 7°F · 37 in snow

    Full Emmetsburg, Iowa profile: weather, storms, schools, jobs →

    Emmetsburg vs the typical Iowa townEmmetsburgTypical Iowa townHome value$114,300$156,300Income$55,833$69,254Rent$624$820
    Census ACS 2020–2024 medians.
  10. 16Carter Lake, Iowa

    Homes cost 2.0× income

    Carter Lake is a city of 3,791 people in Pottawattamie County, Iowa. The median home is worth $169,400 and the median household earns $85,349, so homes cost 2.0× income (typical Iowa town: 2.2×). Median rent is $1,323.

    3,791 people · Pottawattamie County · median home $169,400 · income $85,349 · Jan low 15°F · 27 in snow

    Full Carter Lake, Iowa profile: weather, storms, schools, jobs →

    Carter Lake vs the typical Iowa townCarter LakeTypical Iowa townHome value$169,400$156,300Income$85,349$69,254Rent$1,323$820
    Census ACS 2020–2024 medians.
  11. 15Shenandoah, Iowa

    Homes cost 2.0× income

    Shenandoah is a city of 4,925 people in Page County, Iowa. The median home is worth $116,700 and the median household earns $59,783, so homes cost 2.0× income (typical Iowa town: 2.2×). Median rent is $774.

    4,925 people · Page County · median home $116,700 · income $59,783 · Jan low 14°F · 26 in snow

    Full Shenandoah, Iowa profile: weather, storms, schools, jobs →

    Shenandoah vs the typical Iowa townShenandoahTypical Iowa townHome value$116,700$156,300Income$59,783$69,254Rent$774$820
    Census ACS 2020–2024 medians.
  12. 14Red Oak, Iowa

    Homes cost 2.0× income

    Red Oak is a city of 5,596 people in Montgomery County, Iowa. The median home is worth $99,700 and the median household earns $50,109, so homes cost 2.0× income (typical Iowa town: 2.2×). Median rent is $812.

    5,596 people · Montgomery County · median home $99,700 · income $50,109 · Jan low 13°F · 27 in snow

    Full Red Oak, Iowa profile: weather, storms, schools, jobs →

    Red Oak vs the typical Iowa townRed OakTypical Iowa townHome value$99,700$156,300Income$50,109$69,254Rent$812$820
    Census ACS 2020–2024 medians.
  13. 13Webster City, Iowa

    Homes cost 2.0× income

    Webster City is a city of 7,825 people in Hamilton County, Iowa. The median home is worth $127,200 and the median household earns $63,430, so homes cost 2.0× income (typical Iowa town: 2.2×). Median rent is $907.

    7,825 people · Hamilton County · median home $127,200 · income $63,430 · Jan low 7°F · 33 in snow

    Full Webster City, Iowa profile: weather, storms, schools, jobs →

    Webster City vs the typical Iowa townWebster CityTypical Iowa townHome value$127,200$156,300Income$63,430$69,254Rent$907$820
    Census ACS 2020–2024 medians.
  14. 12Keokuk, Iowa

    Homes cost 2.0× income

    Keokuk is a city of 9,900 people in Lee County, Iowa. The median home is worth $104,300 and the median household earns $52,711, so homes cost 2.0× income (typical Iowa town: 2.2×). Median rent is $871.

    9,900 people · Lee County · median home $104,300 · income $52,711 · Jan low 17°F · 22 in snow

    Full Keokuk, Iowa profile: weather, storms, schools, jobs →

    Keokuk vs the typical Iowa townKeokukTypical Iowa townHome value$104,300$156,300Income$52,711$69,254Rent$871$820
    Census ACS 2020–2024 medians.
  15. 11Cresco, Iowa

    Homes cost 1.9× income

    Cresco is a city of 3,888 people in Howard County, Iowa. The median home is worth $117,200 and the median household earns $60,608, so homes cost 1.9× income (typical Iowa town: 2.2×). Median rent is $715.

    3,888 people · Howard County · median home $117,200 · income $60,608 · Jan low 6°F · 40 in snow

    Full Cresco, Iowa profile: weather, storms, schools, jobs →

    Cresco vs the typical Iowa townCrescoTypical Iowa townHome value$117,200$156,300Income$60,608$69,254Rent$715$820
    Census ACS 2020–2024 medians.
  16. 10Estherville, Iowa

    Homes cost 1.9× income

    Estherville is a city of 5,904 people in Emmet County, Iowa. The median home is worth $101,400 and the median household earns $54,124, so homes cost 1.9× income (typical Iowa town: 2.2×). Median rent is $754.

    5,904 people · Emmet County · median home $101,400 · income $54,124 · Jan low 5°F · 40 in snow

    Full Estherville, Iowa profile: weather, storms, schools, jobs →

    Estherville vs the typical Iowa townEsthervilleTypical Iowa townHome value$101,400$156,300Income$54,124$69,254Rent$754$820
    Census ACS 2020–2024 medians.
  17. 9Charles City, Iowa

    Homes cost 1.9× income

    Charles City is a city of 7,396 people in Floyd County, Iowa. The median home is worth $115,400 and the median household earns $59,180, so homes cost 1.9× income (typical Iowa town: 2.2×). Median rent is $735.

    7,396 people · Floyd County · median home $115,400 · income $59,180 · Jan low 9°F · 38 in snow

    Full Charles City, Iowa profile: weather, storms, schools, jobs →

    Charles City vs the typical Iowa townCharles CityTypical Iowa townHome value$115,400$156,300Income$59,180$69,254Rent$735$820
    Census ACS 2020–2024 medians.
  18. 8Hawarden, Iowa

    Homes cost 1.8× income

    Hawarden is a city of 2,700 people in Sioux County, Iowa. The median home is worth $136,300 and the median household earns $74,167, so homes cost 1.8× income (typical Iowa town: 2.2×). Median rent is $933.

    2,700 people · Sioux County · median home $136,300 · income $74,167 · Jan low 7°F · 31 in snow

    Full Hawarden, Iowa profile: weather, storms, schools, jobs →

    Hawarden vs the typical Iowa townHawardenTypical Iowa townHome value$136,300$156,300Income$74,167$69,254Rent$933$820
    Census ACS 2020–2024 medians.
  19. 7Clarion, Iowa

    Homes cost 1.8× income

    Clarion is a city of 2,810 people in Wright County, Iowa. The median home is worth $116,200 and the median household earns $64,625, so homes cost 1.8× income (typical Iowa town: 2.2×). Median rent is $763.

    2,810 people · Wright County · median home $116,200 · income $64,625 · Jan low 6°F · 31 in snow

    Full Clarion, Iowa profile: weather, storms, schools, jobs →

    Clarion vs the typical Iowa townClarionTypical Iowa townHome value$116,200$156,300Income$64,625$69,254Rent$763$820
    Census ACS 2020–2024 medians.
  20. 6Albia, Iowa

    Homes cost 1.8× income

    Albia is a city of 3,721 people in Monroe County, Iowa. The median home is worth $130,300 and the median household earns $70,455, so homes cost 1.8× income (typical Iowa town: 2.2×). Median rent is $915.

    3,721 people · Monroe County · median home $130,300 · income $70,455 · Jan low 13°F · 30 in snow

    Full Albia, Iowa profile: weather, storms, schools, jobs →

    Albia vs the typical Iowa townAlbiaTypical Iowa townHome value$130,300$156,300Income$70,455$69,254Rent$915$820
    Census ACS 2020–2024 medians.
  21. 5Perry, Iowa

    Homes cost 1.8× income

    Perry is a city of 7,836 people in Dallas County, Iowa. The median home is worth $121,400 and the median household earns $68,910, so homes cost 1.8× income (typical Iowa town: 2.2×). Median rent is $931.

    7,836 people · Dallas County · median home $121,400 · income $68,910 · Jan low 10°F · 34 in snow

    Full Perry, Iowa profile: weather, storms, schools, jobs →

    Perry vs the typical Iowa townPerryTypical Iowa townHome value$121,400$156,300Income$68,910$69,254Rent$931$820
    Census ACS 2020–2024 medians.
  22. 4Eldora, Iowa

    Homes cost 1.7× income

    Eldora is a city of 2,663 people in Hardin County, Iowa. The median home is worth $133,000 and the median household earns $77,188, so homes cost 1.7× income (typical Iowa town: 2.2×). Median rent is $750.

    2,663 people · Hardin County · median home $133,000 · income $77,188 · Jan low 8°F · 33 in snow

    Full Eldora, Iowa profile: weather, storms, schools, jobs →

    Eldora vs the typical Iowa townEldoraTypical Iowa townHome value$133,000$156,300Income$77,188$69,254Rent$750$820
    Census ACS 2020–2024 medians.
  23. 3Eagle Grove, Iowa

    Homes cost 1.7× income

    Eagle Grove, Iowa
    Photo: C. P. Myklebust (public domain, Wikimedia Commons)

    Eagle Grove is a city of 3,601 people in Wright County, Iowa. The median home is worth $104,600 and the median household earns $63,125, so homes cost 1.7× income (typical Iowa town: 2.2×). Median rent is $996.

    3,601 people · Wright County · median home $104,600 · income $63,125 · Jan low 6°F · 33 in snow

    Full Eagle Grove, Iowa profile: weather, storms, schools, jobs →

    Eagle Grove vs the typical Iowa townEagle GroveTypical Iowa townHome value$104,600$156,300Income$63,125$69,254Rent$996$820
    Census ACS 2020–2024 medians.
  24. 2Chariton, Iowa

    Homes cost 1.7× income

    Chariton is a city of 4,193 people in Lucas County, Iowa. The median home is worth $81,900 and the median household earns $46,979, so homes cost 1.7× income (typical Iowa town: 2.2×). Median rent is $689.

    4,193 people · Lucas County · median home $81,900 · income $46,979 · Jan low 11°F · 24 in snow

    Full Chariton, Iowa profile: weather, storms, schools, jobs →

    Chariton vs the typical Iowa townCharitonTypical Iowa townHome value$81,900$156,300Income$46,979$69,254Rent$689$820
    Census ACS 2020–2024 medians.
  25. 1Tama, Iowa

    Homes cost 1.6× income

    Tama is a city of 3,130 people in Tama County, Iowa. The median home is worth $106,800 and the median household earns $68,661, so homes cost 1.6× income (typical Iowa town: 2.2×). Median rent is $832.

    3,130 people · Tama County · median home $106,800 · income $68,661 · Jan low 9°F · 33 in snow

    Full Tama, Iowa profile: weather, storms, schools, jobs →

    Tama vs the typical Iowa townTamaTypical Iowa townHome value$106,800$156,300Income$68,661$69,254Rent$832$820
    Census ACS 2020–2024 medians.

More Iowa rankings

Same ranking, other places

Methodology. We ranked 99 towns of 500–10,000 people in Iowa (2020 Census population). Only towns better than 60% of their peers on this measure qualify, so lists can be shorter than 25. Sources: