Methodology & Sources

Reported by Brian Martucci, Minnesota Reformer, 19 October 2026: “How much PFAS is in Minnesota fish? We often have no idea.”

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-10-30; last updated 2026-11-02.

The finding

1,306 lakes (347,629 acres) and 696 river stretches sit in the sub-watersheds of sites where MPCA records show PFAS above a health standard in groundwater, or up to two downstream. None has a PFAS fish result in MDH’s guidance or in MPCA’s statewide PFAS fish file.

195 of the lakes were sampled by MDH — fish were caught, tissue was analyzed, guidance was published — and none has lake-specific PFAS advice; their MDH pages give advice for mercury or PCBs or point to MDH’s statewide guidance. For the other 1,111, MDH’s page says: “Fish from this lake have not been tested for contaminants.” 185 of the river stretches are listed by MPCA as impaired for mercury or PCBs in fish, so their fish were tested for those; none is listed for PFAS.

576 of the 1,306 lakes are one or two sub-watersheds downstream of a site; the other 730 share a sub-watershed with one, where the direction of flow is not determined here.

Cleanup sitesMonitoring-plan facilities (preliminary)All sites
Facilities with waters in the finding10952161
Lakes9743321,306
Lake acres189,298158,331347,629
River stretches502194696
Lakes MDH sampled (no lake-specific PFAS advice)15540195
Lakes whose MDH page says fish have not been tested8192921,111
Lakes one or two sub-watersheds downstream of a site465111576
River stretches listed for mercury or PCBs in fish13451185
Counties with lakes in the finding593367

Each water is counted once: with a cleanup site when one qualifies it, otherwise with a monitoring-plan facility.

15 more lakes (24,078 acres), including Cass, Koronis, Byllesby and Independence, are listed separately: their fish were tested for PFAS only between 2007 and 2010, with older methods and before MDH’s current health values, and no result since has been published. See the corrections dated 7 and 8 October 2026.

Both datasets are public. Neither agency publishes them joined.

Scope, and the state-owned subset

The cleanup-site figures cover every waterbody in or downstream of any of the 109 cleanup sites (lakes and rivers together; 93 of them have lakes in the finding). 80 of the 109 are in MPCA's Closed Landfill Program — landfills the state itself owns and monitors — including 70 of the 93 with lakes. In or downstream of those state-owned sites' sub-watersheds: 827 lakes (165,366 acres) and 392 river stretches.

Every river reach in this finding is attributed to a specifically named facility; program-level records were excluded before the river figures were computed (see Exclusions). The state-owned figures are the subset of the cleanup-site figures attributable to Closed Landfill Program sites.

Monitoring-plan facilities

MPCA also publishes PFAS groundwater results from its PFAS Monitoring Plan for permitted facilities such as operating landfills, airports and industrial sites (spreadsheet p-gen1-22i). These facilities are not on the Contamination Atlas, and MPCA marks most of their results “Prelim” (still being verified). Waters near them are screened with the same rules and exclusions as the cleanup sites, including MPCA’s statewide fish file. They are drawn on the map in orange and counted in the headline on their own line, so the cleanup-site figures can always be read alone. These figures will change if MPCA revises its preliminary results.

Surface water: what has been checked so far

Beyond fish, this project checked whether the water itself has been tested for PFAS near these sites. The figures below cover 2,057 lakes and river stretches: the 2,002 in the finding plus 55 that left it because their fish have a PFAS result in MPCA’s statewide file. Waters with a PFAS fish result published before this check (in MDH’s guidance, MPCA and MDH’s list since 2017, or another published study) are not among them.

From the data checked so far, 74 of the 2,057 have any PFAS result, fish or water (3.6%). That number could change once MPCA hands over the full export of PFAS results in its Surface Water Data, which it is preparing at this project’s request. When it arrives, these figures will be updated and the changes posted here.

Where this project has checked

