UK Household · cost & carbon ledger

Household Energy Ledger

Start from the fossil status quo, then switch on technologies in any order. Running costs and the assets you'd replace anyway are tracked together, so each step is compared fairly.

{{ costModeLabel }} annual cost — fossil status quo vs your current build
{{ saving>=0 ? '▼ saves ' : '▲ costs ' }}{{ gbp(Math.abs(saving)) }}/yr
Status quopetrol + gas boiler
{{ gbp(costOf(statusQuo)) }}/year
This build{{ buildName }}
{{ gbp(costOf(current)) }}/year
{{ l.label }}
Carbon — fossil status quo vs your current build operational + embodied
{{ carbonSaving>=0 ? '▼ cuts ' : '▲ adds ' }}{{ co2(Math.abs(carbonSaving)) }} CO₂e/yr
Status quopetrol + gas boiler
{{ co2(statusQuo.totalCO2) }}CO₂e/yr
This build{{ buildName }}
{{ co2(current.totalCO2) }}CO₂e/yr
Petrol
Gas (incl. upstream)
Grid electricity
Vehicle embodied
Heat plant embodied
Solar embodied
Battery embodied

Build your home

EV
Electric vehiclereplaces the petrol car
{{ marginalPrimary('ev') }}i
{{ marginalCaption() }}
HP
Heat pumpreplaces the gas boiler
{{ marginalPrimary('hp') }}i
{{ marginalCaption() }}
PV
Solar PV{{ p.solarKwp }} kWp on the roof
{{ marginalPrimary('solar') }}i
{{ marginalCaption() }}
B
Home battery{{ p.batteryKwh }} kWh storage
{{ marginalPrimary('battery') }}i
{{ marginalCaption() }}

Schedules the battery to minimise cost against the half-hourly prices — charge when cheap, discharge / export when expensive, with perfect foresight — instead of the simple solar-surplus rule.

Tariffflat rate, half-hourly Agile, or your own time-of-day scheduletime-varying tariffs need the half-hourly model · enable it under Advanced
{{ marginalPrimary('agile') }}i
{{ marginalCaption() }}
Schedule presets
From Import Export

Prices (p/kWh) apply from each band's start until the next, wrapping past midnight.

Avg across this build: {{ current.avgAgileImport==null ? Number(p.elecRate).toFixed(1) : current.avgAgileImport.toFixed(1) }}p import / {{ current.avgAgileExport==null ? Number(p.segRate).toFixed(1) : current.avgAgileExport.toFixed(1) }}p export.

Hyundai Kona presetloads real new & used petrol car / EV figures into the car cells

Assumptions

all editable · mid-2026 figures
Energy prices inc. VAT

Electricity import, export & standing charge are set under Build your home · Tariff (flat, Agile or a custom schedule).

Discounting · time-value of money

Lumpy purchases (car, boiler, heat pump, solar, battery) are turned into an equivalent annual cost with a capital-recovery (annuity) factor at this real (above-inflation) rate, so cash spent today weighs more than cash spent years out; resale values, received at end of life, are discounted back the same way. Set to 0 for plain straight-line spreading. Running costs (energy, fuel, maintenance) are level year-on-year, so a constant annual figure already is their discounted equivalent.

Used by the payback / IRR / ISA-crossover metrics in This build · the numbers: the extra upfront is treated as the investment and the drop in running costs as the annual return over this horizon. The crossover compares putting that same money in a shares ISA growing at the rate above against spending it now and reinvesting each year's bill saving.

Home energy use
Petrol car
Gas boiler
Electric vehicle
Heat pump
Solar PV
Battery
Advanced · solar matching
Carbon · operational factors
Carbon · embodied factors

This build · the numbers

