Where heat pumps pay off in Iowa

In a typical Iowa house heated with electric baseboard heat, a heat pump saves the most near Sheldon ($4,197 a year) and the least near Fort Madison ($2,769). Typical savings $3,600 a year on a $5,300 heating bill. Pays for itself within 10 years in 100% of its ZIP codes with a hired installer, 100% if you install it yourself.

Same typical house everywhere: 1,800 sq ft, built 1970 to 1989, heating costs only, 48 places in Iowa. How

Show Savings a yearPayback time
Installed by A contractorYou (DIY)
Years to pay back what it costs (hired installer)
Under 3 3-5 5-7 7-10 10-15 15-30 Over 30 or never

Iowa at a glance

Gas heat

Under $100 a year

Pays for itself within 10 years in 0% of its ZIP codes with a hired installer, 0% if you install it yourself. Typical heating bill today $1,350.

Oil heat

$3,600 a year

Pays for itself within 10 years in 100% of its ZIP codes with a hired installer, 100% if you install it yourself. Typical heating bill today $5,400.

Propane heat

$340 a year

Pays for itself within 10 years in 82% of its ZIP codes with a hired installer, 100% if you install it yourself. Typical heating bill today $2,200.

Electric baseboard heat

$3,600 a year

Pays for itself within 10 years in 100% of its ZIP codes with a hired installer, 100% if you install it yourself. Typical heating bill today $5,300.

Model your own house

These open the home model at the place with the typical house filled in and electric baseboard heat as today's heat. Change anything to match yours.

Every place in Iowa, electric baseboard heat heat

PlaceHeating todaySaves a year Pays back (contractor)Pays back (DIY)Heat from the heat pump
Sheldon $6,298 $4,197 2.2 years 0.8 years 95%
Storm Lake $6,110 $4,107 2.2 years 0.8 years 95%
Estherville $6,209 $4,084 2.2 years 0.8 years 94%
Forest City $6,148 $4,064 2.2 years 0.8 years 94%
Webster City $6,067 $4,028 2.3 years 0.8 years 95%
Spencer $6,119 $4,008 2.3 years 0.8 years 93%
Clear Lake $6,084 $3,984 2.3 years 0.8 years 93%
Charles City $5,905 $3,883 2.4 years 0.9 years 94%
Algona $5,819 $3,865 2.4 years 0.9 years 94%
Cherokee $5,690 $3,822 2.4 years 0.9 years 95%
Clarion $5,751 $3,819 2.4 years 0.9 years 95%
Orange City $5,665 $3,804 2.4 years 0.9 years 95%
Independence $5,746 $3,802 2.4 years 0.9 years 94%
Grinnell $5,601 $3,791 2.4 years 0.9 years 96%
Cedar Falls $5,671 $3,754 2.4 years 0.9 years 94%
Dubuque $5,581 $3,740 2.4 years 0.9 years 95%
Low Moor $5,532 $3,740 2.4 years 0.9 years 96%
Carroll $5,446 $3,695 2.5 years 0.9 years 96%
Marshalltown $5,532 $3,671 2.5 years 0.9 years 94%
Newton $5,359 $3,649 2.5 years 0.9 years 96%
Washington $5,293 $3,633 2.5 years 0.9 years 97%
Ames $5,325 $3,617 2.5 years 0.9 years 96%
Cedar Rapids $5,362 $3,596 2.6 years 0.9 years 95%
Iowa Falls $5,395 $3,592 2.6 years 0.9 years 95%
Fort Dodge $5,388 $3,588 2.6 years 0.9 years 95%
Boone $5,252 $3,559 2.6 years 0.9 years 96%
Atlantic $5,392 $3,494 2.0 years 0.9 years 97%
Harlan $5,331 $3,436 2.0 years 0.9 years 97%
Denison $5,301 $3,420 2.0 years 0.9 years 97%
Sioux City $5,299 $3,409 2.0 years 0.9 years 97%
Audubon $5,238 $3,382 2.1 years 0.9 years 97%
Perry $5,255 $3,351 2.1 years 0.9 years 96%
Des Moines (Ankeny Regional Airport) $5,006 $3,235 2.2 years 1.0 years 97%
Prairie City $5,032 $3,228 2.2 years 1.0 years 97%
Creston $4,875 $3,168 2.2 years 1.0 years 97%
Des Moines (Des Moines Intl Airport) $4,776 $3,095 2.2 years 1.0 years 97%
Iowa City $5,019 $3,009 1.6 years 1.0 years 95%
Mount Pleasant $4,834 $2,982 1.6 years 1.0 years 96%
Fruitland $4,867 $2,955 1.6 years 1.0 years 95%
Pella $4,931 $2,954 1.6 years 1.0 years 94%
Osceola $4,756 $2,921 1.6 years 1.0 years 95%
Carman $4,717 $2,863 1.6 years 1.0 years 95%
Knoxville $4,730 $2,860 1.6 years 1.0 years 95%
Shenandoah $4,567 $2,827 1.7 years 1.0 years 96%
Decatur $4,604 $2,805 1.7 years 1.0 years 95%
Centerville $4,576 $2,791 1.7 years 1.0 years 95%
Cedar $4,496 $2,790 1.7 years 1.0 years 96%
Fort Madison $4,546 $2,769 1.7 years 1.0 years 95%

Contractor installed unless marked DIY. Place names are the nearest ZIP code city to each weather station. Download all places.

Neighboring states

How these numbers are made

Every place on the map is the area closest to one of 1,983 weather stations. For each one we ran the HeatPushers home model (the same code you can use for your own house) with the past year of hourly weather at that station (2025-10-28 to 2026-10-28) and the state's average electricity and fuel prices from the EIA (the US average where the EIA has no figure for the state).

  • The house: 1,800 sq ft, 2 stories, built 1970 to 1989 (wall insulation R-14, attic R-16), 3 bedrooms, thermostat at 70°F. The heat pump heats the whole house.
  • Heat today: gas furnace (80% efficient); oil boiler (85% efficient); propane furnace (92% efficient); electric baseboard (100% efficient). Furnace houses have ducts inside the heated space; boiler and baseboard houses have no ducts, so only ductless heat pumps count there.
  • The heat pump: out of 772 models sold online, the one with the lowest 10-year cost (price, installation and energy), in the number of units that costs least. The old heat stays and takes over in the hours it is cheaper to run.
  • Installation: a contractor at $2,500 per indoor unit, or yourself: $350 of tools once and $300 of materials per indoor unit.
  • Payback: what it costs up front divided by what it saves a year. Under 10 years means it pays for itself within the lifetime we assume.
  • Heating only. Cooling is left out. A heat pump also cools: against old central AC that saves a bit more; in a house without AC, using it in summer costs extra.
  • Not included: rebates and tax credits, electrical upgrades, new ductwork, heat-pump electricity rates and financing.
  • Shares of ZIP codes: each place counts by how many US ZIP codes are closest to its station, so cities count more than empty desert.

Your house is not this house. Size, insulation, prices and what you already own change the answer, often a lot. Use "Model your own house here" on the map, or start at the home model. More: full method and how we know.

Embed this map