MPCA’s public surface-water site returns a captcha to automated downloads, so river stretches in particular have not all been checked station by station. Some PFAS surface-water results are known to sit outside MPCA’s public database — for example, PFAS that MPCA reported in a creek next to Gofer Landfill in 2021.

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 figures here are a snapshot as of the date at the top of this page.

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 on MPCA’s Contamination Atlas qualify statewide, plus 206 wells at facilities in MPCA’s PFAS Monitoring Plan (spreadsheet p-gen1-22i), most of their results marked preliminary.
  2. Place each well in its USGS HUC12 sub-watershed, then follow the tohuc field up to two steps downstream.
  3. Match every lake by its full DNR outline and every MPCA-listed stream stretch by its full line. A lake counts if more than 1 acre of it lies in a screened sub-watershed (a site’s own, or one or two downstream); a stretch counts if more than 50 feet does. Smaller overlaps are within mapping error (changed 30 October 2026).
  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. there is no public PFAS result for its fish.
  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, or if it appears on MPCA and MDH’s published list of PFAS detections in fish since 2017, or if another published study or report gives a PFAS fish result for it (added 7 October 2026), or if it has a PFAS fish result in MPCA’s statewide PFAS fish-tissue file (added 30 October 2026). Lakes whose only published PFAS fish results are from 2007–2010 are listed separately. 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: for every lake in this finding, no PFAS result for its fish has been published. Whether any were tested and found low is a question only MDH can answer.

Correction, 26 September 2026

A check against MDH’s own published lists found that this project’s page reader had missed PFOS guidance on 13 lakes. Seven were counted in the finding: Peltier, Centerville and Spring (Anoka County); Agnes, Henry and Winona (Douglas County); and Zumbro (Olmsted County). The advisory text had been captured correctly but was not recorded as PFAS. Those lakes are now excluded. Every lake’s saved guidance text is now checked directly for PFAS, in addition to the parsed table, and cross-checked against MDH’s April 2025 PFAS update table and March 2026 river guidelines. Those seven are removed. No river figures changed.

Correction, 27 September 2026

Lakes were previously de-duplicated by name within a county. That merged separate lakes that share a name (Minnesota has many “Mud,” “Long” and “Unnamed” lakes) and failed to merge basins of one lake that carry different names (Lake Vermilion was counted as four lakes). Lakes are now identified by DNR lake number: one lake per number, the whole-lake record preferred, and a lake is excluded if any of its basins has PFAS guidance. Against the 3 September figures: 42 basin records merged into their lakes, 7 lakes removed for PFAS guidance, and 145 separate lakes restored. The finding is now 1,031 lakes and 740,366 acres. River figures are unchanged.

Correction, 3 October 2026

The “Largest lakes” table below, and the measured values in map pop-ups, could show monitoring-well results for substances other than PFAS (for example manganese or boron) next to a PFAS label. They now show PFAS compounds only, each labelled with its compound. The map’s summary text was also brought in line with this page. For the 822 lakes whose MDH page says “Fish from this lake have not been tested for contaminants,” the map now quotes MDH directly. For the 209 lakes MDH has sampled, it now says “no published PFAS fish result” rather than “never tested,” because MDH’s guidance for those lakes names mercury or PCBs and does not say whether PFAS was checked. The map also separates lakes downstream of a site from lakes that share its sub-watershed, and no longer shows MPCA’s raw exceedance field as a percentage. No counts changed.

Correction, 7 October 2026

A reader pointed out that MPCA and MDH publish a list of PFAS detections in fish by waterbody since 2017 (“PFAS chemicals detected in fish by waterbody since 2017”). This project had not checked the finding against it. 18 lakes in the finding are on that list, so a PFAS result for their fish has been published, and this page was wrong to say otherwise for them. They have been removed from the finding and are listed below. All 18 were among the lakes MDH had sampled; none were among the lakes whose MDH page says “Fish from this lake have not been tested for contaminants.”

The finding changed from 1,031 lakes (740,366 acres; 209 sampled by MDH; 492 downstream of a site) to 1,013 lakes (706,924 acres; 191 sampled; 484 downstream). The number of lakes whose MDH page says they have not been tested is unchanged (822). The number of sites (94) and counties (60) did not change. Lakes on the list are now excluded automatically, by DNR lake number.