{{ costModeLabel }} / yr
{{ gbp(costOf(current)) }}
{{ costModeSub }}
vs status quo / yr
{{ saving>=0?'−':'+' }}{{ gbp(Math.abs(saving)) }}
{{ costModeSub }}
Extra upfront
{{ gbp(extraUpfront) }}
{{ likeForLike>0 ? 'above '+kgbp(likeForLike)+' '+likeForLikeLabel : 'all net-new kit' }}
Simple payback
{{ paybackLabel }}
extra upfront ÷ bill saving
IRR · real
{{ irrLabel }}
tax-free, over {{ p.investHorizon }} yrs
Crossover vs ISA
{{ crossoverLabel }}
vs {{ p.isaReturn }}% shares ISA
Running costs
Petrol{{ gbp(current.petrol) }}
Gas{{ cfg.hp && !cfg.disconnectGas ? ' (cooking only)' : '' }}{{ gbp(current.gas) }}
Electricity import{{ cfg.agile ? ' ('+tariffLabel+')' : '' }}{{ gbp(current.importCost) }}
{{ cfg.exportMode==='agile' ? 'Agile export credit' : 'Solar export credit' }}−{{ gbp(current.exportRevenue) }}
Electricity standing charge{{ gbp(current.elecStandingCost) }}
Running subtotal{{ gbp(current.running) }}
Annualised assets
{{ cfg.ev?'EV':'Petrol car' }}{{ gbp(current.carAsset) }}
{{ cfg.hp?'Heat pump':'Gas boiler' }}{{ gbp(current.heatAsset) }}
Solar PV{{ gbp(current.solarAsset) }}
Battery{{ gbp(current.batteryAsset) }}
Assets subtotal{{ gbp(current.assets) }}
All-in total{{ gbp(current.allIn) }}

This build · carbon

kgCO₂e per year
CO₂e / yr
{{ co2(current.totalCO2) }}
operational + embodied
vs status quo
{{ carbonSaving>=0?'−':'+' }}{{ co2(Math.abs(carbonSaving)) }}
per year
Carbon payback
{{ carbonPayback===null ? '—' : carbonPayback.toFixed(1) }} yrs
debt vs op. saving
Operational
Petrol{{ co2(current.petrolCO2) }}
Gas{{ cfg.hp && !cfg.disconnectGas ? ' (cooking)' : '' }}{{ co2(current.gasCO2) }}
Grid electricity{{ co2(current.gridCO2) }}
Exported solar (displaces gas)−{{ co2(current.exportCO2Credit) }}
Operational subtotal{{ co2(current.opCO2) }}
Embodied (annualised)
{{ cfg.ev?'EV (glider + battery)':'Petrol car' }}{{ co2(current.carCO2) }}
{{ cfg.hp?'Heat pump':'Gas boiler' }}{{ co2(current.heatCO2) }}
Solar PV{{ co2(current.solarCO2) }}
Battery{{ co2(current.batteryCO2) }}
Embodied subtotal{{ co2(current.embCO2) }}
Total CO₂e{{ co2(current.totalCO2) }}

Cost of carbon abated

private vs societal
To the household
{{ abatementCost===null ? '—' : (abatementCost<0?'−':'')+gbp(Math.abs(abatementCost)) }}/t
{{ abatementCost===null ? 'no carbon cut' : (abatementCost<0 ? 'net of grant · paid to abate' : 'net of grant') }}
To society
{{ societalAbatementCost===null ? '—' : (societalAbatementCost<0?'−':'')+gbp(Math.abs(societalAbatementCost)) }}/t
{{ grantAnnualised>0 ? 'grant counted as real cost' : 'same — no grant in build' }}

The household figure is net of the {{ gbp(p.busGrant) }} BUS grant, so it can read as a saving — privately the homeowner may be paid to decarbonise. The societal figure adds the grant back: it's a transfer from taxpayers, a real resource cost rather than a saving the measure creates, so the true cost of abatement to society is higher. For context, UK government appraisal currently values carbon at roughly £250/tCO₂e.

Switching adds ~{{ co2(extraEmbodiedTotal) }} of one-off manufacturing carbon (the “carbon debt”), repaid by lower running emissions in {{ carbonPayback===null ? 'n/a' : carbonPayback.toFixed(1)+' years' }} — after which it's all saving.

Electricity flows

the co-benefit engine
Total electricity demand{{ kwh(current.demand) }}
— household baseload{{ kwh(p.elecBaseload) }}
— cooking (induction){{ kwh(current.cookingElec) }}
— EV charging{{ kwh(current.evElec) }}
— heat pump{{ kwh(current.hpElec) }}
Solar generated{{ kwh(current.solarGen) }}
— self-consumed ({{ current.selfPct }}%){{ kwh(current.solarSelf) }}
— exported{{ kwh(current.solarExport) }}
Grid import{{ kwh(current.gridImport) }}
— avg {{ tariffLabel }} import price{{ current.avgAgileImport.toFixed(1) }} p/kWh

