Skip to content
Well & TapHome Water Treatment Database

PFAS in Michigan drinking water

EPA's final UCMR 5 data covers 319 public water systems in Michigan, serving about 6.8 million people. PFAS turned up in 44 of them (14%). 5 averaged above at least one EPA limit at a sampling point, affecting about 219,330 people.

Highest PFOA and PFOS averages among systems serving 1,000 or more: Independence Township (6.0 / 9.7 ppt), Kalamazoo (2.0 / 6.6 ppt), Dundee (8.2 / 0.0 ppt), Gladstone (0.0 / 7.5 ppt) and Fremont (4.6 / 0.0 ppt).

Every tested system in Michigan

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
City of Detroit · Detroit 633,218 - - 0 None found
Grand Rapids · Grand Rapids 306,901 - - 0 None found
Kalamazoo · Kalamazoo 192,992 2.0 6.6 5 Above limit
Lansing Board of Water & Light · Lansing 166,000 - - 0 None found
City of Warren · Warren 134,056 - - 0 None found
City of Sterling Heights · Sterling Heights 127,000 - - 0 None found
Ann Arbor · Ann Arbor 123,851 - - 3 Below limits
Dearborn · Dearborn 109,976 - - 0 None found
Clinton Township · Clinton Township 100,513 - - 0 None found
Canton Township · Canton 99,627 - - 0 None found
Livonia · Livonia 96,942 - - 0 None found
Macomb Township · Macomb 90,000 - - 0 None found
Troy · Troy 85,854 - - 0 None found
Westland · Westland 85,420 - - 0 None found
City of Flint · Flint 81,252 - - 0 None found
Rochester Hills · Rochester Hills 74,000 - - 0 None found
Genesee County Water System · Flint 73,726 - - 0 None found
Waterford Township · Waterford 73,441 - - 1 Below limits
Wyoming · Holland 72,125 - - 0 None found
Shelby Township · Shelby Township 72,000 - - 0 None found
Southfield · Southfield 71,739 - - 0 None found
Pontiac · Waterford 63,776 - - 1 Below limits
Taylor · Taylor 63,409 - - 0 None found
City of St. Clair Shores · St. Clair Shores 59,715 - - 0 None found
Dearborn Heights · Dearborn Heights 57,774 - - 0 None found
City of Royal Oak · Royal Oak 57,236 - - 0 None found
City of Farmington Hills · Farmington Hills 56,984 - - 0 None found
City of Novi · Novi 56,780 - - 0 None found
Ypsilanti Community Utility Authority · Ypsilanti 53,988 - - 0 None found
Holland Board of Public Works · Holland 49,687 - - 0 None found
Redford Township · Redford 49,504 - - 0 None found
West Bloomfield Township · West Bloomfield 49,479 - - 0 None found
Monroe · Monroe 49,467 - - 0 None found
City of Roseville · Roseville 47,299 - - 1 Below limits
Portage · Portage 46,292 - - 2 Below limits
City of Saginaw · Saginaw 44,058 - - 1 Below limits
Battle Creek - Verona System · Battle Creek 43,975 - - 1 Below limits
City of Midland · Midland 42,547 - - 1 Below limits
Plainfield Township · Grand Rapids 42,271 - - 2 Below limits
Bloomfield Township · Bloomfield Township 41,691 - - 0 None found
Chesterfield Township · Chesterfield Township 41,650 - - 0 None found
Georgetown Township · Jenison 41,086 - - 0 None found
Saginaw Charter Township · Saginaw 40,840 - - 0 None found
Lincoln Park · Lincoln Park 38,144 - - 0 None found
Byron-gaines Utility Authority · Caledonia 37,464 - - 0 None found
Muskegon · Muskegon 37,213 - - 0 None found
Kentwood · Kentwood 36,072 - - 0 None found
Monroe South County · Monroe 33,816 - - 0 None found
Brownstown Township · Brownstown Twp 33,194 - - 0 None found
Jackson · Jackson 33,165 - - 0 None found
City of East Lansing · East Lansing 33,000 - - 0 None found
Orion Township · Lake Orion 33,000 - - 0 None found
City of Eastpointe · Eastpointe 32,442 - - 0 None found
City of Bay City · Bay City 32,255 - - 0 None found
Northville Township · Northville 32,103 - - 0 None found
Southgate · Southgate 30,047 - - 0 None found
Madison Heights · Madison Heights 29,694 - - 0 None found
Oak Park · Oak Park 29,654 - - 1 Below limits
City of Port Huron · Port Huron 28,983 - - 0 None found
Hamtramck · Hamtramck 28,433 - - 0 None found
Allen Park · Allen Park 28,210 - - 1 Below limits
Garden City · Garden City 27,625 - - 0 None found
Plymouth Township · Plymouth 27,524 - - 0 None found
Van Buren Township · Van Buren Township 27,359 - - 0 None found
Southwest Michigan Regional Sanitary Sew · St. Joseph 26,780 - - 0 None found
Holland Township Consolidated · Holland 26,100 - - 0 None found
Wyandotte · Wyandotte 25,883 - - 0 None found
Meridian Township · Okemos 25,600 - - 0 None found
Summit Township · Jackson 25,355 - - 0 None found
Inkster · Inkster 25,076 - - 0 None found
Pittsfield Township · Ann Arbor 24,500 - - 0 None found
Harrison Township · Harrison Township 24,314 - - 0 None found
Norton Shores · Norton Shores 23,994 - - 0 None found
Romulus · Romulus 23,989 - - 0 None found
Adrian · Adrian 23,663 - - 0 None found
Ferndale · Ferndale 22,105 - - 0 None found
Charter Township of Delta · Lansing 21,856 - - 0 None found
City of Mount Pleasant · Mt Pleasant 21,688 - - 0 None found
Frenchtown Township · Monroe 21,609 - - 1 Below limits
Auburn Hills · Auburn Hills 21,412 - - 1 Below limits
Blackman Township · Jackson 21,222 - - 0 None found
City of Burton · Burton 21,000 - - 0 None found
Charter Township of Grand Blanc · Grand Blanc 21,000 - - 0 None found
Marquette · Marquette 20,629 - - 0 None found
Birmingham · Birmingham 20,472 - - 1 Below limits
Commerce Township · Commerce Township 19,811 - - 0 None found
Allendale Township · Allendale 19,725 - - 0 None found
Trenton · Trenton 18,544 - - 0 None found
Wayne · Wayne 17,713 - - 0 None found
Mhog Sewer & Water Authority · Brighton 17,046 - - 0 None found
Huron Twp · New Boston 16,944 - - 0 None found
Hazel Park · Hazel Park 16,400 - - 0 None found
City of Owosso · Owosso 16,353 - - 0 None found
City of Mount Clemens · Mt Clemens 16,314 - - 1 Below limits
Grosse Pointe Woods · Grosse Pointe Woods 16,135 - - 0 None found
Grandville · Grandville 15,948 - - 0 None found
Washington Township · Washington 15,828 - - 0 None found
Grand Haven Township · Grand Haven 15,051 - - 0 None found
Berkley · Berkley 14,970 - - 0 None found
Sault Ste Marie · Sault Ste. Marie 14,689 - - 0 None found
City of Traverse City · Traverse City 14,532 - - 0 None found
City of Fraser · Fraser 14,297 - - 0 None found
Harper Woods · Harper Woods 14,236 - - 0 None found
Niles · Niles 14,215 - - 0 None found
City of Wixom · Wixom 13,928 - - 0 None found
Coldwater · Coldwater 13,822 - - 0 None found
Escanaba · Escanaba 12,941 - - 0 None found
Woodhaven · Woodhaven 12,941 - - 0 None found
Union Township · Mt Pleasant 12,927 - - 1 Below limits
Garfield Charter Township · Traverse City 12,899 - - 0 None found
Melvindale · Melvindale 12,851 - - 0 None found
Michigan State University · East Lansing 12,793 - - 0 None found
City of New Baltimore · New Baltimore 12,720 - - 0 None found
Riverview · Riverview 12,486 - - 0 None found
Bangor Township · Bay City 11,999 - - 0 None found
Thomas Township · Saginaw 11,931 - - 0 None found
Sturgis · Sturgis 11,920 - - 0 None found
Clawson · Clawson 11,825 - - 0 None found
Independence Township · Clarkston 11,790 6.0 9.7 8 Above limit
City of Fenton · Fenton 11,746 - - 1 Below limits
Ionia · Ionia 11,708 - - 0 None found
East Grand Rapids · East Grand Rapids 11,637 - - 0 None found
City of Farmington · Farmington 11,597 - - 0 None found
Grosse Pointe Park · Grosse Pointe Park 11,555 - - 0 None found
City of South Lyon · South Lyon, 11,055 - - 1 Below limits
Midland Co., Water Dist. No. 1 of · Sanford 11,000 - - 0 None found
Grosse Ile Township · Grosse Ile 10,788 - - 0 None found
Port Huron Township · Port Huron 10,654 - - 0 None found
Flat Rock · Flat Rock 10,541 - - 0 None found
Beverly Hills · Beverly Hills 10,451 - - 0 None found
Grand Haven · Grand Haven 10,412 1.2 - 1 Sample at limit
Oxford Township · Waterford 10,407 - - 0 None found
Big Rapids · Big Rapids 10,403 - - 0 None found
City of Cadillac · Cadillac 10,355 - - 0 None found
City of Brighton · Brighton 10,210 - - 0 None found
City of Alpena · Alpena 10,128 - - 0 None found
Bridgeport Township · Bridgeport 10,104 - - 0 None found
City of Marysville · Marysville 9,959 - - 0 None found
Muskegon Heights · Muskegon Heights 9,917 - - 0 None found
City of Howell · Howell 9,914 - - 0 None found
Berlin Township · Newport 9,900 - - 0 None found
Clay Township · Algonac 9,866 - - 0 None found
Grosse Pointe Farms · Grosse Pointe Farms 9,757 - - 0 None found
Hampton Township · Bay City 9,652 - - 0 None found
Sumpter Township · Belleville 9,576 - - 0 None found
Beecher Metropolitan District · Flint 9,400 - - 0 None found
Spring Lake Township · Spring Lake 9,393 1.2 - 1 Sample at limit
Lyon Township · New Hudson 9,390 - - 0 None found
Fruitport Township · Fruitport 9,355 - - 0 None found
Ecorse · Ecorse 9,305 - - 0 None found
Tittabawassee Township · Freeland 9,227 - - 0 None found
City of Alma · Alma 9,182 - - 0 None found
Saline · Saline 9,158 - - 0 None found
Albion · Albion 9,144 - - 0 None found
South Haven Area Water & Sewer Authority · South Haven 9,133 - - 0 None found
Plymouth · Plymouth 9,132 - - 0 None found
Benton Harbor · Benton Harbor 9,103 - - 0 None found
City of Charlotte · Charlotte 9,074 - - 2 Below limits
City of Lapeer · Lapeer 9,023 - - 0 None found
City of Petoskey · Petoskey 8,979 - - 0 None found
Highland Park · Highland Park 8,977 - - 0 None found
Greenville · Greenville 8,816 - - 1 Below limits
City of Grand Ledge · Grand Ledge 8,701 - - 0 None found
Buena Vista Township · Saginaw 8,676 - - 1 Below limits
Menominee · Menominee 8,583 - - 0 None found
Village of Holly · Holly 8,557 - - 0 None found
Tecumseh · Tecumseh 8,521 - - 0 None found
Scio Township · Ann Arbor 8,500 - - 3 Below limits
Genesee Township · Genesee 8,473 - - 0 None found
Bay CO. Dept of Water & Sewer · Bay City 8,465 - - 0 None found
Houghton · Houghton 8,386 - - 0 None found
Zeeland Board of Public Works · Zeeland 8,328 - - 0 None found
City of Flushing · Flushing 8,311 - - 0 None found
City of Grand Blanc · Grand Blanc 8,276 - - 0 None found
City of Center Line · Center Line 8,257 - - 0 None found
City of Mason · Mason 8,252 - - 0 None found
City of Ludington · Ludington 8,184 - - 0 None found
Hillsdale · Hillsdale 8,163 - - 0 None found
St Joseph · St. Joseph 7,930 - - 0 None found
Three Rivers · Three Rivers 7,905 - - 1 Below limits
City of St. Johns · St. Johns 7,896 - - 0 None found
Hudsonville · Hudsonville 7,708 - - 0 None found
Ada Township · Ada 7,584 - - 0 None found
Iron Mountain · Iron Mountain 7,500 - - 0 None found
Milan · Milan 7,363 - - 0 None found
Hastings · Hastings 7,350 - - 0 None found
River Rouge · River Rouge 7,224 - - 0 None found
Rockford · Rockford 7,160 - - 0 None found
Muskegon CO Eastside Water System · Muskgon 7,135 - - 0 None found
Rochester · Rochester 7,130 - - 0 None found
Marshall · Marshall 7,088 - - 0 None found
Oscoda Township · Oscoda 6,997 - - 0 None found
City of St. Louis · St. Louis 6,976 - - 0 None found
Superior Township · Ypsilanti 6,830 - - 1 Below limits
Benton Charter Township · Benton Harbor 6,768 - - 0 None found
White Lake Township · White Lake 6,619 - - 1 Below limits
Ira Township · Ira 6,510 - - 0 None found
Ishpeming · Ishpeming 6,470 - - 0 None found
Village of Milford · Milford 6,366 - - 0 None found
Dowagiac · Dowagiac 6,350 - - 0 None found
Huntington Woods · Huntington Woods 6,200 - - 0 None found
City of Manistee · Manistee 6,200 - - 0 None found
City of Richmond Mi · Richmond 6,200 - - 0 None found
Northville · Northville 6,119 - - 0 None found
Ash Township · Carleton 5,959 - - 0 None found
Allegan · Allegan 5,930 - - 0 None found
St. Clair Water and Sewer Authority · East China 5,847 - - 0 None found
Alpena Township · Alpena 5,839 - - 0 None found
Sims-whitney Utilities Auth. · Tawas City 5,815 - - 0 None found
City of Swartz Creek · Swartz Creek 5,800 - - 0 None found
Belding · Belding 5,769 - - 0 None found
Carrollton Township · Saginaw 5,705 - - 0 None found
Village of New Haven · New Haven 5,600 - - 0 None found
Michigan-american Water CO · Calumet 5,535 - - 0 None found
City of Cheboygan · Cheboygan 5,500 - - 0 None found
Lansing Township · Lansing 5,500 - - 0 None found
Gm Proving Grounds Well 5, 7, 8, 9 · Milford 5,500 - - 0 None found
Kingsford · Kingsford 5,480 - - 3 Below limits
Chelsea · Chelsea 5,474 - - 0 None found
City of St. Clair · St. Clair 5,464 - - 0 None found
Williams Township · Bay City 5,444 - - 0 None found
City of Grosse Pointe · Harper Woods 5,421 - - 0 None found
Dundee · Dundee 5,400 8.2 - 1 Above limit
Ironwood · Ironwood 5,387 - - 0 None found
City of Eaton Rapids · Eaton Rapids 5,340 - - 0 None found
Kinross Township · Kincheloe 5,300 - - 3 Below limits
City of Walled Lake · Waterford 5,260 - - 0 None found
Fort Gratiot Township · Fort Gratiot 5,250 - - 0 None found
Monitor Township · Bay City 5,217 - - 0 None found
Kimball Township · Kimball 5,170 - - 0 None found
Musk CO Northside Water System · Muskgon 5,133 - - 0 None found
Rochester East · Rochester 5,100 - - 0 None found
City of Utica · Utica 5,059 - - 1 Below limits
City of Caro · Caro 5,029 - - 0 None found
City of Davison · Davison 5,000 - - 0 None found
Kalamazoo Lake Sewer & Water Authority · Saugatuck 5,000 - - 0 None found
Gibraltar · Gibraltar 4,997 - - 0 None found
City of Frankenmuth · Frankenmuth 4,944 - - 0 None found
Southwest Oakland Township · Waterford 4,943 - - 0 None found
Buchanan · Buchanan 4,871 - - 0 None found
Kochville Township · Saginaw 4,695 - - 0 None found
Marine City · Marine City 4,652 - - 0 None found
Gladstone · Gladstone 4,632 - 7.5 1 Above limit
Caledonia Township · Caledonia 4,573 - - 0 None found
Negaunee · Negaunee 4,568 - - 0 None found
Coopersville · Coopersville 4,519 - - 0 None found
Fremont · Fremont 4,516 4.6 - 1 Above limit
Dexter · Dexter 4,500 - - 0 None found
Hancock · Hancock 4,500 - - 0 None found
Wayland · Wayland 4,435 - - 0 None found
Lake Charter Township · Bridgman 4,177 - - 0 None found
Roosevelt Park · Muskegon 4,172 - - 0 None found
City of Linden · Linden 4,150 - - 0 None found
Lowell · Lowell 4,150 - - 0 None found
Sparta · Sparta 4,140 - - 0 None found
Otsego · Otsego 4,120 2.0 - 5 Sample at limit
City of Algonac · Algonac 4,110 - - 0 None found
Lathrup Village · Lathrup Village 4,075 - - 0 None found
Pfizer · Kalamazoo 4,000 - - 3 Below limits
Plainwell · Plainwell 3,998 - - 0 None found
Belleville · Belleville 3,964 - - 0 None found
City of Williamston · Williamston 3,917 - - 0 None found
Pennfield Township · Battle Creek 3,916 - - 0 None found
Augusta Township · Whittaker 3,907 - - 0 None found
Mancelona Area Water and Sewer Authority · Mancelona 3,900 - - 0 None found
Portland · Portland 3,883 - - 0 None found
Worth Township · Lexington 3,854 - - 0 None found
Highland Township · Waterford 3,837 - - 0 None found
Springfield · Springfield 3,833 - - 1 Below limits
North Muskegon · North Muskegon 3,786 - - 0 None found
Village of Romeo · Armada 3,750 - - 0 None found
City of Boyne City · Boyne City 3,735 - - 0 None found
East Bay Charter Township · Traverse City 3,720 - - 1 Below limits
City of Gaylord · Gaylord 3,629 - - 2 Below limits
Frankenlust Township · Bay City 3,626 - - 0 None found
Lake Bella Vista · Rockford 3,584 - - 1 Below limits
Bloomfield Hills · Waterford 3,579 - - 0 None found
City of Imlay City · Imlay City 3,579 - - 0 None found
Village of Oxford · Oxford 3,540 - - 0 None found
Cedar Springs · Cedar Springs 3,520 - - 0 None found
Madison Township · Adrian 3,480 - - 0 None found
City of Essexville · Essexville 3,478 - - 0 None found
City of Durand · Durand 3,446 - - 0 None found
Paw Paw · Paw Paw 3,362 - - 0 None found
Jamestown Township · Hudsonville 3,330 - - 0 None found
Carson City · Carson City 3,322 - - 0 None found
Norway · Norway 3,314 - - 0 None found
Middleville · Middleville 3,309 - - 1 Below limits
Blissfield · Blissfield 3,276 - - 1 Below limits
City of Mount Morris · Mt Morris 3,086 - - 0 None found
Ontonagon · Ontonagon 2,607 - - 0 None found
Clyde Township · Clyde 2,400 - - 0 None found
City of East Jordan · East Jordan 2,215 - - 0 None found
Berrien Springs · Berrien Springs 1,910 - - 0 None found
Arlington Woods · Muskegon 1,650 - - 0 None found
Nashville · Nashville 1,628 - - 0 None found
Village of Breckenridge · Breckenridge 1,339 - - 0 None found
Village of Fowler · Fowler 1,136 - - 0 None found
Port Hope-gore-rubicon U. A. · Port Hope 1,058 - - 0 None found
Village of North Branch · North Branch 1,021 - - 0 None found
Absopure #1 · Plymouth 1,000 - - 0 None found
Hesperia · Hesperia 954 - - 2 Below limits
Northwest High School · Jackson 916 - - 0 None found
Green Oak Twp - Centennial Farms · Brighton 900 - - 0 None found
Sanilac Township · Port Sanilac 674 - - 0 None found
Sanilac Isd · Peck 650 - - 0 None found
Nazarene Camp · Vicksburg 648 - - 0 None found
Big Creek/mentor Utility Authority · Mio 622 - - 0 None found
Treetops the Lodge · Gaylord 600 - - 0 None found
Eagle Landing Estates · Columbia 400 - - 0 None found
Fairview Area Schools · Fairview 348 - - 0 None found
Gull Lake Schools, Kellogg Elementary · Richland 268 - - 0 None found
Franklin-quincy Water Authorit · Hancock 260 - - 0 None found
Moran Township Schools · St. Ignance 102 - - 0 None found
Eagle Village, INC. · Hersey 84 - - 0 None found
Greenmark Equipment · Hastings 40 - - 0 None found
Prescott-hidden Creek Manor · Lansing 38 - - 0 None found
Park Township (hbpw Service Area) - - 0 None found
Spsm - - 0 None found

On a private well in Michigan?

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 Michigan drinking water: results for 319 systems." Data: U.S. EPA UCMR 5, final release August 2026. https://wellandtap.com/pfas/michigan/

Source: EPA UCMR 5 final occurrence data (August 2026); population from EPA SDWIS. Method.