Show the 18 lakes
LakeCountyAcresPosition PFAS detected in fish (ng/g, average / maximum, MPCA/MDH list)
Otter TailOtter Tail14,0792 sub-watersheds downstreamPFNA 1.13 avg / 1.13 max
Bemidji-StumpBeltrami6,919Same sub-watershedPFOS 0.55 avg / 0.69 max
DetroitBecker3,0671 sub-watershed downstreamPFOS 2.68 avg / 3.03 max
CarlosDouglas2,6051 sub-watershed downstreamPFOS 17.48 avg / 55.1 max; PFDA 2.4 avg / 2.4 max
White BearWashington2,428Same sub-watershedPFOS 6.06 avg / 16.4 max; PFDA 2.25 avg / 4.83 max; PFUnA 1.78 avg / 3.12 max; PFDoA 1.61 avg / 1.87 max
Bald EagleRamsey1,049Same sub-watershedPFOS 3.21 avg / 4.25 max
MedicineHennepin924Same sub-watershedPFOS 24.66 avg / 43.3 max; PFDA 2.99 avg / 5.66 max; PFUnA 1.45 avg / 1.53 max; PFDoA 0.91 avg / 1.23 max; PFDS 0.42 avg / 0.42 max; PFTeDA 0.35 avg / 0.35 max
WhaletailHennepin5101 sub-watershed downstream6:2 FTS 3.55 avg / 3.55 max; PFOS 0.84 avg / 1.15 max; PFDA 0.38 avg / 0.38 max
SwedeCarver4331 sub-watershed downstream6:2 FTS 1.43 avg / 1.43 max; PFOS 0.81 avg / 1.21 max; PFNA 0.77 avg / 0.93 max
St. Louis River - Thomson ReservoirCarlton3901 sub-watershed downstreamPFOS 5.96 avg / 7.78 max
OwassoRamsey375Same sub-watershedPFOS 11.92 avg / 20.5 max; PFDA 2.28 avg / 3.37 max; PFUnA 1.2 avg / 1.35 max; PFDoA 1.16 avg / 1.17 max
Thole/SchneiderScott157Same sub-watershedPFOS 3.23 avg / 4.35 max; PFDA 1.12 avg / 1.22 max; PFUnA 1.09 avg / 1.09 max
EchoCarlton1081 sub-watershed downstreamPFOS 3.3 avg / 3.7 max
RogersDakota102Same sub-watershedPFOS 4.31 avg / 5.4 max; PFDA 2.68 avg / 2.81 max
ParkersHennepin100Same sub-watershedPFOS 8.25 avg / 10.9 max; PFDA 1.22 avg / 1.52 max; PFDoA 0.87 avg / 1.31 max; PFDS 0.7 avg / 0.81 max; PFTeDA 0.42 avg / 0.42 max
Sweeney-TwinHennepin891 sub-watershed downstreamPFOS 7.28 avg / 10 max; 6:2 FTS 2.62 avg / 2.62 max; PFDoA 1.08 avg / 1.77 max; PFDA 1.05 avg / 1.47 max; PFDS 0.57 avg / 0.93 max; PFTeDA 0.44 avg / 0.47 max
GoldenAnoka58Same sub-watershedPFOS 7.21 avg / 7.21 max
CarverWashington50Same sub-watershedPFOS 23.48 avg / 26.3 max; PFDA 1.4 avg / 1.6 max

River reaches were checked the same day. The list identifies river samples by MPCA monitoring station, so each station was located in MPCA’s station records and matched to the reach it sits on. 9 reaches (92.0 miles) were removed: either a station on the list sits on the reach, or a sample with no reach of its own on file (a reservoir listed by DNR lake number, or a station without one) lies within 0.5 km of it. Stations on a different reach nearby, such as a tributary or the next reach, were not counted. River figures changed from 509 reaches and 4,305 miles to 500 reaches and 4,213 miles; facilities with lakes or rivers in the finding went from 110 to 109. 141 of the list’s samples are from Mississippi River pools; this finding included no Mississippi River reaches at the time (since 30 October 2026 it includes some; see that correction).

Show the 9 river reaches
River reachCountyMilesStation on the list PFAS detected in fish (ng/g, average / maximum)
Minnesota RiverChippewa32.4S009-833 Minnesota RiverPFOS 1.65 avg / 1.74 max
Zumbro RiverWabasha23.9S000-817 Zumbro RiverPFOS 6.8 avg / 18.3 max; PFDS 0.7 avg / 0.93 max; PFNA 0.749 avg / 0.925 max; PFHxS 0.723 avg / 0.723 max; 3 more
Minnesota RiverYellow Medicine14.8S005-054 Minnesota RiverPFOS 4.55 avg / 14.3 max; PFDA 0.52 avg / 0.69 max; PFDS 0.5 avg / 0.5 max
St Louis RiverCarlton7.909-0001-00-100 Thomson ReservoirPFOS 3.18 avg / 3.18 max
Unnamed creekWashington4.7S016-673 Unnamed Creek / Miss. R. Pool 2, Section 2PFOS 181 avg / 307 max; PFOSA 55.2 avg / 81.3 max; N-EtFOSAA 26.5 avg / 48 max; HQ-115 16.3 avg / 19.9 max; 15 more
St Louis RiverCarlton3.2S015-137 St. Louis R. (Scanlon Reservoir)PFOS 6.78 avg / 12.3 max; PFUnA 1.03 avg / 1.03 max
Cannon RiverGoodhue2.6S001-818 Cannon River (Lake)PFOS 2.14 avg / 2.3 max
St Louis RiverCarlton1.5S015-137 St. Louis R. (Scanlon Reservoir)PFOS 6.78 avg / 12.3 max; PFUnA 1.03 avg / 1.03 max
St Louis RiverCarlton1.009-0168-00-100 St Louis River - Knife Falls DamPFOS 8.23 avg / 11.9 max