{{ current.selfPct }}% of your solar is used at home. Adding load (EV, heat pump) or a battery pushes this up — every self-consumed kWh is worth the ~{{ current.avgAgileImport!=null ? current.avgAgileImport.toFixed(1) : Number(p.elecRate).toFixed(1) }}p {{ current.avgAgileImport!=null ? 'avg ' : '' }}import rate you avoid, versus only ~{{ current.avgAgileExport!=null ? current.avgAgileExport.toFixed(1) : Number(p.segRate).toFixed(1) }}p {{ current.avgAgileExport!=null ? 'avg ' : '' }}if exported.

Heat pump vs gas — closing the spark gap

The heat pump's electricity effectively costs {{ current.elecRates.hp.cashRate.toFixed(1) }}p/kWh (grid {{ Math.round(current.elecRates.hp.gridKwh/current.elecRates.hp.kwh*100) }}%).

At SCOP {{ p.scop }} that's {{ current.sparkGap.hpHeatCash.toFixed(1) }}p per kWh of heat, versus gas at {{ current.sparkGap.gasHeat.toFixed(1) }}p/kWh ({{ p.gasRate }}p ÷ {{ Math.round(p.boilerEff*100) }}% boiler).

How to read this. Lumpy purchases (a car, a boiler) are spread over their life as an equivalent annual cost — discounted for the time-value of money — so options compare like-for-like. The fossil status quo already carries a car and a boiler you'd replace anyway — switching to an EV or heat pump swaps one asset cost for another rather than adding to it. “Extra upfront” is the cash needed today for the new kit beyond a like-for-like petrol-car / boiler replacement.

Simplifications. Solar self-consumption is, by default, run through a half-hourly simulation of a real year (the same engine as the Solar Matching tool) — solar, battery and EV charging are dispatched interval-by-interval, so self-consumption and the import / export split emerge from the timing. A simple annualised daytime-match estimate is available under Advanced · solar matching for comparison. The Agile tariff switch prices every half-hour of import and export against the dataset's wholesale-linked rates (the same dispatch, re-costed); with it off, a flat unit rate and a flat export rate apply. The EV charges within the window set under Electric vehicle. Lumpy purchases are converted to an equivalent annual cost with a capital-recovery (annuity) factor at a real discount rate (default {{ p.discountRate }}%, editable under Assumptions · Discounting), so capital spent today weighs more than future spend and resale values are discounted back — set it to 0 for plain straight-line spreading. Insurance is treated as roughly neutral between petrol and EV. All prices are inc. VAT (flat rates default to the price cap; Agile import comes from the region-D dataset, grossed up by 5%). Prices are a mid-2026 snapshot and unusually high. v2 · half-hourly

Carbon basis. Petrol ~2.9 kgCO₂e/L well-to-wheel; gas 0.183 kgCO₂e/kWh combustion plus an upstream/methane uplift (default +20%, GWP100 — the evidence suggests this is the floor, not the ceiling). Grid taken at ~75 gCO₂/kWh — a deliberately conservative forward average (2024-25 actual is ~125, falling fast toward ~50 by 2030), so the electrified case looks better every year. Exported solar is credited against the gas (CCGT) generation it displaces (~400 gCO₂/kWh, marginal) — deliberately a different, consequential basis from the attributional ~75 g average applied to imports, since an exported unit backs out the marginal plant rather than the grid mix. Both the import average and the export displacement factor are editable under Carbon · operational factors. Both the financial and carbon value of export would be expected to fall over time: as more solar is added to the grid, daytime wholesale (and so export) prices decline and curtailment from over-generation rises, so each exported unit displaces less and earns less. Embodied carbon follows the Hoekstra framing: the car glider is ~equal for petrol and EV, with the battery the main difference (~75 kgCO₂e/kWh of cell). “Carbon payback” = one-off extra manufacturing carbon ÷ annual operational saving. “Abatement cost” = the change in all-in annual cost ÷ the tonnes of CO₂e abated per year (whole build vs status quo, or per step given the rest of the build): a negative figure means the measure cuts carbon and saves money — effectively being paid to decarbonise — while a positive figure is the cost per tonne avoided (for context, UK government appraisal currently values carbon at roughly £250/tCO₂e). It is shown two ways: the household figure is net of any grant, so the homeowner may privately be paid to decarbonise; the societal figure adds the BUS grant back, since a grant is a transfer from taxpayers — a real resource cost, not a saving the measure creates. Steps that don't cut carbon show “—”. factors editable