Skip to content
Well & TapHome Water Treatment Database

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.