Correction, 7 October 2026 (second)

After the correction above, a wider search for other published PFAS fish results found 9 more lakes in the finding:

Sunfish Lake has been removed. The 8 lakes tested only between 2007 and 2010 are now listed separately instead of being counted as having no published result. Those tests used older methods — MPCA’s 2007 data had a detection limit of about 5 ng/g, and about 10 compounds were measured, compared with about 40 today — and they predate MDH’s current health values. No later PFAS fish result has been published for them.

The finding changed from 1,013 lakes (706,924 acres) to 1,004 lakes (214,992 acres): 183 sampled by MDH (was 191), 821 whose MDH page says they have not been tested (was 822), and 479 downstream of a site (was 484), near 93 sites (was 94) in 59 counties (was 60). Another 8 lakes (491,885 acres) are listed separately as tested only between 2007 and 2010. River figures did not change.

Show the 9 lakes
LakeCountyAcresNowWhat was published
Lake of the Woods (MN)Lake of the Woods305,576Listed separately (tested only 2010)Reported tested for PFCs (PFAS) in 2010; MDH said none were found (MPR, 2011). Source: MDH/DNR 2010 PFC tests of the largest walleye lakes; MPR, 3 May 2011, quoting an MDH scientist: "We didn't find PFCs." No per-lake results found; requested from MDH.
Mille LacsMille Lacs128,250Listed separately (tested only 2010)Reported tested for PFCs (PFAS) in 2010; MDH said none were found (MPR, 2011). Source: MDH/DNR 2010 PFC tests of the largest walleye lakes; MPR, 3 May 2011, quoting an MDH scientist: "We didn't find PFCs." No per-lake results found; requested from MDH.
VermilionSt. Louis39,272Listed separately (tested only 2010)Reported tested for PFCs (PFAS) in 2010; MDH said none were found (MPR, 2011). Source: MDH/DNR 2010 PFC tests of the largest walleye lakes; MPR, 3 May 2011, quoting an MDH scientist: "We didn't find PFCs." No per-lake results found; requested from MDH.
CassBeltrami15,958Listed separately (tested only 2010)Reported tested for PFCs (PFAS) in 2010; MDH said none were found (MPR, 2011). Source: MDH/DNR 2010 PFC tests of the largest walleye lakes; MPR, 3 May 2011, quoting an MDH scientist: "We didn't find PFCs." No per-lake results found; requested from MDH.
ByllesbyDakota1,368Listed separately (tested only 2007)PFOS 1.42 ng/g in fish collected in 2007 (EPA study, published 2010). Source: Delinsky et al. 2010, Environ. Sci. Technol. 44:2549 (EPA), Table 2.
IndependenceHennepin832Listed separately (tested only 2007)PFOS 5 ng/g in bluegill; black crappie below detection (MPCA, 2007). Source: MPCA, 2007 Metro Lakes PFC Fish Data, additional 20 lakes (28 Jan 2008), detection limit about 5 ng/g.
SarahHennepin557Listed separately (tested only 2007)PFOS 7 ng/g in bluegill, 10 in northern pike; black crappie below detection (MPCA, 2007). Source: MPCA, 2007 Metro Lakes PFC Fish Data, additional 20 lakes (28 Jan 2008), detection limit about 5 ng/g.
ColbyWashington71Listed separately (tested only 2007)PFOS 22 ng/g in bluegill, 14 in black crappie (MPCA, 2007). Source: MPCA, 2007 Metro Lakes PFC Fish Data, additional 20 lakes (28 Jan 2008), detection limit about 5 ng/g.
SunfishDakota46RemovedTested by the City of Sunfish Lake in 2024; all fish results below 10 ng/g. Source: City of Sunfish Lake / WSB, 2024 City of Sunfish Lake PFAS Study.

