Water Quality in Minnesota

965 water systems • 677 cities • EPA SDWIS Data

965
Water Systems
3,784
Total Violations
733
Health-Based Violations
4,670,079
Population Served

Overview

Minnesota has 965 active community water systems serving 4,670,079 people. These systems have accumulated 3,784 EPA Safe Drinking Water Act violations on record, of which 733 are health-based violations (meaning a contaminant exceeded safe levels).

Common contaminants found in violations: Stage 2 DBP, Chlorine Dioxide, Disinfection Byproducts, Total Organic Carbon, HAA5, Selenium, Barium, Chlorine, E. coli, Gross Alpha.

Cities with Most Violations in Minnesota

# City Violations Health-Based Water Systems Population
1 Climax 114 38 1 223
2 Ham Lake 80 3 4 1,336
3 Blomkest 73 0 3 291
4 Lancaster 69 38 2 511
5 Thief River Falls 63 40 2 8,751
6 Detroit Lakes 61 40 3 10,138
7 Bemidji 60 0 13 16,027
8 Winger 57 57 1 181
9 Gibbon 56 56 2 890
10 Mankato 53 3 8 43,913

Largest Cities in Minnesota

# City Population Violations Water Systems
1 Minneapolis 435,122 13 6
2 St. Paul 403,059 49 4
3 Rochester 124,843 26 9
4 Bloomington 91,300 4 1
5 Brooklyn Park 90,775 14 3
6 Duluth 87,944 2 2
7 Woodbury 82,643 2 1
8 Plymouth 81,326 1 2
9 Maple Grove 75,160 0 2
10 Blaine 72,220 0 2

All Cities in Minnesota

