Where heat pumps pay off in Michigan
In a typical Michigan house heated with gas, a heat pump saves under $100 a year everywhere in the state. Typical savings under $100 a year on a $1,550 heating bill. Pays for itself within 10 years in 0% of its ZIP codes with a hired installer, 0% if you install it yourself.
Same typical house everywhere: 1,800 sq ft, built 1970 to 1989, heating costs only, 74 places in Michigan. How
Michigan at a glance
Gas heat
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,550.
Oil heat
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 $6,200.
Propane heat
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 $3,400.
Electric baseboard heat
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 $7,900.
Model your own house
These open the home model at the place with the typical house filled in and gas as today's heat. Change anything to match yours.
Every place in Michigan, gas heat
| Place | Heating today | Saves a year | Pays back (contractor) | Pays back (DIY) | Heat from the heat pump |
|---|---|---|---|---|---|
| Copper Harbor | $1,914 | $0 | never | never | 0% |
| Hubbell | $1,963 | $0 | never | never | 0% |
| Ironwood | $1,983 | $0 | never | never | 0% |
| Kincheloe (Sault Ste Marie Sanderson Field) | $2,031 | $0 | over 30 years | over 30 years | 0% |
| Munising | $1,918 | $0 | over 30 years | over 30 years | 0% |
| Gwinn | $2,020 | $0 | over 30 years | over 30 years | 0% |
| Eben Junction | $2,008 | $0 | over 30 years | over 30 years | 0% |
| Engadine | $1,971 | $0 | over 30 years | over 30 years | 0% |
| Kincheloe (Chippewa Intl Airport) | $1,997 | $0 | never | never | 0% |
| Conover | $2,006 | $0 | over 30 years | over 30 years | 0% |
| Drummond Island | $1,918 | $0 | never | never | 0% |
| Manistique | $1,850 | $0 | never | never | 0% |
| Mackinac Island | $1,876 | $0 | never | never | 0% |
| Kingsford | $1,899 | $0 | over 30 years | over 30 years | 0% |
| Wells | $1,882 | $0 | never | never | 0% |
| Beaver Island | $1,799 | $0 | over 30 years | over 30 years | 0% |
| Cheboygan | $1,841 | $0 | never | never | 0% |
| Conway | $1,759 | $0 | never | never | 0% |
| Rogers City | $1,819 | $0 | over 30 years | over 30 years | 0% |
| Charlevoix | $1,701 | $0 | never | never | 0% |
| Alpena | $1,826 | $0 | never | never | 0% |
| Gaylord | $1,860 | $0 | never | never | 0% |
| Bellaire | $1,674 | $0 | never | never | 0% |
| Waters | $1,882 | $0 | over 30 years | over 30 years | 0% |
| Acme | $1,664 | $0 | never | never | 0% |
| Grayling | $1,934 | $0 | over 30 years | over 30 years | 0% |
| Frankfort | $1,636 | $0 | never | never | 0% |
| Oscoda | $1,769 | $0 | over 30 years | over 30 years | 0% |
| Houghton Lake Heights | $1,786 | $0 | never | never | 0% |
| Cadillac | $1,805 | $0 | over 30 years | over 30 years | 0% |
| Eastlake | $1,674 | $0 | never | never | 0% |
| Port Hope | $1,623 | $0 | never | never | 0% |
| Ludington | $1,596 | $0 | over 30 years | over 30 years | 0% |
| Bad Axe | $1,715 | $0 | never | never | 0% |
| Big Rapids | $1,694 | $0 | over 30 years | over 30 years | 0% |
| Midland | $1,629 | $0 | over 30 years | over 30 years | 0% |
| Mount Pleasant | $1,545 | $0 | never | never | 0% |
| Freeland | $1,592 | $0 | over 30 years | over 30 years | 0% |
| Caro | $1,669 | $0 | over 30 years | over 30 years | 0% |
| Saginaw | $1,552 | $0 | over 30 years | over 30 years | 0% |
| Fremont | $1,580 | $0 | over 30 years | over 30 years | 0% |
| Alma | $1,630 | $0 | never | never | 0% |
| Muskegon | $1,485 | $0 | never | never | 0% |
| Lapeer | $1,583 | $0 | over 30 years | over 30 years | 0% |
| Owosso | $1,521 | $0 | over 30 years | over 30 years | 0% |
| Flint | $1,547 | $0 | never | never | 0% |
| Ionia | $1,536 | $0 | never | never | 0% |
| Marysville | $1,580 | $0 | over 30 years | over 30 years | 0% |
| Grand Rapids | $1,493 | $0 | over 30 years | over 30 years | 0% |
| Lansing | $1,510 | $0 | never | never | 0% |
| Holland | $1,470 | $0 | over 30 years | over 30 years | 0% |
| Auburn Hills | $1,532 | $0 | over 30 years | over 30 years | 0% |
| Howell | $1,514 | $0 | over 30 years | over 30 years | 0% |
| Harrison Township | $1,439 | $0 | never | never | 0% |
| Charlotte | $1,536 | $0 | over 30 years | over 30 years | 0% |
| Mason | $1,472 | $0 | never | never | 0% |
| Troy | $1,421 | $0 | never | never | 0% |
| Detroit (Detroit City Airport) | $1,403 | $0 | never | never | 0% |
| South Haven | $1,351 | $0 | never | never | 0% |
| Battle Creek | $1,482 | $0 | never | never | 0% |
| Jackson | $1,513 | $0 | never | never | 0% |
| Marshall | $1,510 | $0 | over 30 years | over 30 years | 0% |
| Belleville | $1,471 | $0 | over 30 years | over 30 years | 0% |
| Detroit (Detroit Metro Airport) | $1,406 | $0 | never | never | 0% |
| Kalamazoo | $1,454 | $0 | never | never | 0% |
| Benton Harbor | $1,423 | $0 | never | never | 0% |
| Grosse Ile | $1,461 | $0 | over 30 years | over 30 years | 0% |
| Three Rivers | $1,430 | $0 | never | never | 0% |
| Monroe | $1,492 | $0 | never | never | 0% |
| Coldwater | $1,459 | $0 | over 30 years | over 30 years | 0% |
| Hillsdale | $1,539 | $0 | over 30 years | over 30 years | 0% |
| Adrian | $1,456 | $0 | over 30 years | over 30 years | 0% |
| Sturgis | $1,428 | $0 | over 30 years | over 30 years | 0% |
| Lambertville | $1,446 | $0 | never | never | 0% |
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.