Since checked: EPA’s 2022 National Lakes Assessment fish results (none of its Minnesota lakes is in the finding) and the full lake list of the 2010 EPA study (see the correction dated 8 October 2026). MPCA also reported that fish sampled in 2006 from the upper St. Croix River, above the St. Croix Falls dam, had PFOS below detection (MPCA, Mississippi River Pool 2 Intensive Study, 2010). The report does not say where on the river the fish were taken, so the finding’s two St. Croix reaches, both above the dam (Pine and Chisago counties, 59.7 miles), remain.

Correction, 8 October 2026

The supporting information of the 2010 EPA study cited above (Delinsky et al.) lists all 59 Minnesota lakes whose fish it measured for PFAS, from fish collected in 2007. 7 of them were still in the finding: Gull, Koronis, Embarrass, Mina, Hammal, Hanging Kettle and Winona. All had been sampled by MDH, whose guidance for them names mercury or PCBs. None is among the lakes whose MDH page says they have not been tested. Under the exclusion rules, they are now listed separately with the other lakes tested only between 2007 and 2010.

The finding changed from 1,004 lakes (214,992 acres) to 997 lakes (200,010 acres): 176 sampled by MDH (was 183), 821 whose MDH page says they have not been tested (unchanged), and 477 downstream of a site (was 479), near 93 sites (unchanged) in 59 counties (unchanged). 15 lakes (506,868 acres) are now listed separately as tested only between 2007 and 2010. River figures did not change.

For context: of the 15 lakes now listed separately, 10 had no PFAS reported (the four walleye lakes, per MDH in 2011, and six of the seven above), and 5 had PFOS between 1.4 and 22 ng/g (Byllesby, Winona, Independence, Sarah and Colby). These results are from 2007 to 2010, before MDH’s current health values, and no later PFAS fish result has been published for these lakes.

Show the 7 lakes
LakeCountyAcresWhat was published
GullCass10,010No PFAS above the study's limit of quantitation in a composite bluegill sample (10 compounds; fish collected 2007; EPA study, published 2010).
KoronisStearns3,096No PFAS above the study's limit of quantitation in a composite bluegill sample (10 compounds; fish collected 2007; EPA study, published 2010).
EmbarrassSt. Louis463No PFAS above the study's limit of quantitation in a composite bluegill sample (10 compounds; fish collected 2007; EPA study, published 2010).
MinaDouglas411No PFAS above the study's limit of quantitation in a composite bluegill sample (10 compounds; fish collected 2007; EPA study, published 2010).
HammalAitkin376No PFAS above the study's limit of quantitation in a composite bluegill sample (10 compounds; fish collected 2007; EPA study, published 2010).
Hanging KettleAitkin318No PFAS above the study's limit of quantitation in a composite crappie sample (10 compounds; fish collected 2007; EPA study, published 2010).
WinonaWinona308PFOS 4.70 ng/g in a composite bluegill sample; the other compounds measured were below the study's limit of quantitation (fish collected 2007; EPA study, published 2010).

Source: Delinsky et al. 2010, Environ. Sci. Technol. 44:2549 (EPA), Supporting Information Tables S1 and S4.

Correction, 30 October 2026

Five changes, all applied the same day.

1. MPCA’s statewide PFAS fish file. On 28 October MPCA sent its statewide PFAS fish-tissue results (163,898 results from 2004 to August 2025, including non-detects). 23 lakes and 20 river stretches in the finding have PFAS fish results in that file or in EPA’s national river surveys, and have left the finding. 18 of the lakes are removed; 5 (Loon, Oak, Penn, Louise and Green Mountain) were tested only between 2007 and 2010 and are listed separately with the other older-test lakes. Two of the 23 lakes, Wabasso and Placid, are lakes whose MDH page says their fish have not been tested.

2. River miles are no longer reported. This page, and the Minnesota Reformer’s 19 October story, gave about 4,200 river miles. That figure added the full length of every stretch on the list, but often only part of a stretch lies in a screened sub-watershed, and the total depended heavily on how partial stretches were counted. River stretches are counted instead.

3. Matching uses full shapes. Lakes are now matched by their full DNR outline and river stretches by their full MPCA line, instead of a center point and three points along each stretch. A lake counts if more than 1 acre of it lies in a screened sub-watershed; a stretch counts if more than 50 feet does. Smaller overlaps are within mapping error between the two map layers. The lake set did not change (997). Of the 500 river stretches, 497 were the same, 3 dropped out as slivers and 3 came in.

