Methodology
Every constant, every source, and the conditions under which this model would be wrong.
This site models operating cost only: what it costs to deliver heat, given your fuel prices and your equipment. It does not model purchase price, installation, financing, rebates, emissions, or comfort. Those matter. They are not what this calculator answers.
This page is the arithmetic. If you want the answer rather than the working, the calculator takes your own rates, the state pages apply these constants to every state, and the running cost guide explains what the output means. If you want to test the model against reality rather than against itself, the household dataset is real reported consumption from people who published their numbers.
The one equation
A heat pump costs less to run than a combustion furnace when:
The left side is your local fuel price ratio. The right side is set entirely by your equipment. There is no universal threshold, which is the single most common error in published comparisons.
Both halves are worked through elsewhere. The gas furnace comparison derives the right hand side from first principles and validates it two ways. The note on the 3.5 to 1 rule explains why the number people quote is a special case of this equation rather than a law, and the glossary defines every term in it.
Constants
| Constant | Value | Note |
|---|---|---|
| BTU per kWh | 3,412.14 | International table BTU |
| BTU per therm | 100,000 | Exact by definition |
| Natural gas heat content | 1,037 BTU/cf | EIA convention. Delivered gas runs roughly 1,020 to 1,050 |
| Propane heat content | 91,500 BTU/gal | Standard figure for HD-5 propane |
| No. 2 heating oil heat content | 138,500 BTU/gal | Standard figure |
The four assumptions
- Natural gas carries 1,037 BTU per cubic foot. Real delivered gas varies by utility and season.
- HSPF2 divided by 3.41214 gives seasonal COP. HSPF2 is measured under AHRI 210/240-2023 in one climate region, so your actual seasonal COP will differ with climate.
- Electric resistance backup runs at COP 1.0, weighted harmonically by share of heat delivered rather than by runtime.
- No winner is declared inside a 10% margin. Fuel prices move more than that between seasons.
Assumption three is the shakiest and the most consequential. Backup heat fraction depends on the balance point of a specific installation, which a state level model cannot know. It is exposed as an input rather than guessed.
Why the 3.5 to 1 rule is not a law
A ratio of 3.5 is what the equation returns for one specific pairing. Change either machine and the threshold moves a long way.
| Pairing | Breakeven ratio |
|---|---|
| HSPF2 11.0 against 95% AFUE | 3.39 |
| HSPF2 8.0 against 95% AFUE | 2.47 |
| HSPF2 11.0 against 80% AFUE | 4.03 |
| HSPF2 11.0 against 95% AFUE with 15% backup heat | 2.54 |
A single realistic backup heat assumption moves the threshold by 25%.
Data sources
- Residential electricity price by state. EIA Open Data API v2,
electricity/retail-sales, sector RES, monthly, cents per kWh. - Residential natural gas price by state. EIA Open Data API v2,
natural-gas/pri/sum, process PRS, monthly, dollars per thousand cubic feet. - Propane and heating oil. Currently national placeholder figures that the reader can overwrite. EIA publishes these regionally rather than by state, and wiring that in properly is an open item.
Why the heating season, and not the latest month
EIA's residential price is revenue divided by volume. In summer, residential gas volume approaches zero while the fixed monthly customer charge remains, so the apparent price per unit roughly doubles. Using a summer month to answer a winter question overstates the cost of gas and biases the comparison toward the heat pump.
Both fuels are therefore averaged over the most recent complete December to February window, currently 2025-12, 2026-01, 2026-02, using identical months for every state. States without complete season data are excluded rather than estimated.
What would change our answer
- A utility rate structure, such as time of use or demand charges, that makes the average price per kWh unrepresentative of what you pay during heating hours.
- Delivered gas heat content materially different from 1,037 BTU per cubic foot.
- A heat pump sized or commissioned such that backup heat exceeds the fraction modelled.
- A utility heat pump tariff, which several states now offer and which this model does not yet account for.
Known limitations
- State averages hide large variation between utilities inside a state. One household in the dataset pays $0.193 per kWh; ten miles away across a state line the figure is $0.097, and the difference is whether the utility is municipal or investor owned. Several states and utilities also run discounted winter rates for heat pump customers that appear in no state average, including the one on this page.
- Six states carry no gas price: Florida, Louisiana, Maryland, Maine, Minnesota and New Mexico, because EIA has not published a complete December to February residential gas season for them. Until recently those six were dropped from the site altogether, which was right for the gas comparison and wrong for everything else, most obviously for Maine, a state that heats overwhelmingly with oil. They now have pages with every fuel that is priced, and the gas column marked missing rather than estimated.
- Propane and heating oil are priced by PADD region rather than by state. Heating oil is only published for PADD 1 and PADD 2, so states outside those fall back to the national figure, and every state page names the region its number actually came from. This limitation used to be stated here as "national rather than regional", which was true of an earlier version of this site and has not been true since regional pricing was added.
- Gas standing charges are not modelled. Pricing gas per therm assumes the fixed monthly customer charge is irrelevant. For a low load house it adds roughly 43 cents per therm, and it gets worse the better the house is, which biases every gas comparison here in favour of gas.
- The model assumes a single heat pump serving the whole heating load, which understates the cost of a partial or ducted retrofit. Several households in the dataset run a heat pump on part of the house and something else on the rest, and those rows are marked as not normalisable for exactly this reason.
Where this model gets tested
An equation that is only ever checked against itself is not worth much. Three things on this site test these constants against something external, and all three are worth reading before trusting the output above.
A commissioned Manual J load calculation put the heat loss coefficient of a real 2,000 sq ft house at 7.75 BTU per square foot per heating degree day, against the 8 this model uses as its default. The household dataset normalises real reported consumption onto one scale and finds households with no identified fault sitting in a narrow band, which is what you would expect if the normalisation is sound and not what you would see if it were meaningless. And the corrections log records the three occasions this model has produced an answer that turned out to be wrong, including one where a wrong price window flipped the verdict in fifteen states.
If you find a fourth, it is worth sending, and the standard this site holds itself to on errors is that they get published rather than quietly edited.