South Dakota Water Quality Rankings
141 cities ranked · Data from EPA SDWIS
South Dakota water quality overview
South Dakota's drinking water quality is good overall, with a state average score of 81.3 out of 100 — 7.1 points above the national average of 74.2. The median city score is 86, reflecting how water quality is distributed across the state's 141 ranked cities. 84% of South Dakota cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 5 cities received a failing grade. PFAS "forever chemicals" were detected in 42 of 141 cities (30%). Of those, 1 city exceeds the 2024 EPA maximum contaminant levels — a health concern requiring action. 117 cities have recorded health-based violations with the EPA — meaning contaminant levels exceeded safe limits or required testing was missed. Use the table below to find your city's specific record.
How South Dakota cities scored
Score distribution by range
State vs national average
Water quality across South Dakota
Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.
Top & bottom cities in South Dakota
Best 10 cities
All 141 cities in South Dakota
| # | City | Grade | Score | Score | Population | Violations | Issues |
|---|---|---|---|---|---|---|---|
| 1 | Winner | A+ | 95.8 | 5K | 58 | Health Unresolved | |
| 2 | Madison | A+ | 95.5 | 6K | 35 | Health Unresolved | |
| 3 | Canton | A+ | 95.2 | 3K | 32 | Unresolved | |
| 4 | Elk Point | A | 94.5 | 2K | 42 | Health Unresolved | |
| 5 | Crooks | A | 94.3 | 1K | 49 | Unresolved | |
| 6 | Lake Norden | A | 94.3 | 554 | 7 | Health Unresolved | |
| 7 | Hartford | A | 94 | 3K | 14 | Health Unresolved | |
| 8 | Lennox | A | 93.9 | 3K | 9 | Health Unresolved | |
| 9 | Tea | A | 93.7 | 7K | 11 | Health Unresolved | |
| 10 | Winner | A | 93.6 | 8K | 71 | Health Unresolved | |
| 11 | Dell Rapids | A | 93.5 | 17K | 13 | Health Unresolved | |
| 12 | Colman | A | 93.5 | 634 | 54 | Health Unresolved | |
| 13 | Tyndall | A | 93.3 | 1K | 5 | Health Unresolved | |
| 14 | Harrisburg | A | 93.2 | 10K | 8 | Unresolved | |
| 15 | Groton | A | 92.8 | 1K | 7 | Unresolved | |
| 16 | Aurora | A | 92.8 | 1K | 13 | Health Unresolved | |
| 17 | Vermillion | A | 92.5 | 12K | 3 | Unresolved | |
| 18 | Sisseton | A | 92.5 | 2K | 6 | Unresolved | |
| 19 | Watertown | A | 92.3 | 4K | 5 | Health Unresolved | |
| 20 | De Smet | A | 92.3 | 1K | 53 | Health Unresolved | |
| 21 | Bridgewater | A | 92.3 | 511 | 69 | Unresolved | |
| 22 | Aberdeen | A | 92.1 | 863 | 20 | Health Unresolved | |
| 23 | Kadoka | A | 92 | 543 | 57 | Health Unresolved | |
| 24 | Philip | A | 91.8 | 2K | 35 | Health Unresolved | |
| 25 | Tripp | A | 91.8 | 575 | 93 | Health Unresolved | |
| 26 | Baltic | A | 91.7 | 1K | 33 | Health Unresolved | |
| 27 | Colton | A | 91.7 | 738 | 48 | Health Unresolved | |
| 28 | Burke | A | 91.6 | 575 | 3 | Unresolved | |
| 29 | Gregory | A | 91.4 | 1K | 35 | Health Unresolved | |
| 30 | Lemmon | A | 91.4 | 1K | 32 | Health Unresolved | |
| 31 | Ellsworth Afb | A | 91.2 | 9K | 7 | Health Unresolved | |
| 32 | Plankinton | A | 91.2 | 782 | 24 | Health Unresolved | |
| 33 | Gettysburg | A | 91.1 | 1K | 10 | Unresolved | |
| 34 | Watertown | A | 91 | 27K | 10 | Health Unresolved | |
| 35 | North Sioux City | A | 91 | 3K | 35 | Unresolved | |
| 36 | Custer | A | 90.8 | 2K | 40 | Unresolved | |
| 37 | Armour | A | 90.7 | 698 | 6 | Health Unresolved | |
| 38 | Salem | A | 90.5 | 1K | 35 | Health Unresolved | |
| 39 | Volga | A | 90.4 | 2K | 8 | Unresolved | |
| 40 | Webster | A | 90.2 | 2K | 7 | Health Unresolved | |
| 41 | Dakota Dunes | A- | 89.9 | 4K | 3 | ||
| 42 | Murdo | A- | 89.8 | 9K | 14 | Health Unresolved | |
| 43 | Valley Springs | A- | 89.6 | 925 | 13 | Health Unresolved | |
| 44 | Canistota | A- | 89.3 | 642 | 14 | Health Unresolved | |
| 45 | Mclaughlin | A- | 89.2 | 569 | 5 | Unresolved | |
| 46 | Freeman | A- | 89.1 | 1K | 14 | Health Unresolved | |
| 47 | Onida | A- | 88.7 | 658 | 66 | Health Unresolved | |
| 48 | Oral | A- | 88.6 | 1K | 64 | Health Unresolved | |
| 49 | Humboldt | A- | 88.6 | 579 | 19 | Health Unresolved | |
| 50 | Mitchell | A- | 88.5 | 19K | 41 | Health Unresolved | |
| 51 | Highmore | A- | 88.3 | 682 | 75 | Health Unresolved | |
| 52 | Menno | A- | 88.3 | 614 | 8 | Unresolved | |
| 53 | Fort Meade | A- | 88 | 800 | 67 | Health Unresolved | |
| 54 | Wall | A- | 87.7 | 783 | 92 | Health Unresolved | |
| 55 | Springfield | A- | 87.6 | 2K | 25 | Health Unresolved | |
| 56 | White River | A- | 87.6 | 533 | 27 | Health Unresolved | |
| 57 | Ipswich | A- | 87.5 | 1K | 18 | Health Unresolved | |
| 58 | Clark | A- | 87.4 | 4K | 85 | Health Unresolved | |
| 59 | Redfield | A- | 87.4 | 2K | 15 | Health Unresolved | |
| 60 | Elkton | A- | 87.4 | 874 | 62 | Health Unresolved | |
| 61 | Pierre | A- | 87.3 | 27K | 48 | Health Unresolved | |
| 62 | Newell | A- | 87.3 | 2K | 59 | Health Unresolved | |
| 63 | Brandon | A- | 87.2 | 11K | 20 | Unresolved | |
| 64 | Castlewood | A- | 86.6 | 698 | 69 | Health Unresolved | |
| 65 | Tabor | A- | 86.5 | 14K | 19 | Health Unresolved | |
| 66 | Emery | A- | 86.3 | 3K | 5 | Unresolved | |
| 67 | Eagle Butte | A- | 86.2 | 2K | 67 | Health Unresolved | |
| 68 | Hill City | A- | 86.2 | 1K | 104 | Health Unresolved | |
| 69 | Toronto | A- | 86 | 6K | 5 | Unresolved | |
| 70 | Parker | A- | 86 | 5K | 48 | Health Unresolved | |
| 71 | Estelline | A- | 86 | 749 | 86 | Health Unresolved | |
| 72 | Tabor | A- | 85.8 | 14K | 15 | Health Unresolved | |
| 73 | Chamberlain | A- | 85.7 | 3K | 56 | Health Unresolved | |
| 74 | Bison | A- | 85.7 | 780 | 48 | Health Unresolved | |
| 75 | Alcester | A- | 85.5 | 820 | 12 | Unresolved | |
| 76 | Centerville | A- | 85.3 | 918 | 74 | Health Unresolved | |
| 77 | Marion | A- | 85.2 | 894 | 9 | Unresolved | |
| 78 | Clark | B+ | 84.5 | 3K | 101 | Health Unresolved | |
| 79 | Corsica | B+ | 84.5 | 561 | 18 | Health Unresolved | |
| 80 | Fort Pierre | B+ | 84.4 | 2K | 29 | Health Unresolved | |
| 81 | Milbank | B+ | 84.2 | 9K | 8 | Unresolved | |
| 82 | Whitewood | B+ | 84.1 | 1K | 164 | Unresolved | |
| 83 | Emery | B+ | 83.8 | 3K | 16 | Health Unresolved | |
| 84 | Mission | B+ | 83.8 | 2K | 14 | Health Unresolved | |
| 85 | Garretson | B+ | 83.8 | 1K | 67 | Health Unresolved | |
| 86 | Howard | B+ | 83.6 | 848 | 14 | Unresolved | |
| 87 | Wessington Springs | B+ | 83.1 | 895 | 8 | Health Unresolved | |
| 88 | Beresford | B+ | 82.8 | 6K | 89 | Health Unresolved | |
| 89 | White | B+ | 82.8 | 592 | 33 | Health Unresolved | |
| 90 | Toronto | B+ | 82.5 | 7K | 10 | Unresolved | |
| 91 | Egan | B+ | 82.5 | 7K | 114 | Health Unresolved | |
| 92 | Parkston | B+ | 82.4 | 2K | 21 | Health Unresolved | |
| 93 | Wakonda | B+ | 81.8 | 7K | 172 | Health Unresolved | |
| 94 | Mobridge | B+ | 81.5 | 3K | 83 | Health Unresolved | |
| 95 | Lower Brule | B+ | 81 | 2K | 101 | Health Unresolved | |
| 96 | Viborg | B+ | 80.7 | 814 | 20 | Health Unresolved | |
| 97 | Stephan | B+ | 80 | 516 | 27 | Health Unresolved | |
| 98 | Faulkton | B | 79.6 | 1K | 177 | Health Unresolved | |
| 99 | Eureka | B | 79.4 | 813 | 11 | Health Unresolved | |
| 100 | Selby | B | 79.4 | 645 | 32 | Health Unresolved | |
| 101 | Kimball | B | 79.3 | 3K | 53 | Health Unresolved | |
| 102 | Woonsocket | B | 79.3 | 618 | 62 | Health Unresolved | |
| 103 | Platte | B | 79.2 | 1K | 12 | Health Unresolved | |
| 104 | Belle Fourche | B | 79.1 | 6K | 228 | Health Unresolved | |
| 105 | Lake Andes | B | 78.8 | 7K | 126 | Health Unresolved | |
| 106 | Lake Preston | B | 78.8 | 589 | 17 | Health Unresolved | |
| 107 | Hermosa | B | 77.5 | 663 | 70 | Health Unresolved | |
| 108 | Alexandria | B | 76.5 | 649 | 8 | Health Unresolved | |
| 109 | Scotland | B | 76.1 | 935 | 159 | Health Unresolved | |
| 110 | Beresford | B | 76 | 8K | 213 | Health Unresolved | |
| 111 | Agency Village | B | 76 | 2K | 166 | Health Unresolved | |
| 112 | Lead | B | 75.6 | 4K | 261 | Health Unresolved | |
| 113 | Rapid City | B | 75 | 808 | 289 | Health Unresolved | |
| 114 | Eagle Butte | B- | 74.5 | 6K | 92 | Health Unresolved | |
| 115 | Yankton | B- | 72.8 | 16K | 123 | Health Unresolved | |
| 116 | Box Elder | B- | 72.7 | 14K | 145 | Health Unresolved | |
| 117 | Hot Springs | B- | 72.7 | 5K | 241 | Health Unresolved | |
| 118 | Gayville | B- | 70.5 | 647 | 56 | Health Unresolved | |
| 119 | Batesland | B- | 70.4 | 3K | 347 | Health Unresolved | |
| 120 | Miller | C+ | 69 | 14K | 275 | Health Unresolved | |
| 121 | New Underwood | C+ | 68.7 | 1K | 163 | Health Unresolved | |
| 122 | Fort Thompson | C | 64.8 | 2K | 351 | Health Unresolved | |
| 123 | Arlington | C | 64.7 | 13K | 305 | Health Unresolved | |
| 124 | Flandreau | C | 63.9 | 3K | 147 | Health Unresolved | |
| 125 | Martin | C | 62.6 | 2K | 401 | Health Unresolved | |
| 126 | Britton | C | 62 | 7K | 381 | Health Unresolved | |
| 127 | Deadwood | C | 61 | 1K | 212 | Health Unresolved | |
| 128 | Huron | C | 60.2 | 14K | 530 | Health Unresolved | |
| 129 | Rapid City | C- | 58.4 | 841 | 392 | Health Unresolved | |
| 130 | Sioux Falls | C- | 58.2 | 228K | 181 | Health Unresolved | |
| 131 | Black Hawk | D+ | 51 | 11K | 2565 | Health Unresolved | |
| 132 | Sturgis | D+ | 50.5 | 8K | 828 | Health Unresolved | |
| 133 | Edgemont | D+ | 50 | 750 | 424 | Health Unresolved | |
| 134 | Wagner | D | 49 | 3K | 126 | Health Unresolved | |
| 135 | Spearfish | D | 47.8 | 14K | 1320 | Health Unresolved | |
| 136 | Brookings | D | 46.2 | 24K | 798 | Health Unresolved | |
| 137 | Pine Ridge | F | 43.2 | 25K | 726 | Health Unresolved | |
| 138 | Rosebud | F | 42.2 | 14K | 252 | Health Unresolved | |
| 139 | Aberdeen | F | 41.8 | 54K | 2732 | Health Unresolved | |
| 140 | Piedmont | F | 39.5 | 5K | 710 | Health Unresolved | |
| 141 | Rapid City | F | 38.7 | 96K | 3413 | Health PFAS Unresolved |