4. River advice was applied by name, not by stretch. MDH’s PFAS fish advice for one part of a river was removing every stretch with that river’s name: all of the Mississippi (MDH’s advice covers Pools 2 through 6), all of the Crow River (the advice covers only the South Fork in Carver and McLeod counties), and a Miller Creek in Wabasha County (the advice is for a different Miller Creek in St. Louis County). Advice is now applied only to the stretches it covers. 22 stretches were restored: 11 on the Mississippi above Minneapolis and below Pool 6, 10 on the Crow River and its North and Middle forks, and Miller Creek. A twelfth Mississippi stretch (Pool 9) stays out because MPCA’s 2023 list includes PFAS fish from it.

5. Monitoring-plan facilities added. Waters near permitted facilities in MPCA’s PFAS Monitoring Plan are now screened with the same rules and counted in the headline on their own line: 332 lakes and 194 river stretches near 52 facilities, where MPCA marks most results preliminary. The cleanup-site figures below are not affected.

6. Five lakes had newer PFAS fish results than the older-tests list showed. Mille Lacs (2024, PFOS not detected), Lake of the Woods (2023), Vermilion (East basin, 2024), Gull (2023) and Embarrass (2023) were listed as tested only between 2007 and 2010. MPCA’s statewide fish file has newer PFAS fish results for all five, all low (average PFOS 1.3 ng/g or less). They are no longer listed as older tests; 15 lakes remain on that list.

River stretches step by step: 500 before these changes; 500 after full shapes (3 out, 3 in); 522 after the river-advice fix (22 restored); 502 after MPCA’s fish file (20 removed).

The finding changed from 997 lakes (200,010 acres) and 500 river stretches to 974 lakes (189,298 acres) and 502 river stretches: 155 sampled by MDH (was 176) and 819 whose MDH page says they have not been tested (was 821), near 93 sites in 59 counties (unchanged). 20 lakes are now listed separately as tested only between 2007 and 2010 (was 15).

