That estimate, and twenty-four other views of who breathes whose pollution, come from a source–receptor model — a model that traces the pollution leaving each smokestack to the places downwind where people actually breathe it.
An estimated ~6,160–9,047 attributable deaths per year on US receptors, present burden.
This band is the US-receptor figure, matching the panel it links to. A larger all-receptor total (~6,900–10,100/yr) exists and is not quoted here: the difference is a ~1,060/yr non-US tail, and only part of it is undefended: 592 of those deaths are the rest-of-world term, spread across 7.4 billion people at ~0.001 µg/m³ — below this model's meaningful resolution, and the part the panel's caveat ledger declines to defend. The rest is adjacent and physically plausible: Canada 330 at 0.076 µg/m³, Mexico 101, ocean 37.
What the currently-operating US coal power plants contribute to national PM2.5 mortality today — real SR, real 2025 Climate TRACE emissions, per-state baseline mortality rates, no policy scenario required. A state choropleth of the per-capita rate, proportional-circle death counts by state, and coal-source markers; the range spans the age-convention uncertainty. A labelled §111-repeal-delta scenario sits on top of the present burden, never blended into it. State-clickable.
Twenty-five working prototypes on the InMAP SR-2005-annual-v02.0 source–receptor matrix, at two scales. The Bay-Area panels — exposure, health-impact mortality and the 3D impact stacks — run on 257 variable-resolution cells joined to 1,558 real Climate TRACE facilities and 9.2M people. The national coal-power panels run on the same matrix at US scale: 9,261 US-matched receptor cells and ~350M people. Not mockups — every number is computed from the actual matrix, and every figure that rests on an assumption rather than the matrix says so on its own face.
The SR layer rendered in Climate TRACE's own visual language (tokens read off their live site): their charcoal, their coral, their persistent answer card, one added lens — Emitted (t) → Delivered (µg/m³). Industry's share is drawn as the visible gap on top of the air that is already there, so you can see how much of the total it actually is.
“Climate TRACE shows what comes out of the stack. This shows who breathes it.”
Click any grid cell: named facilities draw labelled arcs into it — thickness and colour both = that facility's share of the added PM2.5 — or toggle to the county view and watch the nine counties shade by what they send you. SF's biggest contributor is Chevron Richmond Refinery, 17 km away; only 3 named facilities survive the filter, and the nearest ranks #2. And 62% of it left the stack as invisible gas, not as particles.
“The smokestack you can see isn't the one that matters.”
Click a cell → what reaches those people, by chemistry, sector and facility. Or pick a facility → its downwind reach, shaded from higher to lower risk.
“What reaches these people — and where does this plant's pollution go?”
Pick a place → what industrial sources add to its air, how much of it was never emitted as particles at all, and who can actually fix it.
“Where does the pollution over my home come from?”
Drag to cut a sector's emissions of one pollutant → the map and the exposure number recompute exactly (the SR matrix is linear, so a scenario is a multiply). Ranks the biggest available levers, and writes the defensible sentence for you.
“If we cut this, what do we actually buy?”
Rank interventions by health benefit, not tonnes. Cutting the single best asset-verified measure by 30% removes 4.3% of Bay-wide exposure (ports & airports excluded), the first three 7.2% — modest, because the single largest apparent lever is a low-confidence inventory artifact held out of the ranking. Drafts the board memo in approved wording. Confidence-badged, so the inventory-derived rows can't headline.
“Where does the next dollar buy the most clean air?”
County × county transport matrix — the SR matrix's native shape. Shows how much of each county's burden it cannot regulate.
“Can we fix our own air by ourselves?” (Mostly: no.)
The authority gap as an itemised bill: 94% of Marin's burden is imported once the low-confidence winery signal is set aside, and 77% of that is Contra Costa's refineries and chemical plants — named, line by line, each one Marin cannot regulate.
“Here's exactly who you can't vote for.”
The abatement supply curve: pick whose air is being cleaned (the whole Bay or one county), then climb the curve with a budget slider — every intervention re-scored by what it delivers to the people who live there, counted in person·µg/m³. Two price modes (real effort, or illustrative $). The honesty ledger is on the face of the page: the flat 30% cut depth and the dollar bands are assumptions, not cost data.
“How much clean air does the next slice of budget actually buy?”
Start here: the SR matrix's core move — turning tonnes emitted into micrograms delivered to people, then into who can actually do something about it. Nine panels, in teaching order.
Five prototypes carry the SR pipeline one step further — from µg/m³ of exposure to attributable mortality and its illustrative dollar value — using the real GEMM concentration–response function (Burnett 2018, ages 25+) and an IHME GBD 2023 California baseline rate. Counterfactual, steady-state estimates; the non-hub Bay signal by default.
Two honest reads of the same modelled pollution, on one toggle. RATE is a quantile choropleth of deaths per 100k — highest where concentration is. COUNT is attributable deaths as proportional circles, area ∝ deaths/yr — they cluster where people are, and drawing them as circles stops a big rural cell reading as a big risk. The orderings disagree, and the county count-vs-rate correlation is printed live for whichever scope you pick. Click any cell for its county, population, attributable deaths and illustrative $ damages.
“Count tracks population; rate tracks concentration — the same map flips.”
Pick a sector and its attributable deaths draw as a heat map over the receptor cells,
switchable between deaths and death rate — the harm lands downwind of the source, not at it. Default is oil-and-gas refining
(a credible ~150 deaths/yr); low-confidence sectors are tagged, and hub sectors (shipping, aviation)
are selectable but marked as single-cell-attribution artefacts. The answer card gives the sector's
total deaths and illustrative $, plus its top-5 receptor cells by county. Deep-linkable via
?sector=.
“The deaths land downwind of the source.”
Avoided mortality from removing all modelled non-hub Bay industrial PM2.5, translated to dollars via the EPA value of statistical life (~$11M, 2023 USD): an aggressively-rounded headline range over a per-sector damage ranking. Flagged illustrative throughout — not an official estimate.
“~$15B/yr in statistical health damages (illustrative; range ~$9–17B).”
Paired bars per county contrasting its share of total attributable deaths (count) with its per-capita rate — making visible that the county with the most deaths isn’t the one with the highest per-person risk. Strictly population-based; not a demographic-equity claim.
“Most deaths ≠ highest risk — the burden reshuffles by county.”
Take the same set of source-and-pollutant cuts and rank them twice: once by avoided exposure (population × µg/m³), once by avoided deaths per year. A bump chart links the two columns — a flat line means a lever kept its place. The answer here is that the ordering holds. Illustrative method demo on assumed inputs (a flat 30% cut on every source), with a physical-only / all-sources scope toggle; do not cite the numbers.
“Ranking by deaths instead of tonnes-delivered — the order holds.”
The national work, in full. Two things sit side by side and are kept apart on purpose: the present burden of the coal plants running today (real SR, real 2025 emissions — the headline above), and a conditional repeal scenario in which the 2024 §111 CO₂ standards are withdrawn, retirement-vulnerable coal keeps running, and the SO₂/NOₓ it emits — plus the secondary PM2.5 those form downwind — persist. The repeal rule is a final rule under White House review and is not yet Federal-Register-published, so every scenario figure describes a hypothetical outcome, not an enacted one. The Ohio-Valley cluster's downwind ΔPM2.5 and mortality are now computed end-to-end on the real v02 matrix — the earlier SR-staging gate has lifted.
The CO₂-repeal → coal-runs-longer → SO₂/NOₓ → secondary PM2.5 → mortality causal chain, with a lower/mid/upper anchor toggle driving national and cluster ΔSO₂/ΔNOₓ range bars, and the full honesty ledger.
“The causal chain, the anchors, and every caveat — one screen.”
What the 136 currently-operating US coal power plants contribute to national PM2.5 mortality today — real SR, real 2025 Climate TRACE emissions, per-state baseline mortality rates, no policy scenario required. Present burden ~6,160–9,047 steady-state annual deaths/yr on US receptors (the range spans the age-convention uncertainty); a labelled §111-repeal-delta scenario sits on top. State-clickable.
“~6,160–9,047 attributable deaths/yr on US receptors, present burden — plus a labelled repeal scenario.”
The receptor side of the national result: a Voronoi raster of every US receptor cell (deaths per 100k by default, paired with a MAUP-caveated count raster and a ΔPM2.5 layer), plus a distance-decay panel binning all 9,261 US-matched cells by distance to their nearest active-coal source cell. 41% of the modelled US burden lands beyond 100 km — explicitly a lower bound, since single-layer SR under-represents long-range transport. Risk per person runs the other way, and the panel prints share-of-people beside share-of-burden so neither reading can be quoted alone. No plant is named, by design.
“41% of the burden lands more than 100 km from the nearest coal source cell — a lower bound.”
A 34 × 54 heatmap of every source-state → receptor-state pair — all 1,836 drawn, no top-k threshold. 68% of the modelled burden lands outside the state that hosts the plants (a lower bound). Click a row for where one state's coal burden lands (Indiana: ~862 deaths/yr, 80% of it outside Indiana); click a column for who contributes to one state's air (New York hosts no coal units, so all ~241 deaths/yr are imported). Three receptor columns read exactly zero — a GEMM risk-threshold artifact, not clean air, and the tile says so on its face. Every column sum reconciles with the national tile to under a hundredth of a death, or the build refuses to write.
“68% of the modelled coal burden lands outside the state that hosts the plants.”
A different matrix from its neighbour above: real 2025 Climate TRACE industrial point-source emissions (electricity generation, refining, iron & steel, cement, other-chemicals — not coal-specific) run through the same InMAP v02 SR matrix, drawn as a clickable state-polygon map instead of a grid. Click any state, then toggle RECEPTOR ("who pollutes its air") vs SOURCE ("where its pollution lands") — the selected state is marked, never ramp-coloured. The panel's default is all five PM2.5 species, every Climate TRACE sector: 38.5% of modelled deaths land in a different state, on ~103,000 deaths/yr. (A separate, narrower TECHNICAL annex lower down covers 5 industrial point-source sectors, primary PM2.5 only, and does not follow the SCOPE toggle.) Alaska and Hawaii are drawn as real, selectable insets; Puerto Rico is the one state-shaped feature with no data.
“Click a state — who pollutes it, or where it pollutes — on the same real SR matrix.”
Where the extra emissions originate: the 67 named coal-fired units, or the same emissions rolled up to InMAP source cell, county or state, sized and coloured by ΔSO₂/ΔNOₓ, with a lower/mid/upper anchor toggle on fixed bins so toggling darkens rather than rescales the map.
“Where the extra SO₂/NOₓ would come from — plant by plant, or aggregated as far up as you like.”
Why “where it's emitted” isn't “who breathes it”: ~75% of US coal-PM2.5 deaths occur outside the state hosting the plant (Henneman 2023, a published fleet-wide finding). Beside the source cluster sits a computed result — the cluster's emissions mapped onto 55 source cells and run through the SR table for every receptor cell: peak added PM2.5 0.402 µg/m³ in northern West Virginia, with the 20 largest increases all within 3° of the cluster — a coherent downwind plume rather than scattered noise.
“Concentration peaks near the plants; the death toll travels.”
The cluster's health result, computed end-to-end on the real v02 matrix and summed over all 205,214 receptor cells: ~297 excess deaths/yr (range ~219–712 across the anchor spread) and ~$3.3B/yr in illustrative damages at a $11.0M value of a statistical life. Each figure carries its anchor and its range, and the page states plainly that these 67 units are ~28% of US coal-plant SO₂ — the cluster, not the fleet — before anyone quotes a number against EPA's 560–1,100/yr fleet-wide anchor.
“This cluster is not the fleet — read that before quoting a number.”
Two-anchor evidence lines (lower = EPA + bottom-up, upper = RFF/Rhodium bound, mid = illustrative), the acceptance-test results (mass conservation ~1e-7, self-response 10/10, GEMM verbatim, Step-1 linearity pass), the honesty ledger, and every caveat.
“Two evidence lines, the acceptance tests, and every caveat.”
The same Bay sources drawn twice as 3D columns — once by what leaves the stack, once by what it does to people. Reading them against each other is the point: a big emitter is not always a big killer, and vice versa.
The emissions-only sibling: the 3D column map with height set by raw primary-PM2.5 emissions (t/yr) rather than modelled health impact — no SR matrix, no concentration–response function, no VSL. Useful as the plain-emissions baseline to contrast against the impact-weighted flagship. Scope: ≥1 t/yr · 81 sources.
“Height = raw primary-PM2.5 emissions.”
A 3D map of Bay Area non-hub sources as columns whose height is each source's modelled PM2.5-attributable health impact (deaths/yr, or illustrative $ via a VSL toggle). By default a column is a source's total modelled impact across the region; click any receptor grid cell and every column resizes on a fixed height scale — so they honestly shrink — to that source's modelled impact on that one location. Each column is a marginal, non-additive estimate; hub sectors are excluded by default; the largest 100 non-hub sources are shown.
“Click any location — watch which sources reach it hardest.”
An emissions inventory tells you how many tonnes left a smokestack. It cannot tell you who breathes them. A source–receptor matrix closes that gap: it maps every source location to every place downwind, so a tonne can be traced to the people who end up exposed to it. Every view in this gallery is that one step applied to a different question.
San Mateo 83%, Alameda 68%. Air quality is a regional problem that requires cross-jurisdictional action. (The import-receipt card above says 94% for Marin: that view sets the low-confidence winery sector aside, and removing it makes the cross-boundary share larger, not smaller.) No concentration map can show this — only a source–receptor matrix can. (Marin and San Mateo are boundary counties; the closed-system clip truncates cross-boundary transport, so their imported share biases high.)
Built independently of the Bay work, on the same matrix: of the 6,160–9,047 deaths/yr the model puts on the US-matched receptor grid (the band spans the age-convention choice; 9,047 is the as-specified end), roughly two-thirds land outside the state hosting the plants, and 41% land more than 100 km from the nearest source cell. Both are lower bounds — single-layer SR under-represents long-range transport. New York hosts no coal units and still carries ~241 deaths/yr of imported burden.
Climate TRACE pins entire ocean voyages to a single point at the wharf. The Port of Oakland asset carries 21,772 t/yr NOx at one lat/lon, which the SR matrix injects into a single grid cell — it is the largest single contributor to the Bay's hottest modelled cell, 16.2 µg/m³ of "added" PM2.5 (in Alameda) where real-world total ambient is ~7–10. Excluding hub sources, the hottest cell drops to 2.0 µg/m³, in Solano County (the Benicia-area refinery mix) — the real story. Ports/airports are off by default in every demo.
Climate TRACE reports 13,170 t/yr SO₂ from food & beverage across 1,221 assets (median 10.6 t/yr — small wineries): 13× every Bay Area refinery combined. That reads as a downscaled sector inventory spread over proxy assets. It ranks #1 only because the engine trusts its input. A lever ranking is not decision-grade until CT's confidence/uncertainty tables are joined in.
Chevron Richmond (asset_id 1753290 under oil-and-gas-refining + 3674487
under other-chemicals) and Valero Benicia (1753313 + 3674809) each appear as
two asset_ids under two sectors. Checked against the emissions themselves, the pairs are
not duplicates: each record holds a different slice of the site's inventory (Chevron's refining
row is NOx/PM-dominated, its other-chemicals row SO₂/NH₃-dominated — pm2.5 differs 16×, and ammonia
inverts, which a copied row could not do). So the risk is the opposite of double counting: treating one
facility's two filings as two separate facilities, and dropping either one loses real emissions rather
than removing a duplicate.
Martinez is different: 3674670 (other-chemicals) and Tesoro Martinez 1753392
(oil-and-gas-refining, no 2025 conventional-refining emissions — plausibly a real change, e.g.
renewable-fuel conversion, not a misfiling) are likely two separate plants — verify each ID before
attributing. Net: oil-and-gas-refining holds 5 asset_ids while much refinery mass is filed
under other-chemicals; sector rollups split plants across categories, so facility claims risk
double-counting.
| The sentence to write | Why it is shaped that way |
|---|---|
| “If emissions from Source A were reduced by Y% and the resulting PM2.5 reduction were sustained, we estimate X fewer steady-state annual deaths.” | It states the counterfactual, the sustained condition, and the steady-state horizon — the three things that make the estimate mean what the model actually computed. |
| Approved vocabulary: associated with · contributed to · modelled · estimated · approximately · under our source-apportionment model | Each of these keeps the claim inside what the model computed — a modelled association under a stated apportionment, at stated precision. |