The last 24 hours
Generation by fuel (share of total) above, grid-average emissions intensity below — same hour on both, hover to line them up.
"Average" intensity = the grid's whole generation mix that hour. IESO/AESO fuel categories; hydro, nuclear, wind, solar and biofuel counted as zero direct-combustion emissions (see HeatPump/METHODOLOGY.md).
The last 12 months
Daily average emissions intensity — the shaded band is each day's min–max range, the line is the daily mean.
Average vs. marginal — which number matters?
The same grid, two honest answers, and they don't agree.
"Average" is the whole grid's mix this hour — what an emissions inventory uses. "Marginal" is the fuel that ramps to cover one more kWh of demand right now — what a *new* load like a heat pump or an EV actually causes, because the clean baseload (nuclear, hydro) was already running flat out. The two agree only when the marginal fuel happens to match the average mix, which rarely holds. Full reasoning in HeatPump/METHODOLOGY.md §Phase 1.
A typical day, by season
Multi-year hourly average, not "today" — see the note below.
Quebec, for context
Not a live series — Hydro-Québec's grid is >99% hydro and wind, so a full live pipeline isn't warranted for what's essentially a flat line.
Loading…
Data sources & methodology
Ontario: IESO Generator Output by Fuel Type Hourly (reports-public.ieso.ca) — fully live, re-fetched every run.
Alberta: AESO CSD Generation (Hourly) — manually refreshed from Box-hosted files, not live.
Quebec: Hydro-Québec hourly generation by source — manually refreshed, static context only.
Gas/coal emission factors are calibrated against The Atmospheric Fund (Ontario) and Alberta.ca's published NIR-sourced generation intensity — see HeatPump/METHODOLOGY.md for the full derivation, and docs/GRID.md for this page's data layer. The "typical day by season" panel (Advanced) reuses the Heat Pump tool's own multi-year hourly Phase-1 output rather than re-deriving anything — see Python/build_grid_seasonal.py.