Show the 23 lakes
LakeCountyNowPFAS fish result
OtterAnokaRemovedPFAS fish tested 2025 (Black bullhead; Northern pike): PFOS up to 4.0 ng/g.
CoonAnokaRemovedPFAS fish tested 2025 (Black bullhead; Bluegill (sunfish); Yellow bullhead): PFOS up to 1.0 ng/g.
LoonBeckerListed separately (tested only 2007)PFAS fish tested 2007 (Bluegill (sunfish)): PFOS not detected.
MooseheadCarltonRemovedPFAS fish tested 2023 (Black crappie; Bluegill (sunfish); Northern pike; Walleye): PFOS up to 2.1 ng/g.
OakCarverListed separately (tested only 2010)PFAS fish tested 2010 (Bluegill (sunfish); Largemouth bass; Walleye): PFOS not detected.
SerpentCrow WingRemovedPFAS fish tested 2023 (Walleye): PFOS up to 7.2 ng/g.
CrystalDakotaRemovedPFAS fish tested 2023 (Northern pike): PFOS up to 8.6 ng/g.
GenevaDouglasRemovedPFAS fish tested 2024 (Bluegill (sunfish); Northern pike): PFOS up to 8.7 ng/g.
Le Homme DieuDouglasRemovedPFAS fish tested 2024 (Black crappie; Walleye): PFOS up to 41.1 ng/g.
DarlingDouglasRemovedPFAS fish tested 2024 (Black crappie; Northern pike): PFOS up to 13.2 ng/g.
PennHennepinListed separately (tested only 2010)PFAS fish tested 2010 (Black crappie): PFOS up to 12.4 ng/g.
PlacidMorrisonRemovedPFAS fish tested 2018 (Smallmouth bass): EPA national survey sample(s); values are in EPA's survey data, not MPCA's file.
TurtleRamseyRemovedPFAS fish tested 2024 (Northern pike; Walleye): PFOS up to 7.6 ng/g.
SnailRamseyRemovedPFAS fish tested 2024 (Black crappie; Northern pike): PFOS up to 12.8 ng/g.
WabassoRamseyRemovedPFAS fish tested 2025 (Black bullhead; Northern pike): PFOS up to 27.4 ng/g.
SilverRamseyRemovedPFAS fish tested 2007, 2025 (Black crappie; Bluegill (sunfish); Common carp; Walleye): PFOS up to 45.0 ng/g.
CaribouSt. LouisRemovedPFAS fish tested 2023 (Walleye): PFOS up to 7.2 ng/g.
Pike River FlowageSt. LouisRemovedPFAS fish tested 2023 (Walleye): PFOS up to 2.4 ng/g.
ElySt. LouisRemovedPFAS fish tested 2023 (Walleye): PFOS up to 2.8 ng/g.
LouiseWashingtonListed separately (tested only 2008)PFAS fish tested 2008 (Black crappie; Bluegill (sunfish)): PFOS up to 6.7 ng/g.
Green MountainWrightListed separately (tested only 2007)PFAS fish tested 2007 (Bluegill (sunfish)): PFOS not detected.
LongRamseyRemovedPFAS fish tested 2024 (Bluegill (sunfish); Walleye): PFOS up to 63.2 ng/g.
IslandRamseyRemovedPFAS fish tested 2024 (Bluegill (sunfish); Northern pike): PFOS up to 10.8 ng/g.
Show the 20 river stretches
River stretchCountyMPCA stretch IDPFAS fish result
St Louis RiverSt. Louis04010201-525PFAS fish tested 2014, 2019 (Northern pike; Rock bass): EPA national survey sample(s) (EPA National Rivers and Streams Assessment: northern pike 2014 (PFOS 4.82 ng/g); rock bass 2019 (2.83 ng/g)).
Otter CreekCarlton04010201-629PFAS fish tested 2021 (Brown trout): PFOS up to 2.0 ng/g.
Cloquet RiverSt. Louis04010202-501PFAS fish tested 2014 (Smallmouth bass): EPA national survey sample(s) (EPA National Rivers and Streams Assessment: smallmouth bass 2014 (PFOS 1.0 ng/g)).
Mississippi RiverCrow Wing07010104-656PFAS fish tested 2007, 2009 (Bluegill (sunfish); Northern pike; Smallmouth bass; Walleye): PFOS up to 18.0 ng/g.
Mississippi RiverMorrison07010104-658PFAS fish tested 2007 (Black crappie; Bluegill (sunfish)): PFOS up to 20.0 ng/g.
Crow Wing RiverMorrison07010106-721PFAS fish tested 2018 in EPA's National Rivers and Streams Assessment (Water Quality Portal).
Mississippi RiverStearns07010201-631PFAS fish tested 2007 (Black crappie; Bluegill (sunfish)): PFOS up to 17.3 ng/g.
Mississippi RiverWright07010203-729PFAS fish tested 2018, 2024 (Shorthead redhorse; Smallmouth bass): PFOS up to 7.3 ng/g.
Crow River, North ForkMeeker07010204-506PFAS fish tested 2013 (Channel catfish): EPA national survey sample(s); values are in EPA's survey data, not MPCA's file.
Crow River, North ForkWright07010204-556PFAS fish tested 2013, 2019 (Channel catfish; Walleye): EPA national survey sample(s); values are in EPA's survey data, not MPCA's file.
Mississippi RiverAnoka07010206-805PFAS fish tested 2008, 2013, 2024 (Channel catfish; Common carp; Smallmouth bass): PFOS up to 14.0 ng/g.
Rum RiverAnoka07010207-666PFAS fish tested 2025 (Shorthead redhorse): PFOS up to 3.3 ng/g.
Minnesota RiverBig Stone07020001-552PFAS fish tested 2018 in EPA's National Rivers and Streams Assessment (Water Quality Portal).
Minnesota RiverNicollet07020007-723PFAS fish tested 2008 (Channel catfish): EPA national survey sample(s) (EPA National Rivers and Streams Assessment: channel catfish 2008 (PFOS not quantified)).
Watonwan RiverBlue Earth07020010-501PFAS fish tested 2024 (Golden redhorse; Walleye): PFOS up to 11.4 ng/g.
Minnesota RiverScott07020012-506PFAS fish tested 2008, 2013 (White bass): EPA national survey sample(s) (EPA National Rivers and Streams Assessment: white bass 2008 (PFOS 50.5 ng/g) and 2013 (33.6 ng/g)).
Cannon RiverGoodhue07040002-501PFAS fish tested 2010 (Common carp; Rock bass; Smallmouth bass; Walleye): PFOS up to 41.2 ng/g.
Mississippi RiverWinona07040006-515PFAS fish tested 2024 (Common carp; Flathead catfish; Freshwater drum; Northern pike…): PFOS up to 22.9 ng/g.
Wild Rice RiverNorman09020108-643PFAS fish tested 2014 (Channel catfish): EPA national survey sample(s) (EPA National Rivers and Streams Assessment: channel catfish 2014 (PFOS 7.65 ng/g)).
Rainy RiverLake of the Woods09030008-560PFAS fish tested 2024 (Walleye; White sucker): PFOS up to 1.1 ng/g.

Source: MPCA statewide PFAS fish-tissue file (sheet AllFish.10282026), received from MPCA on 28 October 2026; EPA National Rivers and Streams Assessment via the Water Quality Portal for six stretches.

