Methodology & Sources

Everything here comes from public state and federal records. This page explains exactly how the map is built, what it claims, what it does not claim, and how to check it. Figures computed 2026-09-03; page built 2026-09-03.

The finding

The Minnesota Pollution Control Agency has recorded PFAS above a health standard in groundwater monitoring wells at 95 named facilities — mostly county landfills, across the state.

The Minnesota Department of Health has never tested fish for PFAS in 935 lakes (789,089 acres) or 4,305 river miles in or downstream of those same sub-watersheds, across 60 counties.

208 of those lakes and 139 of those river reaches were sampled — fish were caught, tissue was analyzed, a result was published — for mercury or PCBs. Not for PFAS.

Both datasets are public. Neither agency publishes them joined.

What this does not claim

Sources

DatasetAgencyUsed for
Fish consumption guidance (LakeFinder FCA pages)MDH via DNR Per-lake advisories and which contaminants were named
Waterbody-specific guidelines: Rivers (PDF)MDH River advisories by reach
Lake survey reports (LakeFinder API)DNR Fish populations, catch per net, DNR normal ranges
DNR HydrographyDNR / MN Geospatial Commons Lake list, DOW numbers, acreage, coordinates, stream geometry
Groundwater Contamination AtlasMPCA Monitoring wells, exceedances, contamination area polygons
Closed landfills, remediation sites, institutional controlsMPCA Contamination sources and cleanup status
Impaired waters, 303(d), 2024MPCA Fish-tissue impairments for mercury, PCBs, PFOS
Watershed Boundary Dataset (HUC12)USGS Sub-watershed boundaries and downstream links
Toxics Release InventoryEPA Facilities reporting chemical releases
ECHO enforcementEPA Formal actions, penalties, compliance status

Data as retrieved on the dates shown on each record. Agencies revise these datasets; the map is rebuilt weekly.

How the finding is computed

  1. Take every MPCA monitoring well with a recorded exceedance (exceedance_count > 0) whose exceedance names a PFAS compound. 8,543 wells qualify statewide.
  2. Place each well in its USGS HUC12 sub-watershed, then follow the tohuc field up to two steps downstream.
  3. Place every lake and every MPCA-listed stream reach in a sub-watershed the same way.
  4. Keep a waterbody only if MDH has never named a PFAS compound for it and MPCA has not listed it PFOS-impaired — i.e. no one has looked for PFAS there.
  5. Record, for each one, which well, what it exceeded, by how much, and when it was last sampled.

How "tested for PFAS" is decided — and why it favors the agencies

A lake is treated as already tested for PFAS if MDH's guidance page names any PFAS compound at all, or if MPCA has listed it PFOS-impaired. In practice that usually means a single compound — PFOS — while the PFAS family contains thousands. A lake screened only for PFOS is counted here as tested and is excluded from the finding, even though the compounds MPCA is measuring in groundwater at these sites routinely include PFOA, PFHxS, PFHxA, PFBS and PFNA as well.

That choice makes the count smaller and the claim narrower. It is deliberate: every lake in this finding has had no PFAS compound looked for in its fish.

Exclusions applied

What the exceedance numbers mean

MPCA's field is exceedance_pct_max. Despite the name, its values are the measured concentration divided by the health standard — a multiple, not a percentage. This site displays them as multiples (×).

MPCA publishes no definition for the field, so it was verified arithmetically against its own exceedance_value_list column, using trichloroethene wells at the Lehillier / Mankato site, where the health-based value is 0.4 µg/L:

WellMeasuredMeasured ÷ 0.4 MPCA field value
4D7.6 µg/L19.019.0
W30R1.2 µg/L3.03.0
W28R0.66 µg/L1.651.65
5D0.6 µg/L1.51.5

A PFOS well at the same site confirms it independently: 0.007 µg/L against a field value of 3.04 implies a standard of 0.0023 µg/L, which is MDH's health-based value for PFOS.

So a well listed at 18,101× carries roughly eighteen thousand times the health standard for the compound in question. Large multiples are not errors: PFAS standards are set in parts per trillion, so even a very large multiple can be an ordinary concentration for landfill leachate. If MPCA's own definition of this field differs from the arithmetic above, write to the corrections address and it will be relabelled.

Largest lakes MDH sampled and never tested for PFAS

LakeCountyAcresNearest PFAS exceedance MPCA exceedance magnitudeLast sampled
Lake of the Woods (MN)Lake of the Woods305,576Lake of the Woods County Landfill22,785%2020-04-22
Mille LacsMille Lacs128,250Hickory Grove Landfill18,101%2025-05-08
VermilionSt. Louis39,272Vermillion Modified Sanitary Landfill833%2025-10-08
East VermilionSt. Louis25,798Vermillion Modified Sanitary Landfill833%2025-10-08
CassBeltrami15,958Leech Lake Landfill1,544%2026-06-01
Otter TailOtter Tail14,079Northeast Otter Tail County Landfill20,253%2025-03-26
West VermilionSt. Louis11,368Vermillion Modified Sanitary Landfill833%2025-10-08
GullCass10,010Maple Landfill18,228%2025-11-06
WhitefishCrow Wing7,714Fifty Lakes Landfill1,013%2023-11-21
West BattleOtter Tail5,615Battle Lake Landfill663%2025-06-03
WomanCass5,520Walker-Hackensack Landfill5,392%2025-05-22
RushOtter Tail5,276Northeast Otter Tail County Landfill20,253%2025-03-26

Scale of the underlying gap

Minnesota has 8,628 lakes over 25 acres in the DNR hydrography layer. 1,458 have a fish-tissue result of any kind. 7,170 have none. Separately, DNR has published 21,933 fish population surveys covering 3,321 lakes, and MPCA has 19,599 monitoring wells in its contamination atlas.

Known limitations

Corrections

If something here is wrong, I want to fix it. Email mnwaterdata@gmail.com with the record and what is incorrect. Corrections are made within 48 hours and noted here. Agencies, facility operators, and anyone else named in this data are welcome to write.

This is an independent project. It is not affiliated with or endorsed by MDH, MPCA, DNR, EPA, USGS, or any company named in the underlying records.

← Back to the map