America's 136 operating coal power plants are linked to thousands of deaths a year — and 68% of those deaths land outside the state where the plant sits

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.

★ Headline result · National

National present burden — the 136 active US coal power plants

An estimated ~6,160–9,047 attributable deaths per year on US receptors, present burden.

What this panel shows, and its two companions

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.

What these twenty-five prototypes run on

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.

Built 2026-07-16 → 07-25 · InMAP UI 716 · use the left rail to move between panels

Group 1 of 4

Exposure — Bay Area

★ Lead demo · Climate TRACE-native

What you breathe — Delivered

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.”

★ Hero · Citizen / AG

Who's in my air?

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.”

Analyst · two modes

Sources ↔ places — receptor & source

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?”

Citizen

My air, by place

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?”

Government · Company

Emission-cut scenarios

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?”

Government · the decision screen

Best $ for clean air

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?”

Government

Who pollutes whom

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.)

Government

The import receipt

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.”

Government · budget

Cheapest clean air first

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.

Group 2 of 4

Health impact — Bay Area

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.

★ Flagship · Detailed

Where deaths land vs. where risk is highest

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.”

Detailed

Deaths by sector — where a sector's harm lands

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.”

Leadership · policy

Putting a dollar figure on the damage

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).”

General

Which counties bear the burden

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.”

Analyst · priorities

Priorities: exposure vs deaths — does the ranking flip?

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.”

Group 3 of 4

Policy — US coal-plant repeal

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.

★ Hub · the scenario

Repeal scenario — overview

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.”

★ Headline · National present burden

National present burden — active US coal power

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.”

Detailed

How far does it travel? — national transport

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.”

Detailed

Whose plants, whose air — source state × receptor state

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.”

Detailed

State PM2.5 map — receptor & source

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.”

Government · source

Ohio Valley source map

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.”

Government · transport

Source ≠ receptor — downwind transport (cluster)

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.”

Leadership · impact

Excess deaths & $ (cluster)

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.”

Analyst · methodology

Methodology — repeal health scenario

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.”

Group 4 of 4

Impact stacks — Bay Area

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.

General · explorer

Emission stacks — Bay sources by primary PM2.5

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.”

★ Flagship · Detailed

Impact stacks — which sources hit a place hardest

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.”

What a source–receptor matrix adds

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.

This is not a plume. A plume animation traces where a puff of pollution travels over hours or days, and it moves. What you see here is an annual-average contribution — a steady-state picture of where a source's pollution ends up over a typical year. Different question, different method, and it does not animate.

What building these actually found

Marin County: 86% of its modelled burden comes from other counties' sources with every modelled sector counted.

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.)

The same pattern holds nationally: 68% of the modelled coal burden crosses a state line.

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.

⚠ Hub attribution: shipping alone is 52% of the Bay's modelled signal.

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.

⚠ The top-ranked emission-cut "lever" is not credible.

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.

⚠ The Bay refineries are split across sectors — and that is a partition, not a double count.

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.

What can be said, per Johns Hopkins APL guidance

The sentence to writeWhy 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.
What every demo is, and is not. These show marginal increments that sources add above a 2005 baseline — not total ambient air quality. Emissions are Climate TRACE total annual 2025 (full-year source totals, not a single month); the SR response uses 2005 annual-average meteorology, annual steady state (episodic events like wildfires do not fit this model). Mortality, wherever it appears, is a modelled counterfactual: the GEMM concentration–response function (Burnett 2018, ages 25+) applied to a baseline mortality rate, expressed as steady-state annual deaths — GEMM is an upper-bound curve among the available functions. Dollar figures use the EPA value of a statistical life and are illustrative. Two scale-specific limits: the Bay-Area panels clip to a closed system — transport across the 9-county boundary is truncated, so edge counties bias low — while the national panels carry the opposite bias, because single-layer SR under-represents long-range transport, making every far-field and out-of-state share a lower bound.