How the exceedance figures work

MPCA's well records carry a derived field, exceedance_pct_max. Despite the name it is a multiple of the health value, not a percentage, and it is computed against the most protective value MDH publishes for that compound.

Worked example — Hickory Grove Landfill, well 785553. MPCA reports a PFOA result of 0.143 µg/L and a field value of 18,101.27. MDH's Human Health-Based Water Guidance Table gives two values for PFOA:

MDH value for PFOAµg/L 0.143 ÷ value
Chronic health-based value0.00024596×
Cancer health-based value0.000007918,101×

So MPCA's figure is arithmetically correct and refers to the cancer-based value. A PFOS well at the Lehillier / Mankato site confirms the same pattern: 0.007 µg/L against MDH's chronic PFOS value of 0.0023 µg/L gives 3.04, which is exactly what MPCA reports.

Because a bare multiple does not say which value it is measured against, this site shows the measured concentration first and then both multiples, each labelled. Every figure can be checked against MDH's guidance table without trusting arithmetic in between.

What exceeding a cancer-based value does and does not mean. MDH's cancer health-based value is the concentration in drinking water corresponding to a small additional lifetime cancer risk for someone consuming that water daily over a lifetime. These measurements are from groundwater monitoring wells at these sites. They are not drinking water, and they are not measurements of any lake. A well exceeding that value is a statement about contamination at that site — not a statement about anyone's cancer risk, and not a claim that a downstream lake is affected.

An earlier version of this page said MPCA's field was inflated by a factor of 1,000. That was wrong — it came from working backwards to a standard rather than reading MDH's published table — and was corrected on 2026-09-03 before publication. The raw field is retained in the downloadable data as mpca_exceedance_pct_max_RAW_see_methodology.

Exclusions applied

Largest lakes MDH sampled, with no published PFAS result

LakeCountyAcresSite with PFAS exceedance PFAS measured in the cited well (MPCA)That well last sampled
WhitefishCrow Wing7,714Fifty Lakes LandfillPerfluorooctanoic acid (PFOA) 0.008 ug/L2023-11-21
West BattleOtter Tail5,615Battle Lake LandfillPFOA 0.00524 ug/L; PFOS 0.0054 ug/L2025-06-03
WomanCass5,520Walker-Hackensack LandfillPFOA 0.0426 ug/L; PFOS 0.00288 ug/L2025-05-22
RushOtter Tail5,276Northeast Otter Tail County LandfillPerfluorohexanesulfonate (PFHxS) 0.036 ug/L; Perfluorooctanesulfonate (PFOS) 0.0079 ug/L; Perfluorooctanoic acid (PFOA) 0.16 ug/L2025-03-26
Big PineOtter Tail4,728Northeast Otter Tail County LandfillPerfluorohexanesulfonate (PFHxS) 0.036 ug/L; Perfluorooctanesulfonate (PFOS) 0.0079 ug/L; Perfluorooctanoic acid (PFOA) 0.16 ug/L2025-03-26
White IronSt. Louis3,237Northwoods LandfillPerfluorohexanesulfonate (PFHxS) 0.022 ug/L; Perfluorooctanesulfonate (PFOS) 0.003 ug/L; Perfluorooctanoic acid (PFOA) 0.057 ug/L2022-06-14
BassItasca2,715Grand Rapids Area Sanitary LandfillPFOA 0.0136 ug/L; PFOS 0.00399 ug/L2025-06-17
Albert LeaFreeborn2,669Albert Lea Sanitary LandfillPFHxS 0.014 ug/L; PFOA 0.0457 ug/L; PFOS 0.0192 ug/L2025-05-28
Bear IslandSt. Louis2,362Northwoods LandfillPerfluorohexanesulfonate (PFHxS) 0.022 ug/L; Perfluorooctanesulfonate (PFOS) 0.003 ug/L; Perfluorooctanoic acid (PFOA) 0.057 ug/L2022-06-14
LongHubbard1,926Pickett LandfillPFOA 0.0272 ug/L2025-04-24
MelissaBecker1,850Becker County LandfillPFOA 0.0105 ug/L2026-04-29
Cross Lake ReservoirCrow Wing1,815Fifty Lakes LandfillPFOA 0.00045 ug/L2024-05-23

Scale of the underlying gap

Minnesota has 8,628 lakes over 25 acres in the DNR hydrography layer. 1,480 have a fish-tissue result of any kind. 7,148 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 [email protected] 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