PFAS in Minnesota drinking water
EPA's final UCMR 5 data covers 196 public water systems in Minnesota, serving about 4.2 million people. PFAS turned up in 88 of them (45%). 11 averaged above at least one EPA limit at a sampling point, affecting about 288,185 people.
Highest PFOA and PFOS averages among systems serving 1,000 or more: Hastings (21.0 / 4.5 ppt), Waite Park (5.5 / 16.5 ppt), Brooklyn Park (10.1 / 9.4 ppt), Woodbury (12.8 / 4.8 ppt) and Sauk Rapids (6.5 / 9.4 ppt).
Every tested system in Minnesota
Largest first. PFOA and PFOS columns show the average at each system's worst sampling point; EPA's limit for each is 4 ppt. Filter by name:
| Water system | People | PFOA | PFOS | PFAS found | Result |
|---|---|---|---|---|---|
| Minneapolis · Minneapolis | 425,300 | - | - | 1 | Below limits |
| Saint Paul Regional Water Services · St. Paul | 392,529 | - | - | 2 | Below limits |
| Rochester · Rochester | 123,624 | - | - | 1 | Below limits |
| Bloomington · Bloomington | 91,300 | - | - | 1 | Below limits |
| Brooklyn Park · Brooklyn Park | 89,995 | 10.1 | 9.4 | 5 | Above limit |
| Duluth · Duluth | 86,859 | - | - | 0 | None found |
| Woodbury · Woodbury | 82,643 | 12.8 | 4.8 | 7 | Above limit |
| Maple Grove · Maple Grove | 82,000 | - | - | 1 | Below limits |
| Plymouth · Plymouth | 76,546 | - | - | 1 | Below limits |
| Saint Cloud · St. Cloud | 71,321 | - | - | 1 | Below limits |
| Blaine · Blaine | 70,220 | - | - | 1 | Below limits |
| Eagan · Eagan | 68,223 | - | - | 1 | Below limits |
| Lakeville · Lakeville | 67,300 | - | - | 0 | None found |
| Coon Rapids · Coon Rapids | 64,000 | - | - | 1 | Below limits |
| Eden Prairie · Eden Prairie | 63,726 | - | - | 1 | Below limits |
| Burnsville · Burnsville | 61,747 | - | - | 1 | Below limits |
| Minnetonka · Minnetonka | 54,474 | - | - | 1 | Below limits |
| Edina · Edina | 53,494 | - | - | 1 | Below limits |
| Apple Valley · Apple Valley | 50,300 | - | - | 2 | Below limits |
| Saint Louis Park · St. Louis Park | 50,010 | - | - | 1 | Below limits |
| Shakopee · Shakopee | 47,000 | - | - | 4 | Below limits |
| Moorhead · Moorhead | 44,583 | - | - | 1 | Below limits |
| Mankato · Mankato | 42,803 | - | - | 0 | None found |
| Cottage Grove · Cottage Grove | 42,760 | - | - | 2 | Below limits |
| Richfield · Richfield | 36,899 | - | - | 1 | Below limits |
| Roseville · Roseville | 35,343 | - | - | 1 | Below limits |
| Inver Grove Heights · Inver Grove Heights | 34,189 | - | - | 2 | Below limits |
| Brooklyn Center · Brooklyn Center | 33,782 | - | 3.0 | 3 | Sample at limit |
| Joint Powers Water Board · Albertville | 30,922 | - | - | 0 | None found |
| Savage · Savage | 30,285 | - | - | 0 | None found |
| Oakdale · Oakdale | 30,144 | - | - | 1 | Below limits |
| Chaska · Chaska | 30,000 | - | - | 0 | None found |
| Winona · Winona | 27,782 | - | - | 0 | None found |
| Fridley · Fridley | 27,476 | - | - | 1 | Below limits |
| Rosemount · Rosemount | 26,500 | - | - | 1 | Below limits |
| Owatonna · Owatonna | 26,430 | - | - | 0 | None found |
| Austin Utilities · Austin | 26,174 | - | - | 0 | None found |
| Shoreview · Shoreview | 26,000 | - | - | 1 | Below limits |
| White Bear Lake · White Bear Lake | 25,634 | - | - | 1 | Below limits |
| Prior Lake · Prior Lake | 25,282 | - | - | 0 | None found |
| Chanhassen · Chanhassen | 24,951 | - | - | 0 | None found |
| Champlin · Champlin | 23,919 | - | - | 0 | None found |
| Faribault · Faribault | 23,718 | - | - | 0 | None found |
| Farmington · Farmington | 23,534 | - | - | 1 | Below limits |
| Hastings · Hastings | 23,222 | 21.0 | 4.5 | 7 | Above limit |
| Golden Valley · Golden Valley | 23,000 | - | - | 2 | Below limits |
| Crystal · Crystal | 22,937 | - | - | 1 | Below limits |
| New Brighton · New Brighton | 22,902 | - | - | 1 | Below limits |
| Columbia Heights · Columbia Heights | 22,278 | - | - | 1 | Below limits |
| Andover · Andover | 21,455 | - | - | 1 | Below limits |
| Willmar · Willmar | 21,045 | - | - | 0 | None found |
| New Hope · New Hope | 20,963 | - | - | 1 | Below limits |
| Northfield · Northfield | 20,790 | - | - | 1 | Below limits |
| South Saint Paul · South St. Paul | 20,664 | 3.8 | - | 6 | Sample at limit |
| Sartell · Sartell | 20,300 | - | - | 1 | Below limits |
| Elk River · Elk River | 19,532 | - | - | 0 | None found |
| Hopkins · Hopkins | 19,462 | - | - | 1 | Below limits |
| Stillwater · Stillwater | 19,462 | 5.2 | 7.5 | 5 | Above limit |
| Otsego · Otsego | 19,000 | - | - | 0 | None found |
| Albert Lea · Albert Lea | 18,492 | - | - | 0 | None found |
| Lino Lakes · Lino Lakes | 17,859 | - | - | 1 | Below limits |
| Anoka · Anoka | 17,798 | - | - | 2 | Above limit |
| Ramsey · Ramsey | 17,705 | - | - | 1 | Below limits |
| Buffalo · Buffalo | 16,711 | - | - | 0 | None found |
| Red Wing · Red Wing | 16,459 | - | - | 0 | None found |
| Hibbing · Hibbing | 16,028 | - | - | 0 | None found |
| Bemidji · Bemidji | 15,147 | - | - | 0 | None found |
| Monticello · Monticello | 15,087 | - | - | 2 | Below limits |
| Alexandria · Alexandria | 15,000 | - | 2.2 | 3 | Sample at limit |
| Hutchinson · Hutchinson | 14,900 | - | - | 0 | None found |
| Brainerd · Brainerd | 14,670 | - | - | 0 | None found |
| Robbinsdale · Robbinsdale | 14,646 | - | - | 2 | Below limits |
| North Mankato · North Mankato | 14,448 | - | - | 0 | None found |
| Rogers · Rogers | 14,430 | - | - | 1 | Below limits |
| Fergus Falls · Fergus Falls | 14,194 | - | - | 0 | None found |
| New Ulm · New Ulm | 14,052 | - | - | 0 | None found |
| Worthington · Worthington | 14,052 | - | - | 0 | None found |
| Marshall · Marshall | 13,890 | - | - | 1 | Below limits |
| Sauk Rapids · Sauk Rapids | 13,835 | 6.5 | 9.4 | 8 | Above limit |
| Lincoln-Pipestone Rural Water System · Lake Benton | 13,644 | - | - | 0 | None found |
| Waconia · Waconia | 13,277 | - | - | 0 | None found |
| Mounds View · Mounds View | 13,250 | - | - | 0 | None found |
| North Saint Paul · North St. Paul | 13,134 | - | 2.1 | 3 | Sample at limit |
| Big Lake · Big Lake | 13,056 | - | - | 2 | Below limits |
| Vadnais Heights · Vadnais Heights | 13,025 | - | - | 1 | Below limits |
| Cloquet · Cloquet | 12,864 | - | 8.1 | 2 | Above limit |
| Saint Peter · St. Peter | 12,198 | - | - | 0 | None found |
| Hugo · Hugo | 12,047 | - | - | 1 | Below limits |
| Forest Lake · Forest Lake | 11,800 | - | - | 0 | None found |
| White Bear Township · White Bear Lake | 11,699 | 2.3 | - | 2 | Sample at limit |
| Grand Rapids · Grand Rapids | 11,346 | - | - | 0 | None found |
| Lake Elmo · Lake Elmo | 10,978 | 10.6 | - | 3 | Above limit |
| Victoria · Victoria | 10,546 | - | - | 0 | None found |
| Fairmont · Fairmont | 10,328 | - | - | 1 | Below limits |
| Little Canada · St. Paul | 10,200 | - | - | 1 | Below limits |
| Detroit Lakes · Detroit Lakes | 10,038 | - | - | 0 | None found |
| Arden Hills · Arden Hills | 10,000 | - | - | 2 | Below limits |
| Cambridge · Cambridge | 9,862 | - | - | 0 | None found |
| Saint Anthony Village · Minneapolis | 9,500 | - | - | 1 | Below limits |
| Mound · Mound | 9,447 | - | - | 0 | None found |
| Baxter · Baxter | 9,341 | - | - | 0 | None found |
| Waseca · Waseca | 9,241 | - | - | 0 | None found |
| East Grand Forks · East Grand Forks | 9,206 | - | - | 1 | Below limits |
| Little Falls · Little Falls | 9,069 | - | - | 1 | Below limits |
| Mahtomedi · Mahtomedi | 8,818 | - | - | 1 | Below limits |
| Thief River Falls · Thief River Falls | 8,701 | - | - | 1 | Below limits |
| Virginia · Virginia | 8,361 | - | - | 0 | None found |
| Waite Park · Waite Park | 8,354 | 5.5 | 16.5 | 8 | Above limit |
| New Prague · New Prague | 8,247 | - | - | 0 | None found |
| Belle Plaine · Belle Plaine | 7,456 | - | - | 0 | None found |
| Isanti · Isanti | 7,386 | - | - | 0 | None found |
| Crookston · Crookston | 7,272 | - | - | 0 | None found |
| Hermantown · Hermantown | 7,215 | - | - | 0 | None found |
| Spring Lake Park · Spring Lake Park | 7,200 | - | - | 0 | None found |
| Saint Joseph · St. Joseph | 7,100 | - | - | 0 | None found |
| North Branch · North Branch | 6,863 | - | - | 0 | None found |
| Kasson · Kasson | 6,850 | - | - | 0 | None found |
| Stewartville · Stewartville | 6,850 | - | - | 0 | None found |
| Byron · Byron | 6,809 | - | - | 0 | None found |
| Litchfield · Litchfield | 6,786 | - | - | 0 | None found |
| Zimmerman · Zimmerman | 6,772 | - | - | 1 | Below limits |
| Carver · Carver | 6,700 | - | - | 0 | None found |
| Jordan · Jordan | 6,700 | - | - | 0 | None found |
| Delano Municipal Utilities · Delano | 6,564 | - | - | 0 | None found |
| Minnetrista · Minnetrista | 5,888 | - | - | 0 | None found |
| Red Rock Rural Water System · Jeffers | 5,840 | - | - | 0 | None found |
| Glencoe · Glencoe | 5,676 | - | - | 0 | None found |
| International Falls · International Falls | 5,637 | - | - | 0 | None found |
| Saint Paul Park · St. Paul Park | 5,427 | - | - | 1 | Below limits |
| Princeton · Princeton | 5,421 | - | 2.4 | 2 | Sample at limit |
| Morris · Morris | 5,351 | - | - | 0 | None found |
| Montevideo · Montevideo | 5,337 | - | - | 0 | None found |
| LaCrescent · Lacrescent | 5,257 | - | - | 0 | None found |
| Redwood Falls · Redwood Falls | 5,254 | - | - | 0 | None found |
| Saint Francis · St. Francis | 5,200 | - | - | 0 | None found |
| Circle Pines · Circle Pines | 5,075 | - | - | 1 | Below limits |
| Lake City · Lake City | 5,042 | - | - | 1 | Below limits |
| Becker · Becker | 5,034 | 2.1 | 4.5 | 6 | Above limit |
| Elko New Market · Elko-new Market | 5,003 | - | - | 0 | None found |
| Luverne · Luverne | 4,946 | - | - | 0 | None found |
| Chisholm · Chisholm | 4,940 | - | - | 0 | None found |
| Lindstrom · Lindstrom | 4,938 | - | - | 0 | None found |
| Dilworth · Dilworth | 4,918 | - | - | 1 | Below limits |
| Rockford · Albertville | 4,863 | - | - | 0 | None found |
| Oak Park Heights · Oak Park Heights | 4,776 | - | - | 5 | Below limits |
| Sauk Centre · Sauk Centre | 4,657 | - | - | 1 | Below limits |
| Windom · Windom | 4,646 | - | - | 0 | None found |
| Saint James · St. James | 4,611 | - | - | 0 | None found |
| Wayzata · Wayzata | 4,592 | - | - | 1 | Below limits |
| Watertown · Watertown | 4,550 | - | - | 0 | None found |
| Wadena · Wadena | 4,332 | - | - | 0 | None found |
| Park Rapids · Park Rapids | 4,298 | - | - | 0 | None found |
| Pipestone · Pipestone | 4,273 | - | - | 1 | Below limits |
| Cannon Falls · Cannon Falls | 4,237 | - | - | 0 | None found |
| Medina · Hamel | 4,205 | - | - | 0 | None found |
| Cold Spring · Cold Spring | 4,201 | - | - | 0 | None found |
| LeSueur · Lesueur | 4,170 | - | - | 0 | None found |
| Goodview · Winona | 4,158 | - | - | 0 | None found |
| Newport · Newport | 4,000 | 6.2 | - | 4 | Above limit |
| Wyoming · Wyoming | 3,990 | - | - | 0 | None found |
| Centerville · Centerville | 3,962 | - | - | 1 | Below limits |
| Lonsdale · Lonsdale | 3,913 | - | - | 0 | None found |
| Shorewood · Shorewood | 3,890 | - | - | 1 | Below limits |
| Melrose · Melrose | 3,886 | - | - | 1 | Below limits |
| Norwood-Young America · Norwood Young America | 3,850 | - | - | 0 | None found |
| Saint Charles · St. Charles | 3,825 | - | - | 0 | None found |
| Mora · Mora | 3,786 | - | - | 1 | Below limits |
| Eveleth · Eveleth | 3,770 | - | - | 1 | Below limits |
| Chisago City · Chisago City | 3,745 | - | - | 1 | Below limits |
| Long Prairie · Long Prairie | 3,744 | - | - | 0 | None found |
| Two Harbors · Two Harbors | 3,698 | - | - | 0 | None found |
| Sleepy Eye · Sleepy Eye | 3,599 | - | - | 0 | None found |
| Lakeland Municipal Water · Lakeland | 3,500 | - | - | 1 | Below limits |
| Annandale · Annandale | 3,430 | - | - | 0 | None found |
| Perham · Perham | 3,421 | - | - | 0 | None found |
| Plainview · Plainview | 3,340 | - | - | 0 | None found |
| Breckenridge · Breckenridge | 3,340 | - | - | 0 | None found |
| Pine Island · Pine Island | 3,324 | - | - | 0 | None found |
| Jackson · Jackson | 3,323 | - | - | 0 | None found |
| Ely · Ely | 3,258 | - | - | 0 | None found |
| Blue Earth Light and Water · Blue Earth | 3,174 | - | - | 0 | None found |
| Arlington · Arlington | 2,230 | - | - | 0 | None found |
| Ortonville · Ortonville | 2,021 | - | - | 0 | None found |
| Elgin · Elgin | 1,115 | - | - | 0 | None found |
| Bird Island · Bird Island | 1,024 | - | - | 0 | None found |
| Saint Clair · St. Clair | 846 | - | - | 0 | None found |
| Lac Qui Parle Valley School · Madison | 800 | - | - | 0 | None found |
| Holdingford · Holdingford | 770 | - | - | 1 | Below limits |
| Mabel · Mabel | 715 | - | - | 0 | None found |
| Ranier · Ranier | 565 | - | - | 0 | None found |
| Amboy · Amboy | 535 | - | - | 0 | None found |
| Floodwood · Floodwood | 501 | - | - | 0 | None found |
| Greenfield · Greenfield | 313 | - | - | 0 | None found |
| Liberty Ponds Development · Forest Lake | 240 | - | - | 0 | None found |
| Colonial Homes 2 · Brookston | 34 | - | - | 0 | None found |
| Bayer U.S.-Crop Science · Redwood Falls | 30 | - | - | 0 | None found |
On a private well in Minnesota?
EPA's program only covers public systems. Private wells are never part of UCMR 5, so the only way to know is to test. Our well testing guide covers which lab tests to order, and the best well water systems covers what to install once you have results.
Cite this page
Well & Tap. "PFAS in Minnesota drinking water: results for 196 systems." Data: U.S. EPA UCMR 5, final release August 2026. https://wellandtap.com/pfas/minnesota/
Source: EPA UCMR 5 final occurrence data (August 2026); population from EPA SDWIS. Method.