City Population Violations Health Violations Contaminants
Minneapolis 435,122 13 0
St. Paul 403,059 49 0
Rochester 124,843 26 0
Bloomington 91,300 4 0
Brooklyn Park 90,775 14 0
Duluth 87,944 2 1 E. coli
Woodbury 82,643 2 0
Plymouth 81,326 1 0
Maple Grove 75,160 0 0
Blaine 72,220 0 0
St. Cloud 71,526 14 0
Eagan 68,223 1 0
Lakeville 67,800 14 0
Coon Rapids 64,000 0 0
Eden Prairie 63,726 2 0
Burnsville 61,747 1 0
Minnetonka 54,474 0 0
Edina 53,861 7 0
St. Louis Park 50,526 6 0
Apple Valley 50,300 0 0
Shakopee 48,263 28 8 Selenium
Moorhead 44,583 0 0
Mankato 43,913 53 3 Chlorine, Chlorine Dioxide
Cottage Grove 39,762 4 0
White Bear Lake 37,333 1 0
Richfield 36,899 0 0
Roseville 36,254 0 0
Albertville 35,785 0 0
Inver Grove Heights 35,374 12 9 HAA5, Total Organic Carbon
Brooklyn Center 33,782 0 0
Winona 32,026 12 8 Total Organic Carbon
Chaska 30,709 6 0
Savage 30,285 4 4 Total Organic Carbon
Oakdale 28,819 4 0
Fridley 28,776 1 0
Farmington 26,686 0 0
Rosemount 26,500 2 0
Owatonna 26,430 0 0
Austin 26,273 23 0
Shoreview 26,000 4 0
Faribault 25,911 8 0
Prior Lake 25,282 0 0
Chanhassen 24,951 1 0
Champlin 24,007 0 0
Hastings 23,595 19 4 Chlorine, E. coli, Selenium
Northfield 23,275 6 0
Golden Valley 23,067 4 0
Crystal 22,937 0 0
New Brighton 22,902 0 0
Columbia Heights 22,278 3 0
Andover 21,455 0 0
Stillwater 21,148 29 0
Willmar 21,135 1 0
New Hope 20,963 0 0
South St. Paul 20,664 10 10 E. coli, HAA5, Total Organic Carbon
Sartell 20,300 0 0
Elk River 19,712 0 0
Hopkins 19,462 0 0
Lino Lakes 19,159 4 0
Otsego 19,000 9 6 HAA5, Total Organic Carbon
Albert Lea 18,694 4 0
Anoka 18,060 41 0
Ramsey 17,705 0 0
Buffalo 16,711 0 0
Red Wing 16,629 0 0
Monticello 16,337 11 2 Selenium
Hibbing 16,028 11 0
Bemidji 16,027 60 0
Alexandria 15,150 6 0
Brainerd 14,933 13 0
Hutchinson 14,650 0 0
Robbinsdale 14,646 0 0
Rogers 14,510 4 0
Lake Benton 14,449 1 0
North Mankato 14,448 1 0
Fergus Falls 14,362 37 34 Barium
Sauk Rapids 14,352 19 0
New Ulm 14,106 10 0
Worthington 14,052 0 0
Marshall 13,979 0 0
Cloquet 13,867 7 0
Lake Elmo 13,378 14 0
Waconia 13,277 3 0
Mounds View 13,250 0 0
North St. Paul 13,134 0 0
Vadnais Heights 13,025 4 0
Big Lake 12,413 0 0
Hugo 12,047 0 0
Forest Lake 12,040 6 0
St. Peter 11,847 1 1 E. coli
Grand Rapids 11,551 10 0
Victoria 10,641 4 2 Stage 2 DBP
Fairmont 10,328 2 1 Selenium
Detroit Lakes 10,138 61 40 Barium, Selenium
Arden Hills 10,000 3 0
Cambridge 9,862 0 0
Mound 9,447 2 0
Baxter 9,341 3 0
Waseca 9,241 0 0
East Grand Forks 9,206 0 0
Little Falls 9,069 0 0
Thief River Falls 8,751 63 40 E. coli
St. Joseph 8,700 2 0
Virginia 8,361 0 0
Waite Park 8,354 0 0
New Prague 8,279 0 0
Mahtomedi 8,134 0 0
Luverne 7,865 4 0
Belle Plaine 7,456 0 0
Isanti 7,386 0 0
Crookston 7,272 0 0
Hermantown 7,215 0 0
Spring Lake Park 7,200 4 4 Total Organic Carbon
Kasson 6,850 0 0
Stewartville 6,850 0 0
Litchfield 6,822 1 0
Jordan 6,810 4 0
Zimmerman 6,772 0 0
Carver 6,700 4 0
Delano 6,564 6 0
Byron 6,312 0 0
Jeffers 6,209 4 0
North Branch 6,190 0 0
Minnetrista 5,888 10 0
Circle Pines 5,725 0 0
Glencoe 5,720 0 0
International Falls 5,637 0 0
St. Paul Park 5,427 1 0
Morris 5,388 45 28 Barium
Princeton 5,346 6 0
Montevideo 5,337 0 0
Redwood Falls 5,254 0 0
St. Francis 5,200 0 0
Lindstrom 5,068 17 0
Watertown 5,050 5 0
Lake City 5,042 0 0
Becker 5,034 7 0
Lacrescent 5,029 0 0
Elko-New Market 5,003 8 4 HAA5, Total Organic Carbon
Chisholm 4,940 0 0
Dayton 4,930 0 0
Dilworth 4,918 8 0
Warren 4,846 0 0
Excelsior 4,800 0 0
Oak Park Heights 4,776 0 0
Windom 4,704 5 0
Sauk Centre 4,641 2 1 Barium
St. James 4,611 0 0
Wayzata 4,592 0 0
Park Rapids 4,498 4 0
Eveleth 4,335 7 1 Total Haloacetic Acids (HAA5)
Wadena 4,332 0 0
Pipestone 4,273 1 1 HAA5
Cannon Falls 4,237 0 0
Hamel 4,205 1 0
Cold Spring 4,201 0 0
Lesueur 4,170 4 0
Newport 4,000 0 0
Wyoming 3,990 1 0
Centerville 3,962 4 0
Lonsdale 3,913 0 0
Montrose 3,899 0 0
Shorewood 3,890 0 0
Norwood Young America 3,850 2 0
St. Charles 3,825 0 0
Mora 3,786 2 0
Chisago City 3,745 1 0
Long Prairie 3,744 0 0
Melrose 3,702 1 0
Two Harbors 3,698 6 0
Pine City 3,663 8 0
Sleepy Eye 3,599 0 0
Lakeland 3,500 2 0
Bayport 3,481 7 0
Benson 3,437 6 0
Annandale 3,430 0 0
Rush City 3,424 19 11 HAA5, Total Organic Carbon
Perham 3,421 0 0
Montgomery 3,379 0 0
Plainview 3,340 0 0
Breckenridge 3,340 1 0
Pine Island 3,324 1 0
Jackson 3,323 0 0
Aurora 3,323 4 0
Eagle Lake 3,268 0 0
Milaca 3,263 9 0
Ely 3,258 15 10 Total Haloacetic Acids (HAA5)
Blue Earth 3,174 2 0
Zumbrota 3,172 0 0
Proctor 3,099 3 0
Orono 3,062 1 0
Staples 3,030 0 0
Lexington 3,018 3 2 HAA5
Sandstone 3,012 1 0
Chatfield 3,005 0 0
Moose Lake 2,997 46 1 Disinfection Byproducts
Corcoran 2,964 0 0
Dodge Center 2,939 0 0
Warroad 2,927 26 0
Lake Bronson 2,920 4 0
Albany 2,909 7 1 Selenium
St. Bonifacius 2,894 16 0
Mountain Iron 2,880 4 0
Granite Falls 2,843 0 0
Caledonia 2,824 8 0
Cokato 2,792 0 0
Barnesville 2,784 2 0
Glenwood 2,765 3 0
Roseau 2,729 8 0
Foley 2,705 1 0
Osseo 2,650 6 0
Pelican Rapids 2,642 45 37 Barium
Spicer 2,596 5 1 TTHM
Hawley 2,592 4 0
Spring Valley 2,580 3 0
Lake Crystal 2,554 0 0
Le Center 2,544 24 0
Paynesville 2,530 0 0
Wabasha 2,521 0 0
Collegeville 2,500 1 1 E. coli
Crosby 2,444 3 0
Olivia 2,353 0 0
Wells 2,343 0 0
Madelia 2,319 1 0
Janesville 2,275 1 0
Gaylord 2,269 0 0
Arlington 2,230 1 0
Winsted 2,226 4 0
Maple Lake 2,215 1 0
Howard Lake 2,180 3 0
Maple Plain 2,174 0 0
Aitkin 2,165 3 0
Rice 2,161 0 0
Tracy 2,154 3 0
Oronoco 2,145 6 0
Clearwater 2,129 13 0
Waverly 2,100 0 0
Mountain Lake 2,073 4 0
Springfield 2,070 2 0
Eyota 2,043 0 0
Ortonville 2,021 7 0
Slayton 2,020 11 0
Hoyt Lakes 2,020 4 0
Coleraine 1,997 10 0
Blooming Prairie 1,987 0 0
Hinckley 1,964 16 16 HAA5, Total Organic Carbon
Lester Prairie 1,904 0 0
Mayer 1,900 4 0
Gilbert 1,871 1 0
Waterville 1,868 0 0
Rushford 1,860 2 0
Silver Bay 1,826 4 0
Kenyon 1,817 0 0
Avon 1,811 18 1 Chlorine Dioxide
Osakis 1,805 8 0
Braham 1,789 1 0
Canby 1,769 0 0
Mapleton 1,756 0 0
Spring Park 1,743 1 0
Long Lake 1,729 2 0
Ada 1,725 5 0
Cologne 1,700 0 0
Lakefield 1,694 4 0
Medford 1,626 2 1 HAA5
Stacy 1,593 14 8 HAA5, Total Organic Carbon
Dawson 1,540 2 0
Dundas 1,539 5 0
Lewiston 1,520 6 6 Total Organic Carbon
Madison 1,511 0 0
Dassel 1,503 4 0
Pierz 1,500 2 0
Richmond 1,485 2 0
Wheaton 1,465 4 0
Starbuck 1,440 4 0
St. Augusta 1,425 1 0
Grand Marais 1,404 6 0
Frazee 1,400 0 0
Winnebago 1,391 0 0
Glyndon 1,386 4 0
Fosston 1,385 0 0
Minneota 1,380 2 0
Babbitt 1,379 2 0
Appleton 1,376 8 0
Preston 1,372 11 0
Hayfield 1,363 4 0
Clara City 1,360 0 0
Menahga 1,347 0 0
Ham Lake 1,336 80 3 Total Organic Carbon
Winthrop 1,330 2 1 Stage 2 DBP
Red Lake Falls 1,328 0 0
Pequot Lakes 1,325 10 0
Fulda 1,318 0 0
Renville 1,301 0 0
Fairfax 1,295 6 0
Spring Grove 1,291 0 0
Bagley 1,288 0 0
New York Mills 1,287 0 0
Elbow Lake 1,285 0 0
Edgerton 1,281 0 0
New London 1,277 4 0
Royalton 1,266 3 0
Shafer 1,265 4 0
Cottonwood 1,212 1 0
Adrian 1,211 2 0
Mahnomen 1,210 0 0
New Richland 1,201 5 0
Goodhue 1,200 2 0
Mantorville 1,197 0 0
Grand Meadow 1,154 1 0
Carlton 1,146 0 0
Atwater 1,133 0 0
Hector 1,127 2 0
Tyler 1,122 2 0
Nicollet 1,117 2 0
Truman 1,115 1 0
Elgin 1,115 7 0
Wanamingo 1,113 0 0
Keewatin 1,068 0 0
Taylors Falls 1,067 0 0
Sherburn 1,058 1 0
Morristown 1,047 4 0
Harmony 1,042 0 0
Eden Valley 1,042 0 0
Walker 1,040 0 0
Bird Island 1,024 0 0
Parkers Prairie 1,023 1 0
Madison Lake 1,017 3 0
Baudette 1,002 27 0
Cohasset 1,000 0 0
Buhl 1,000 3 0
Houston 997 3 1 Total Organic Carbon
Biwabik 975 4 4 E. coli
Nashwauk 971 0 0
Leroy 959 0 0
Watkins 958 0 0
Deer River 942 0 0
Sebeka 939 3 0
Pine River 939 0 0
Mazeppa 937 9 0
Battle Lake 918 1 0
Kimball 911 0 0
Morgan 896 4 0
Gibbon 890 56 56 Barium
Henderson 886 4 0
Henning 882 12 5 Selenium
Hilltop 880 1 0
Tower 872 11 5 TTHM, Total Haloacetic Acids (HAA5)
Onamia 869 4 0
Birchwood 864 0 0
Hallock 850 3 0
Silver Lake 850 4 0
St. Clair 846 0 0
Isle 845 37 1 Disinfection Byproducts
Hancock 845 0 0
Clarkfield 841 6 0
Browerville 836 0 0
Lamberton 828 6 0
Blackduck 826 3 0
Walnut Grove 825 0 0
Bovey 821 0 0
Wabasso 815 10 0
Hampton 811 3 1 Gross Alpha
Kerkhoven 806 4 0
Deerwood 805 8 0
Dover 792 0 0
Fertile 789 3 0
Westbrook 785 0 0
Claremont 773 11 0
West Concord 773 1 0
Holdingford 770 2 0
Raymond 765 1 0
Rockville 765 0 0
Orem 750 4 0
Belgrade 745 0 0
Ellendale 737 22 12 HAA5
Trimont 734 0 0
Lake Park 729 0 0
Lanesboro 727 0 0
Brownton 722 0 0
Cleveland 719 0 0
Mabel 715 6 0
Karlstad 713 9 0
Twin Valley 707 0 0
Kasota 704 9 0
Hoffman 703 4 0
Buffalo Lake 703 9 0
Marble 699 0 0
Stockton 697 3 2 Total Organic Carbon
Clarks Grove 695 0 0
Ottertail 694 0 0
Cass Lake 691 0 0
Heron Lake 691 3 0
Hills 685 1 0
Freeport 685 0 0
Minnesota Lake 683 0 0
Brownsdale 682 0 0
Motley 680 0 0
Greenbush 680 9 0
Adams 672 0 0
Clear Lake 669 16 0
Rollingstone 664 1 1 Total Organic Carbon
Elmore 663 0 0
Clarissa 662 0 0
Alden 661 11 2 Disinfection Byproducts
Elysian 656 3 1 Total Organic Carbon
Graceville 653 1 0
Welcome 653 1 0
Hendricks 650 0 0
Randall 650 0 0
Brooten 646 1 0
Taconite 644 2 2 Gross Alpha
Balaton 639 1 0
Loretto 637 0 0
Grove City 635 1 0
Courtland 635 4 0
Hill City 633 2 0
Sabin 629 6 2 Barium
Oak Grove 623 1 0
Jasper 623 0 0
Barnum 621 14 0
Evansville 603 0 0
Scottsdale 600 1 0
Green Isle 599 0 0
Butterfield 586 0 0
Mcintosh 584 0 0
Good Thunder 583 2 0
Ironton 578 3 2 Chlorine
Cook 574 0 0
Audubon 570 3 0
Stephen 568 0 0
Glenville 566 12 2 HAA5
Browns Valley 566 0 0
Ranier 565 0 0
Kandiyohi 560 0 0
Ivanhoe 559 0 0
Bertha 557 3 0
Hokah 555 6 0
Altura 553 0 0
Halstad 550 0 0
Minnetonka Beach 547 0 0
Littlefork 542 9 0
Eagle Bend 542 2 0
Geneva 538 0 0
Amboy 535 8 3 Total Organic Carbon
Argyle 533 1 0
Hamburg 530 0 0
Willernie 525 6 0
Pillager 523 3 0
Lyle 521 17 4 HAA5
Clinton 520 1 0
Laprairie 520 2 0
Maplewood 515 8 0
Cosmos 513 4 4 Barium
Lancaster 511 69 38 Barium
Brewster 506 4 0
Verndale 506 3 3 Selenium
Chicago 505 1 0
Lafayette 504 7 7 TTHM
Rothsay 503 1 0
Brandon 501 1 0
Floodwood 501 0 0
East Bethel 500 0 0
Ulen 500 1 0
Prinsburg 497 0 0
Franklin 496 0 0
Carlos 492 2 0
Pennock 492 1 0
Kiester 491 0 0
Sherman 490 0 0
Sacred Heart 485 0 0
Stewart 482 8 6 Barium, TTHM
Upsala 482 1 0
Racine 482 2 0
Ashby 472 1 0
Kellogg 469 0 0
Ogilvie 467 11 0
Minnesota City 464 10 0
Ellsworth 462 17 9 Selenium
North Oaks 459 0 0
Clearbrook 458 3 0
Skokie 458 0 0
Garfield 457 5 0
New Auburn 456 0 0
Vermillion 451 0 0
Harris 450 0 0
Scandia 448 21 1 Gross Alpha
Lynd 448 0 0
Danube 446 7 6 Total Organic Carbon
Wykoff 444 3 0
Newfolden 442 11 0
Remer 434 8 0
Lowry 433 10 1 Barium
Akeley 426 2 0
Badger 425 12 0
Wood Lake 423 1 0
New Germany 422 0 0
Milan 418 2 0
Nevis 415 12 0
Oklee 411 1 0
Willow River 410 1 0
Fountain 407 0 0
Cedar 406 0 0
Sturgeon Lake 406 0 0
Waubun 404 0 0
Comfrey 402 0 0
Fisher 401 7 0
Rose Creek 400 1 0
Las Vegas 400 6 0
Morton 400 3 0
Chokio 400 0 0
Wrenshall 399 0 0
Bigfork 397 2 0
Mcgregor 394 0 0
Hanska 393 2 0
Maynard 388 0 0
Dexter 388 4 0
Herman 386 3 0
Emmons 384 0 0
Erskine 384 3 0
Underwood 380 0 0
Alvarado 377 0 0
Round Lake 376 0 0
Granada 375 6 2 Total Organic Carbon
Barrett 374 0 0
Ghent 370 0 0
Ceylon 369 0 0
Askov 364 9 2 TTHM
Bricelyn 359 0 0
Vergas 358 0 0
Randolph 355 31 1 Chlorine
Darwin 350 1 0
Wilmont 344 0 0
St. Martin 343 11 0
Rushmore 342 1 0
Foreston 340 1 0
Sanborn 339 3 0
Russell 338 2 0
Plummer 336 25 0
Calumet 332 0 0
Grey Eagle 330 0 0
Swanville 329 4 0
Deer Creek 329 8 0
Vernon Center 323 1 0
Hartland 321 12 1 Stage 2 DBP
New Munich 320 2 0
Plato 319 0 0
Vesta 319 0 0
Cyrus 318 3 0
Canton 316 0 0
Finlayson 315 0 0
Greenfield 313 3 3 Total Organic Carbon
Buckman 309 1 0
Hackensack 306 0 0
Murdock 306 2 0
Center City 305 3 0
Belview 300 0 0
Middle River 299 4 0
Nerstrand 299 2 0
Beaver Creek 297 1 0
Hollandale 294 10 0
Utica 293 3 1 Selenium
Blomkest 291 73 0
Hendrum 285 16 0
Bowlus 280 14 4 Chlorine
Gonvick 276 0 0
Eitzen 276 0 0
Hanley Falls 275 1 0
Chandler 270 10 0
Echo 269 2 0
Backus 267 0 0
Little Canada 266 2 0
Rushford Village 265 0 0
Kensington 264 5 0
Kelliher 259 0 0
Freeborn 259 6 4 Barium
St. Hilaire 257 2 0
Ostrander 256 2 0
Hewitt 255 2 0
Hayward 254 2 2 HAA5
South Haven 253 14 0
Milroy 252 0 0
Cromwell 250 0 0
Orr 249 0 0
Pemberton 247 4 0
Lake Wilson 247 0 0
Oslo 242 2 0
Pease 242 4 0
Lismore 237 1 0
Lake Lillian 236 44 38 Barium
Bigelow 235 2 1 Disinfection Byproducts
Callaway 234 0 0
Currie 226 1 0
Gary 226 5 5 Chlorine
Lewisville 225 0 0
Climax 223 114 38 Barium
Dennison 220 6 2 HAA5
Ruthton 220 0 0
Beardsley 216 1 0
Donnelly 216 2 0
Waldorf 216 0 0
Storden 215 0 0
Magnolia 214 0 0
Peterson 213 0 0
Northrop 211 0 0
Lucan 210 0 0
Leota 209 0 0
Dalton 209 3 1 Barium
Hitterdal 208 0 0
Ogema 206 5 0
Easton 199 2 0
Hardwick 198 3 0
Big Falls 192 4 0
Frost 191 2 0
Webster 190 2 0
Okabena 188 3 0
Holland 187 1 0
Kennedy 181 7 0
Winger 181 57 57 Barium
Zumbro Falls 181 8 0
Lansing Township 180 0 0
Steen 180 3 0
Porter 180 1 0
Grygla 179 0 0
Felton 178 11 0
Watson 175 5 0
Boyd 175 4 0
Shelly 174 0 0
Winton 173 0 0
Delavan 171 0 0
Millville 171 0 0
Bellechester 169 0 0
Kettle River 168 0 0
Bellingham 168 5 0
Wendell 167 2 0
Dunnell 167 2 1 Chlorine
Palisade 166 2 1 Chlorine Dioxide
Warba 162 3 0
Iona 162 2 0
Campbell 159 2 0
Waltham 157 9 0
Clements 157 4 0
East Gull Lake 156 2 0
Northome 156 0 0
Kinney 154 0 0
Elkton 149 1 0
Elba 146 0 0
Laporte 140 2 0
Conger 137 0 0
Marietta 135 1 0
Taunton 135 0 0
Garvin 135 1 0
Mapleview 135 5 0
Meadowlands 135 11 2 E. coli
Twin Lakes 134 5 5 HAA5
Kilkenny 134 2 0
Brook Park 133 22 8 Total Haloacetic Acids (HAA5), Total Organic Carbon
Riverton 132 6 1 Stage 2 DBP
Beaver Bay 130 13 0
Ormsby 129 1 0
Bingham Lake 128 0 0
Irvine 125 6 0
Wolverton 124 10 0
Columbus 123 0 0
Marine On St. Croix 123 7 0
Perley 113 2 0
Alpha 112 14 3 Chlorine
Avoca 111 2 0
Puposky 110 26 1 Stage 2 DBP
Warsaw 110 36 16 HAA5, Total Organic Carbon
Mckinley 110 1 0
Degraff 110 0 0
Hammond 110 4 0
Odin 109 3 0
Woodstock 108 3 0
Bloomfield Hills 100 13 0
Goodridge 100 3 0
Fort Worth 100 13 3 Chlorine

Data Sources

Drinking water data from the EPA Safe Drinking Water Information System (SDWIS). Only active community water systems (CWS) serving 100+ people are included.

Verify at epa.gov