WaterVerge

South Dakota Water Quality Rankings

141 cities ranked · Data from EPA SDWIS

81.3
State avg score
141
Cities ranked
84%
A or B grade
8%
D or F grade
117
Health violations
42
PFAS detected

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

55%
30%
A
77
55%
Excellent
B
42
30%
Good
C
11
8%
Fair
D
6
4%
Poor
F
5
4%
Failing

Score distribution by range

57 29 0
2
6
5
9
22
57
40
0–9
10–19
20–29
30–39
40–49
50–59
60–69
70–79
80–89
90–100

State vs national average

B+
South Dakota
81.3/100
B-
National avg
74.2/100
▲ 7.1 pts above 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.

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