WaterVerge

Kansas Water Quality Rankings

323 cities ranked · Data from EPA SDWIS

75.8
State avg score
323
Cities ranked
75%
A or B grade
11%
D or F grade
270
Health violations
77
PFAS detected

Kansas water quality overview

Kansas's drinking water quality is good overall, with a state average score of 75.8 out of 100 — 1.6 points above the national average of 74.2. The median city score is 80.6, reflecting how water quality is distributed across the state's 323 ranked cities. 75% of Kansas cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 10 cities received a failing grade. PFAS "forever chemicals" were detected in 77 of 323 cities (24%). Of those, 5 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 2 cities have lead levels exceeding the EPA action level of 15 ppb, typically a sign of aging lead service lines or lead solder in older plumbing. Residents in these areas should use an NSF 53-certified filter. 270 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 Kansas cities scored

27%
48%
14%
8%
A
86
27%
Excellent
B
156
48%
Good
C
44
14%
Fair
D
27
8%
Poor
F
10
3%
Failing

Score distribution by range

154 77 0
1
4
19
21
36
74
154
14
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
Kansas
75.8/100
B-
National avg
74.2/100
▲ 1.6 pts above national average

Water quality across Kansas

Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.

All 323 cities in Kansas

# City Grade Score Score Population Violations Issues
1 Clyde
A+
97
687 1
2 Fort Leavenworth
A+
95
13K 12 Health Unresolved
3 Sharon Springs
A
94.8
744 38 Health Unresolved
4 Ulysses
A
94.3
6K 15 Health Unresolved
5 Wilson
A
94.2
836 6 Health
6 Maize
A
93.8
6K 0 Zero violations
7 Effingham
A
93
500 17 Unresolved
8 Hoxie
A
92.2
1K 40 Health Unresolved
9 Grandview Plaza
A
91.4
2K 7 Health Unresolved
10 Berryton
A
90.8
5K 10 Health Unresolved
11 Hugoton
A
90.7
4K 15 Unresolved
12 Talmage
A
90.7
879 7 Unresolved
13 Strong City
A
90.3
785 17 Health Unresolved
14 Haysville
A
90
11K 15 Health Unresolved
15 Montezuma
A-
89.6
951 2 Health Unresolved
16 Humboldt
A-
89.5
2K 9 Health Unresolved
17 Greensburg
A-
89.5
714 18 Health Unresolved
18 Ogden
A-
89.4
2K 4 Unresolved
19 Colby
A-
89.2
6K 33 Unresolved
20 Onaga
A-
89.2
2K 28 Health Unresolved
21 Paola
A-
89.1
6K 38 Health Unresolved
22 Quinter
A-
89
958 9 Health Unresolved
23 Hillsdale
A-
88.9
10K 48 Health Unresolved
24 Cottonwood Falls
A-
88.9
822 10 Health Unresolved
25 Downs
A-
88.7
804 19 Health Unresolved
26 Buhler
A-
88.6
1K 23 Health Unresolved
27 Phillipsburg
A-
88.3
3K 28 Health Unresolved
28 Baldwin
A-
88.2
1K 5 Health Unresolved
29 Nortonville
A-
88.2
599 7 Health Unresolved
30 Kingman
A-
88
3K 27 Health Unresolved
31 Sterling
A-
88
2K 17 Health Unresolved
32 Sabetha
A-
87.7
3K 21 Health Unresolved
33 Plains
A-
87.6
1K 11 Health Unresolved
34 Waverly
A-
87.5
1K 25 Health Unresolved
35 Beattie
A-
87.4
1K 54 Health Unresolved
36 Burlington
A-
87.1
3K 50 Health Unresolved
37 Smith Center
A-
87
2K 9 Health Unresolved
38 White City
A-
87
581 21 Health Unresolved
39 Goessel
A-
87
558 10 Health Unresolved
40 Piqua
A-
86.9
2K 16 Health Unresolved
41 Hill City
A-
86.9
1K 37 Health Unresolved
42 Kinsley
A-
86.8
1K 8 Health
43 Johnson City
A-
86.8
1K 8 Unresolved
44 Inman
A-
86.7
1K 39 Health Unresolved
45 Lincoln
A-
86.7
1K 7 Health Unresolved
46 Smolan
A-
86.7
936 18 Unresolved
47 Lebo
A-
86.7
883 9 Health Unresolved
48 Hoyt
A-
86.6
3K 34 Health Unresolved
49 Silver Lake
A-
86.5
1K 9 Health Unresolved
50 Bern
A-
86.5
513 3 Unresolved
51 Ellinwood
A-
86.4
2K 4 Health Unresolved
52 Altamont
A-
86.4
1K 7 Unresolved
53 Caldwell
A-
86.4
1K 2 Unresolved
54 Stockton
A-
86.2
1K 18 Health Unresolved
55 Westmoreland
A-
86.2
716 5 Unresolved
56 Kansas City
A-
86.1
635K 19 Health Unresolved
57 New Strawn
A-
86.1
2K 29 Health Unresolved
58 Riley
A-
86.1
977 6 Unresolved
59 Gardner
A-
86
30K 40 Health Unresolved
60 Courtland
A-
86
836 17 Health Unresolved
61 Osage City
A-
85.9
4K 26 Health Unresolved
62 Eudora
A-
85.8
6K 4 Unresolved
63 Lacrosse
A-
85.8
1K 3 Unresolved
64 Gas City
A-
85.8
501 8 Health Unresolved
65 Dodge City
A-
85.7
27K 50 Health Unresolved
66 Benton
A-
85.7
7K 23 Health Unresolved
67 North Newton
A-
85.7
2K 15 Unresolved
68 Wetmore
A-
85.6
796 8 Unresolved
69 Crestline
A-
85.6
520 12 Unresolved
70 Marysville
A-
85.5
3K 32 Unresolved
71 St Francis
A-
85.5
1K 11 Health Unresolved
72 Fort Riley
A-
85.4
36K 20 Health PFAS Unresolved
73 Holcomb
A-
85.4
5K 40 Health Unresolved
74 Leoti
A-
85.4
1K 32 Health Unresolved
75 St Marys
A-
85.3
3K 15 Health Unresolved
76 Colony
A-
85.3
2K 24 Health Unresolved
77 Cheney
A-
85.3
2K 16 Health Unresolved
78 Syracuse
A-
85.3
2K 7 Health Unresolved
79 Olpe
A-
85.3
992 15 Health Unresolved
80 Blue Rapids
A-
85.3
921 15 Health Unresolved
81 Spearville
A-
85.3
796 13 Health Unresolved
82 Troy
A-
85.2
954 10 Health Unresolved
83 Carlton
A-
85.1
2K 14 Health Unresolved
84 Jetmore
A-
85.1
759 10 Health Unresolved
85 Holton
A-
85
8K 37 Health Unresolved
86 Tribune
A-
85
784 12 Health Unresolved
87 Mclouth
B+
84.9
858 11 Health Unresolved
88 Lansing
B+
84.8
7K 4 Health Unresolved
89 Abilene
B+
84.8
7K 49 Health Unresolved
90 Sedgwick
B+
84.8
2K 8 Unresolved
91 Elwood
B+
84.8
1K 5 Unresolved
92 Frankfort
B+
84.7
717 9 Health Unresolved
93 Moundridge
B+
84.5
2K 6 Unresolved
94 Victoria
B+
84.5
1K 8 Health Unresolved
95 Meade
B+
84.4
2K 8 Health Unresolved
96 Oxford
B+
84.4
1K 8 Unresolved
97 Westphalia
B+
84.4
1K 9 Health Unresolved
98 Fowler
B+
84.3
532 10 Unresolved
99 Garden Plain
B+
84.2
941 17 Unresolved
100 Attica
B+
84.2
506 29 Health Unresolved
101 Havana
B+
84.1
2K 9 Health Unresolved
102 Udall
B+
84.1
658 13 Unresolved
103 Baldwin City
B+
84
8K 26 Health Unresolved
104 Louisburg
B+
84
5K 51 Health Unresolved
105 Wichita
B+
83.9
402K 13 Health Unresolved
106 Lakin
B+
83.9
2K 39 Health Unresolved
107 Mound Valley
B+
83.9
888 11 Health Unresolved
108 Neosho Rapids
B+
83.7
980 9 Unresolved
109 Hoisington
B+
83.6
3K 59 Unresolved
110 Atwood
B+
83.6
1K 32 Health Unresolved
111 Burden
B+
83.5
3K 34 Health Unresolved
112 Cimarron
B+
83.4
2K 8 Unresolved
113 Wellsville
B+
83.3
2K 15 Health Unresolved
114 Hesston
B+
83.2
3K 4 Health Unresolved
115 Pomona
B+
83.2
890 3 Health Unresolved
116 Spring Hill
B+
83.1
6K 8 Health Unresolved
117 Galena
B+
83.1
3K 14 Unresolved
118 Dwight
B+
83
2K 24 Health Unresolved
119 Sublette
B+
83
1K 15 Unresolved
120 Wakeeney
B+
82.9
3K 13 Unresolved
121 Newton
B+
82.8
18K 11 Health Unresolved
122 Council Grove
B+
82.8
2K 46 Health Unresolved
123 Cherokee
B+
82.8
591 23 Health Unresolved
124 Rossville
B+
82.7
1K 12 Unresolved
125 South Hutchinson
B+
82.6
2K 3 Unresolved
126 Edgerton
B+
82.6
2K 6 Unresolved
127 Douglass
B+
82.3
2K 14 Health Unresolved
128 Fort Scott
B+
82.2
15K 26 Health Unresolved
129 Bel Aire
B+
82.2
8K 8 Health Unresolved
130 Winchester
B+
82.2
4K 16 Health Unresolved
131 Lancaster
B+
82.2
4K 32 Health Unresolved
132 Solomon
B+
82.1
993 22 Health Unresolved
133 Galva
B+
82.1
870 17 Health Unresolved
134 Weir
B+
82.1
566 16 Health Unresolved
135 Scammon
B+
81.9
2K 10 Health Unresolved
136 Enterprise
B+
81.9
714 5 Unresolved
137 Goodland
B+
81.8
4K 38 Health Unresolved
138 Scott City
B+
81.8
4K 50 Health Unresolved
139 Meriden
B+
81.8
2K 36 Health Unresolved
140 Mcpherson
B+
81.7
15K 22 Unresolved
141 Williamsburg
B+
81.7
3K 26 Health Unresolved
142 Ness City
B+
81.6
1K 7 Health Unresolved
143 St John
B+
81.6
1K 24 Health Unresolved
144 Haven
B+
81.6
1K 11 Health Unresolved
145 Tecumseh
B+
81.5
6K 14 Health Unresolved
146 Maple Hill
B+
81.5
1K 27 Health Unresolved
147 Coldwater
B+
81.5
845 33 Health Unresolved
148 Ashland
B+
81.5
770 12 Unresolved
149 Mccune
B+
81.4
852 13 Unresolved
150 Rantoul
B+
81.3
3K 42 Health Unresolved
151 Valley Center
B+
81.2
9K 31 Unresolved
152 Towanda
B+
81.2
1K 16 Health Unresolved
153 Lecompton
B+
81.2
952 15 Unresolved
154 Cherryvale
B+
81.1
3K 47 Health Unresolved
155 Marquette
B+
81
596 57 Health Unresolved
156 Marion
B+
80.9
2K 76 Health Unresolved
157 Oskaloosa
B+
80.9
2K 25 Health Unresolved
158 Fairview
B+
80.9
709 20 Health Unresolved
159 Mount Hope
B+
80.8
783 7 Unresolved
160 Vassar
B+
80.7
900 70 Health Unresolved
161 Kechi
B+
80.6
4K 8 Unresolved
162 Colwich
B+
80.6
1K 6 Unresolved
163 Belvue
B+
80.6
1K 62 Health Unresolved
164 Hiawatha
B+
80.5
3K 52 Health Unresolved
165 Sycamore
B+
80.5
745 19 Health Unresolved
166 Alma
B+
80.4
799 35 Health Unresolved
167 Stark
B+
80.2
1K 29 Health Unresolved
168 Little River
B+
80.1
1K 18 Unresolved
169 Riverton
B
79.6
3K 30 Unresolved
170 Olathe
B
79.5
143K 19 Health Unresolved
171 Bentley
B
79.5
569 13 Unresolved
172 Augusta
B
79.3
11K 84 Health Unresolved
173 Bonner Springs
B
79.3
11K 27 Health Unresolved
174 Concordia
B
79.3
5K 19 Health Unresolved
175 Protection
B
79.3
580 27 Health Unresolved
176 Pittsburg
B
79.2
24K 43 Health Unresolved
177 Minneapolis
B
79
2K 16 Unresolved
178 Susank
B
78.9
1K 15 Health Unresolved
179 Deerfield
B
78.9
692 9 Health Unresolved
180 Seneca
B
78.8
5K 10 Health Unresolved
181 Washington
B
78.8
2K 20 Health Unresolved
182 Wakefield
B
78.6
846 19 Health Unresolved
183 Haviland
B
78.6
651 63 Health Unresolved
184 Lindsborg
B
78.5
4K 30 Health Unresolved
185 Burlingame
B
78.2
3K 33 Health Unresolved
186 Wathena
B
78.2
3K 33 Health Unresolved
187 Osborne
B
78.2
1K 24 Health Unresolved
188 Mankato
B
77.8
848 8 Health Unresolved
189 Bucklin
B
77.8
771 18 Health Unresolved
190 Assaria
B
77.7
725 9 Unresolved
191 Eskridge
B
77.3
598 23 Health Unresolved
192 Basehor
B
77.2
8K 35 Health Unresolved
193 Ellis
B
77.2
2K 17 Health Unresolved
194 Burrton
B
77.2
854 8 Health Unresolved
195 Chetopa
B
77
921 67 Health Unresolved
196 Bennington
B
77
635 11 Health Unresolved
197 Arma
B
76.7
3K 44 Health Unresolved
198 Canton
B
76.7
699 33 Health Unresolved
199 Herington
B
76.5
2K 61 Health Unresolved
200 Coffeyvile
B
76.5
2K 19 Health Unresolved
201 Andale
B
76.5
938 8 Health Unresolved
202 Leon
B
76.5
667 34 Health Unresolved
203 Waterville
B
76.5
656 16 Health Unresolved
204 Oberlin
B
76.4
2K 80 Health Unresolved
205 Frontenac
B
76.2
4K 58 Health Unresolved
206 Linwood
B
76.2
918 45 Health Unresolved
207 Aurora
B
76.2
526 55 Health Unresolved
208 Claflin
B
76
553 14 Unresolved
209 Auburn
B
75.8
4K 16 Health Unresolved
210 Valley Falls
B
75.3
4K 63 Health Unresolved
211 Winfield
B
75.2
13K 67 Health Unresolved
212 Eureka
B
75.2
5K 78 Health Unresolved
213 Hanover
B-
74.9
2K 41 Health Unresolved
214 Dighton
B-
74.7
954 43 Health Unresolved
215 Lawrence
B-
74.6
136K 32 Health Unresolved
216 Leavenworth
B-
74.2
43K 69 Health Unresolved
217 Kensington
B-
74.2
781 33 Health Unresolved
218 Goddard
B-
74
8K 29 Health Unresolved
219 Rosalia
B-
73.8
1K 11 Unresolved
220 Minneola
B-
73.8
752 8 Health Unresolved
221 Carbondale
B-
73.7
1K 67 Health Unresolved
222 Linn Valley
B-
73.7
1K 71 Health Unresolved
223 Durham
B-
73.4
866 53 Health Unresolved
224 St Paul
B-
72.9
920 29 Health Unresolved
225 Satanta
B-
72.7
1K 18 Health Unresolved
226 Powhattan
B-
72.6
793 89 Health Unresolved
227 Garnett
B-
72.5
3K 84 Health Unresolved
228 Norton
B-
72.5
3K 84 Health Unresolved
229 Mulvane
B-
72.3
7K 43 Health Unresolved
230 Clay Center
B-
72.3
5K 62 Health Unresolved
231 Wamego
B-
72.2
14K 57 Health Unresolved
232 Overbrook
B-
72.1
5K 39 Health Unresolved
233 Scranton
B-
72.1
651 38 Health Unresolved
234 Lyons
B-
72
4K 34 Health Unresolved
235 Gridley
B-
71.4
3K 45 Health Unresolved
236 Derby
B-
71.3
31K 38 Health Unresolved
237 Grantville
B-
71.1
563 66 Health Unresolved
238 Desoto
B-
70.7
5K 17 Health Unresolved
239 Park City
B-
70.6
9K 26 Health PFAS Unresolved
240 Walton
B-
70.6
3K 38 Health Unresolved
241 Esbon
B-
70.6
1K 68 Health Unresolved
242 Larned
B-
70.4
6K 46 Health Unresolved
243 Tonganoxie
C+
69.8
8K 69 Health Unresolved
244 Baxter Springs
C+
69.8
4K 87 Health Unresolved
245 Anthony
C+
69.8
2K 60 Health Unresolved
246 Chapman
C+
69.6
2K 51 Health Unresolved
247 Cedar Vale
C+
69.4
753 40 Health Unresolved
248 Ottawa
C+
69.2
15K 46 Health Unresolved
249 Perry
C+
69.2
2K 33 Health Unresolved
250 Howard
C+
69
1K 81 Health Unresolved
251 Emporia
C+
68.8
28K 60 Health Unresolved
252 Whitewater
C+
68.8
2K 38 Health Unresolved
253 Halstead
C+
68.7
3K 42 Health Unresolved
254 Gypsum
C+
68.5
867 44 Health Unresolved
255 Lyndon
C+
68.4
1K 22 Health Unresolved
256 Stafford
C+
68.1
936 15 Health Unresolved
257 Parsons
C+
67.9
12K 97 Health Unresolved
258 Pratt
C+
67.8
7K 18 Health PFAS Unresolved
259 Oakley
C+
67
2K 41 Health Unresolved
260 Olsburg
C+
67
2K 29 Health Unresolved
261 St George
C+
67
998 51 Health Unresolved
262 Medicine Lodge
C+
66.5
2K 21 Health Lead Unresolved
263 Hillsboro
C+
66.2
4K 62 Health Unresolved
264 Peabody
C+
66.1
932 64 Health Unresolved
265 Moline
C+
65.8
825 98 Health Unresolved
266 Coffeyville
C+
65.5
10K 48 Health Unresolved
267 Quenemo
C+
65.4
507 42 Health Unresolved
268 Pleasanton
C+
65.3
3K 108 Health Unresolved
269 Clearwater
C+
65.1
3K 28 Health Unresolved
270 Pretty Prairie
C
64.6
655 124 Health Unresolved
271 Independence
C
63.6
11K 102 Health Unresolved
272 Bartlett
C
63.4
1K 81 Unresolved
273 Kiowa
C
62.5
1K 35 Health Unresolved
274 Girard
C
62.2
7K 107 Health Unresolved
275 Ozawkie
C
62.2
2K 64 Health Unresolved
276 Milford
C
61.8
2K 100 Health Unresolved
277 Belle Plaine
C
61.6
1K 41 Health Unresolved
278 Bronson
C
60.6
1K 91 Health Unresolved
279 Harper
C-
59.4
1K 36 Health Unresolved
280 Arkansas City
C-
59
18K 80 Health PFAS Unresolved
281 Moran
C-
58.9
1K 96 Health Unresolved
282 Columbus
C-
58.5
5K 112 Health Unresolved
283 Highland
C-
58.1
1K 38 Health Unresolved
284 Manhattan
C-
56.4
60K 117 Health Unresolved
285 Atchison
C-
56.1
12K 192 Health Unresolved
286 Wellington
C-
56
9K 149 Health Unresolved
287 Ellsworth
D+
54.2
6K 110 Health Unresolved
288 Iola
D+
53.8
6K 74 Health Lead Unresolved
289 Mound City
D+
53.1
3K 113 Health Unresolved
290 Yoder
D+
52.8
650 35 Health Unresolved
291 Toronto
D+
51.9
1K 62 Health Unresolved
292 Belleville
D+
51.4
3K 37 Health Unresolved
293 Oswego
D+
50.8
4K 153 Health Unresolved
294 Hutchinson
D+
50.6
41K 142 Health Unresolved
295 Junction City
D
50
19K 58 Health Unresolved
296 Lacygne
D+
50
3K 171 Health Unresolved
297 Conway Springs
D+
50
3K 178 Health Unresolved
298 Elkhart
D+
50
2K 632 Health Unresolved
299 Madison
D+
50
1K 127 Health Unresolved
300 Chanute
D
49
11K 158 Health Unresolved
301 Osawatomie
D
49
7K 123 Health Unresolved
302 Beloit
D
49
3K 81 Health Unresolved
303 Caney
D
49
2K 105 Health Unresolved
304 Elk City
D
49
722 224 Health Unresolved
305 El Dorado
D
47.8
18K 132 Health Unresolved
306 Horton
D
47
2K 418 Health Unresolved
307 Liberal
D
46
20K 351 Health Unresolved
308 Fredonia
D
46
3K 244 Health Unresolved
309 Scottsville
D
46
2K 78 Health Unresolved
310 Erie
D
46
2K 177 Health Unresolved
311 Sedan
D
46
2K 134 Health Unresolved
312 Yates Center
D
46
1K 44 Health Unresolved
313 Nickerson
D
45
1K 78 Health Unresolved
314 Garden City
F
42.4
39K 372 Health Unresolved
315 Neodesha
F
42
3K 174 Health Unresolved
316 Glen Elder
F
42
2K 220 Health Unresolved
317 Plainville
F
41
2K 56 Health Unresolved
318 Rose Hill
F
40
4K 48 Health Unresolved
319 Russell
F
39.9
5K 196 Health Unresolved
320 Topeka
F
39.3
142K 118 Health Unresolved
321 Great Bend
F
37.9
16K 123 Health PFAS Unresolved
322 Salina
F
37.2
49K 147 Health Unresolved
323 Hays
F
29.8
23K 492 Health Unresolved