WaterVerge

Oklahoma Water Quality Rankings

358 cities ranked · Data from EPA SDWIS

61.3
State avg score
358
Cities ranked
34%
A or B grade
54%
D or F grade
351
Health violations
85
PFAS detected

Oklahoma water quality overview

Oklahoma's drinking water quality is fair overall, with a state average score of 61.3 out of 100 — 12.9 points below the national average of 74.2. The median city score is 52, reflecting how water quality is distributed across the state's 358 ranked cities. 54% of cities scored a D or F, pointing to significant water quality challenges across much of the state. 122 cities did earn an A or B grade, showing that strong systems do exist. PFAS "forever chemicals" were detected in 85 of 358 cities (24%). Of those, 12 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 4 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. 351 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 Oklahoma cities scored

13%
21%
12%
43%
11%
A
48
13%
Excellent
B
74
21%
Good
C
44
12%
Fair
D
153
43%
Poor
F
39
11%
Failing

Score distribution by range

128 64 0
9
128
65
34
42
65
15
0–9
10–19
20–29
30–39
40–49
50–59
60–69
70–79
80–89
90–100

State vs national average

C
Oklahoma
61.3/100
B-
National avg
74.2/100
▼ 12.9 pts below national average

Water quality across Oklahoma

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

All 358 cities in Oklahoma

# City Grade Score Score Population Violations Issues
1 Thomas
A+
96.3
1K 27 Unresolved
2 Fort Sill
A
94.8
23K 8 Health Unresolved
3 Thackerville
A
94.4
2K 32 Health Unresolved
4 Sayre
A
94
4K 14 Health Unresolved
5 Marietta
A
93.6
3K 14 Health Unresolved
6 Sentinel
A
93.4
859 11 Health Unresolved
7 Hobart
A
93.2
4K 16 Health Unresolved
8 Seminole
A
92.8
7K 53 Health
9 Rush Springs
A
92.5
1K 68 Health Unresolved
10 Bokchito
A
91.5
564 37 Health Unresolved
11 Texhoma
A
91.4
935 32 Unresolved
12 Glenpool
A
91.3
13K 23 Health Unresolved
13 Ketchum
A
90.8
6K 45 Health Unresolved
14 Verden
A
90.6
659 28 Health Unresolved
15 Bison
A
90.1
2K 34 Health Unresolved
16 Lahoma
A-
89.9
577 5 Unresolved
17 Dibble
A-
89.6
550 20 Health Unresolved
18 Newcastle
A-
89.5
8K 29 Health Unresolved
19 Drumright
A-
89.4
3K 23 Health Unresolved
20 Luther
A-
89.1
650 76 Health Unresolved
21 Stratford
A-
88.3
2K 17 Health Unresolved
22 Sperry
A-
88.3
1K 16 Unresolved
23 Meeker
A-
88.3
1K 51 Health Unresolved
24 Achille
A-
88.2
506 30 Health Unresolved
25 Chelsea
A-
87.8
2K 53 Health Unresolved
26 Mannsville
A-
87.8
587 72 Health Unresolved
27 Cushing
A-
87.6
8K 26 Health Unresolved
28 Seiling
A-
87.1
860 37 Health Unresolved
29 Catoosa
A-
87
3K 41 Health Unresolved
30 Roland
A-
86.9
3K 67 Health Unresolved
31 Lindsay
A-
86.6
4K 24 Health Unresolved
32 Healdton
A-
86.5
3K 55 Health Unresolved
33 Burns Flat
A-
86.5
2K 50 Health Unresolved
34 Allen
A-
86.4
3K 14 Health Unresolved
35 Cashion
A-
86.3
900 11 Health Unresolved
36 Depew
A-
86.2
555 112 Health Unresolved
37 Fort Cobb
A-
86.1
667 17 Health Unresolved
38 Sulphur
A-
86
11K 17 Health Unresolved
39 Elmore City
A-
86
2K 68 Health Unresolved
40 South Coffeyville
A-
86
790 18 Health Unresolved
41 Sterling
A-
85.8
762 31 Health Unresolved
42 Purcell
A-
85.7
7K 20 Health Unresolved
43 Hooker
A-
85.7
2K 58 Unresolved
44 Waukomis
A-
85.7
1K 34 Health Unresolved
45 Carney
A-
85.6
649 93 Health Unresolved
46 Guymon
A-
85.5
11K 20 Health Unresolved
47 Arapaho
A-
85.4
748 20 Health Unresolved
48 Waynoka
A-
85
993 54 Health Unresolved
49 Maud
B+
84.9
1K 31 Health Unresolved
50 Braggs
B+
84.8
1K 18 Health Unresolved
51 Ninnekah
B+
84.7
2K 21 Health Unresolved
52 Cherokee
B+
84.4
2K 68 Health Unresolved
53 Canton
B+
83.5
750 68 Health Unresolved
54 Minco
B+
83.4
2K 22 Health Unresolved
55 Arkoma
B+
83
2K 26 Health Unresolved
56 Lone Grove
B+
82.8
5K 76 Health Unresolved
57 Jones
B+
82.8
2K 17 Health Unresolved
58 Kingston
B+
82.6
2K 20 Health Unresolved
59 Coleman
B+
82.6
600 85 Health Unresolved
60 Tinker Afb
B+
82.5
2K 6 Unresolved
61 Goldsby
B+
82.5
2K 58 Health Unresolved
62 Salina
B+
82.5
1K 89 Health Unresolved
63 Webbers Falls
B+
82.5
1K 93 Health Unresolved
64 Velma
B+
82.5
960 17 Health Unresolved
65 Hammon
B+
82.4
568 13 Health Unresolved
66 Cement
B+
82.3
530 86 Health Unresolved
67 Stillwell
B+
82.1
1K 24 Unresolved
68 Commerce
B+
81.9
3K 77 Health Unresolved
69 Vici
B+
81.9
668 43 Health Unresolved
70 Agra
B+
81.7
3K 24 Health Unresolved
71 Carter
B+
81.7
2K 63 Health Unresolved
72 Bethany
B+
81.6
20K 34 Health PFAS Unresolved
73 Colony
B+
81.6
1K 9 Health Unresolved
74 Mountain View
B+
81.3
880 22 Health Unresolved
75 Covington
B+
81.2
553 14 Health Unresolved
76 Langley
B+
80.7
950 22 Health Unresolved
77 Adair
B+
80.5
4K 61 Health Unresolved
78 Midwest City
B+
80.3
56K 30 Health Unresolved
79 Bowlegs
B+
80.3
3K 33 Health Unresolved
80 Wilson
B+
80
2K 30 Health Unresolved
81 Roff
B
79.9
800 31 Health Unresolved
82 Bixby
B
79.7
19K 14 Health Unresolved
83 Cyril
B
79.7
1K 18 Health Unresolved
84 Dearing
B
79.7
804 21 Health Unresolved
85 Corn
B
79.5
500 55 Health Unresolved
86 Fittstown
B
79.2
896 23 Health Unresolved
87 Tyrone
B
78.7
880 78 Health Unresolved
88 Custer City
B
78.6
1K 7 Health Unresolved
89 Byron
B
78.5
1K 49 Health Unresolved
90 Binger
B
78.3
708 67 Health Unresolved
91 Geronimo
B
78
1K 23 Health Unresolved
92 Beaver
B
77.6
2K 43 Health Unresolved
93 Gans
B
77.5
600 40 Health Unresolved
94 Ringling
B
77.3
1K 46 Health Unresolved
95 Stigler
B
77
3K 47 Health Unresolved
96 Carnegie
B
76.7
6K 26 Health Unresolved
97 Leedey
B
76.7
1K 35 Health Unresolved
98 Marlow
B
76.5
11K 30 Health Unresolved
99 Forgan
B
76.4
532 25 Health Unresolved
100 Shattuck
B
76
1K 45 Health Unresolved
101 Disney
B
75.6
2K 53 Health Unresolved
102 Sand Springs
B
75.3
30K 72 Health Unresolved
103 Hennessey
B-
74.6
2K 92 Health Unresolved
104 Indianola
B-
74.6
2K 32 Health Unresolved
105 Porum
B-
74.5
5K 63 Health Unresolved
106 Chouteau
B-
74.4
8K 52 Health PFAS Unresolved
107 Morrison
B-
74.4
950 33 Health Unresolved
108 Oologah
B-
74.2
8K 75 Health Unresolved
109 Tonkawa
B-
74.1
4K 43 Health Unresolved
110 Howe
B-
73.9
2K 39 Health Unresolved
111 Monroe
B-
73.6
2K 69 Health Unresolved
112 Skiatook
B-
73.2
15K 112 Health Unresolved
113 Butler
B-
73
782 34 Health Unresolved
114 Kellyville
B-
72.9
6K 38 Health Unresolved
115 Garber
B-
72.5
2K 116 Health Unresolved
116 Jenks
B-
72.4
30K 58 Health Unresolved
117 Marshall
B-
72.4
2K 42 Health Unresolved
118 Alva
B-
72.2
6K 38 Health Unresolved
119 Warner
B-
71.5
2K 142 Health Unresolved
120 Ada
B-
71.4
32K 80 Health Unresolved
121 Mannford
B-
71.3
6K 144 Health Unresolved
122 Fort Towson
B-
70.4
611 85 Health Unresolved
123 Mangum
C+
69.7
3K 32 Health Unresolved
124 Mustang
C+
69.2
19K 29 Health Unresolved
125 Stonewall
C+
68.4
2K 35 Health Unresolved
126 Crescent
C+
68.2
3K 143 Health Unresolved
127 Colbert
C+
68
2K 48 Health Unresolved
128 Cordell
C+
67.6
3K 71 Health Unresolved
129 Paoli
C+
67.3
610 68 Health Unresolved
130 Tupelo
C+
67.2
527 120 Health Unresolved
131 Pond Creek
C+
67
1K 46 Health Unresolved
132 Collinsville
C+
66.8
31K 54 Health Unresolved
133 Crowder
C+
66.5
2K 135 Health Unresolved
134 Mutual
C+
66.3
755 72 Health Unresolved
135 Watonga
C+
66
3K 38 Health Unresolved
136 Twin Oaks
C+
65.4
750 28 Health Unresolved
137 Earlsboro
C+
65.2
6K 53 Health PFAS Unresolved
138 Owasso
C+
65.1
23K 71 Health Unresolved
139 Goodwell
C+
65
2K 136 Health Unresolved
140 Stilwell
C
64.5
7K 64 Health Unresolved
141 Savanna
C
63.4
800 43 Health Unresolved
142 Bernice
C
63.4
504 122 Health Unresolved
143 Wayne
C
63.3
3K 151 Health Unresolved
144 Smithville
C
63.2
600 30 Health Unresolved
145 Muldrow
C
62.6
6K 77 Health Unresolved
146 Laverne
C
62.4
1K 96 Health Unresolved
147 Dewar
C
62.3
917 45 Health Unresolved
148 Alex
C
62.2
635 53 Health Unresolved
149 Spencer
C
61.9
4K 152 Health Unresolved
150 Washington
C
61.7
600 60 Health Unresolved
151 Grant
C
61.6
2K 69 Health Unresolved
152 Fletcher
C
61.5
1K 239 Health Unresolved
153 Langston
C
61.4
2K 104 Health Unresolved
154 Oakhurst
C
61.3
575 72 Health Unresolved
155 Panama
C
60.5
1K 46 Health Unresolved
156 Davis
C
60.2
3K 41 Health Unresolved
157 Dill City
C-
59.8
526 32 Health Unresolved
158 Stuart
C-
59.2
1K 203 Health Unresolved
159 Pauls Valley
C-
58.6
9K 129 Health Unresolved
160 Apache
C-
57.2
2K 84 Health Unresolved
161 Caddo
C-
56.9
3K 203 Health Unresolved
162 Hydro
C-
56.8
1K 69 Health Unresolved
163 Inola
C-
56.3
3K 74 Health Unresolved
164 Piedmont
C-
55.8
8K 104 Health Unresolved
165 Gould
C-
55.7
1K 114 Health Unresolved
166 Medford
C-
55.2
2K 69 Health Unresolved
167 Okeene
D+
54.7
2K 181 Health Unresolved
168 Marland
D+
54.1
517 86 Health Unresolved
169 Anadarko
D+
54
7K 122 Health Unresolved
170 Mead
D+
54
6K 151 Health Unresolved
171 Oktaha
D+
54
2K 102 Health Unresolved
172 Krebs
D+
54
2K 102 Health Unresolved
173 Granite
D+
53.8
2K 156 Health Unresolved
174 Frederick
D+
52.7
4K 124 Health Unresolved
175 Pocola
D+
52.5
5K 64 Health Unresolved
176 Pawhuska
D+
52.5
4K 62 Health Unresolved
177 Haileyville
D+
52.4
889 95 Health Unresolved
178 Gore
D+
52.3
3K 86 Health Unresolved
179 Antlers
D+
52
7K 255 Health Unresolved
180 Hartshorne
D+
52
7K 159 Health Unresolved
181 Hugo
D+
52
6K 276 Health Unresolved
182 Hollis
D+
52
3K 207 Health Unresolved
183 Prague
D+
52
2K 873 Health Unresolved
184 Erick
D+
52
2K 102 Health Unresolved
185 Mooreland
D+
52
2K 328 Health Unresolved
186 Boise City
D+
52
1K 138 Health Unresolved
187 Boley
D+
52
1K 697 Health Unresolved
188 Canute
D+
52
524 162 Health Unresolved
189 Sallisaw
D+
51.8
25K 112 Health Unresolved
190 Council Hill
D+
51.3
1K 240 Health Unresolved
191 Chattanooga
D+
51.2
2K 154 Health Unresolved
192 Spiro
D+
51.1
13K 223 Health Unresolved
193 Stroud
D+
51
3K 186 Health Unresolved
194 Wainwright
D+
51
3K 118 Health Unresolved
195 Waurika
D+
51
2K 212 Health Unresolved
196 Schulter
D+
51
2K 111 Health Unresolved
197 Terlton
D+
51
2K 99 Health Unresolved
198 Vian
D+
51
1K 688 Health Unresolved
199 Maysville
D+
51
1K 257 Health Unresolved
200 Temple
D+
51
1K 121 Health Unresolved
201 Grandfield
D+
51
1K 214 Health Unresolved
202 Ryan
D+
51
800 190 Health Unresolved
203 Oilton
D+
50.8
1K 693 Health Unresolved
204 Mounds
D+
50.5
10K 264 Health Unresolved
205 Holdenville
D+
50.5
6K 222 Health Unresolved
206 Stringtown
D+
50.5
2K 169 Health Unresolved
207 Okay
D+
50.5
2K 107 Health Unresolved
208 Wewoka
D+
50.3
4K 477 Health Unresolved
209 Duncan
D+
50.2
23K 167 Health Unresolved
210 Clinton
D+
50.2
9K 105 Health Unresolved
211 Blackwell
D+
50.2
9K 101 Health Unresolved
212 Hastings
D+
50.2
8K 283 Health Unresolved
213 Atoka
D+
50.1
7K 380 Health Unresolved
214 Big Cabin
D+
50.1
4K 68 Health Unresolved
215 Walters
D+
50
6K 136 Health Unresolved
216 Elgin
D+
50
5K 141 Health Unresolved
217 Calera
D+
50
3K 49 Health Unresolved
218 Hinton
D+
50
3K 267 Health Unresolved
219 Welch
D+
50
2K 279 Health Unresolved
220 Buffalo
D+
50
1K 256 Health Unresolved
221 Osage
D+
50
540 574 Health Unresolved
222 Wilburton
D
49.5
6K 89 Health Unresolved
223 Heavener
D
49.5
3K 90 Health Unresolved
224 Colcord
D
49.5
2K 112 Health Unresolved
225 El Reno
D
49.3
19K 175 Health Unresolved
226 Amber
D
49.2
4K 198 Health Unresolved
227 Morris
D
49
6K 300 Health Unresolved
228 Locust Grove
D
49
5K 493 Health Unresolved
229 Westville
D
49
5K 277 Health Unresolved
230 Pawnee
D
49
4K 577 Health Unresolved
231 Chandler
D
49
4K 247 Health Unresolved
232 Comanche
D
49
3K 148 Health Unresolved
233 Wetumka
D
49
3K 241 Health Unresolved
234 Hominy
D
49
3K 390 Health Unresolved
235 Porter
D
49
2K 72 Health Unresolved
236 Kansas
D
49
2K 237 Health Unresolved
237 Garvin
D
49
2K 127 Health Unresolved
238 Boswell
D
49
2K 283 Health Unresolved
239 Fairfax
D
49
2K 405 Health Unresolved
240 Whitesboro
D
49
2K 132 Health Unresolved
241 Tipton
D
49
1K 276 Health Unresolved
242 Red Oak
D
49
993 272 Health Unresolved
243 Cheyenne
D
49
978 153 Health Unresolved
244 Kiowa
D
49
856 322 Health Unresolved
245 Duke
D
49
743 131 Health Unresolved
246 Copan
D
49
733 131 Health Unresolved
247 Union City
D
49
618 39 Health Unresolved
248 Olustee
D
49
607 94 Health Unresolved
249 Keota
D
49
564 83 Health Unresolved
250 Hennepin
D
49
500 56 Health Unresolved
251 Poteau
D
48.8
10K 150 Health Unresolved
252 Harrah
D
48.8
4K 451 Health Unresolved
253 Bristow
D
48.8
4K 288 Health Unresolved
254 Sapulpa
D
48.7
29K 148 Health Unresolved
255 Wister
D
48.7
5K 284 Health Unresolved
256 Elk City
D
48.6
12K 183 Health Unresolved
257 Tulsa
D
48.5
416K 401 Health Unresolved
258 Perry
D
48.5
8K 402 Health Unresolved
259 Okemah
D
48.5
7K 123 Health Unresolved
260 Shidler
D
48.5
2K 317 Health Unresolved
261 Altus
D
48.2
24K 276 Health Unresolved
262 Wyandotte
D
48.2
2K 617 Health Unresolved
263 Perkins
D
48.1
3K 124 Health Unresolved
264 Mcloud
D
48
3K 2924 Health Unresolved
265 Grove
D
47.8
8K 772 Health Unresolved
266 Tuttle
D
47.8
5K 3294 Health Unresolved
267 Muskogee
D
47.5
44K 324 Health Unresolved
268 Valliant
D
47.5
2K 98 Health Unresolved
269 Vinita
D
47.2
12K 288 Health Unresolved
270 Weatherford
D
47.2
11K 411 Health Unresolved
271 Noble
D
47.2
6K 495 Health Unresolved
272 Kingfisher
D
47.2
5K 346 Health Unresolved
273 Nichols Hills
D
47.2
4K 96 Health Unresolved
274 Fairland
D
47.2
3K 193 Health Unresolved
275 Tishomingo
D
47
7K 139 Health Unresolved
276 Quinton
D
47
4K 99 Health Unresolved
277 Barnsdall
D
47
2K 589 Health Unresolved
278 Snyder
D
47
2K 245 Health Unresolved
279 Beggs
D
47
1K 237 Health Unresolved
280 Quapaw
D
47
1K 155 Health Unresolved
281 Weleetka
D
47
998 294 Health Unresolved
282 Davenport
D
47
881 143 Health Unresolved
283 Glencoe
D
47
628 127 Health Unresolved
284 Idabel
D
46.9
7K 183 Health Unresolved
285 Miami
D
46.8
14K 281 Health Unresolved
286 Calumet
D
46.7
1K 232 Health Unresolved
287 Durant
D
46.6
24K 147 Health Unresolved
288 Woodward
D
46.6
16K 195 Health Unresolved
289 Blanchard
D
46.6
3K 91 Health Lead Unresolved
290 Checotah
D
46.5
11K 503 Health Unresolved
291 Haworth
D
46.5
4K 132 Health Unresolved
292 Shawnee
D
46
32K 269 Health Unresolved
293 Hulbert
D
46
8K 348 Health Unresolved
294 Fairview
D
46
4K 182 Health Unresolved
295 Blair
D
46
4K 80 Health Unresolved
296 Preston
D
46
2K 121 Health Unresolved
297 Yale
D
46
2K 208 Health Unresolved
298 Haskell
D
46
2K 203 Health Unresolved
299 Konawa
D
46
1K 297 Health Unresolved
300 Geary
D
46
1K 181 Health Unresolved
301 Albion
D
46
959 115 Health Unresolved
302 Hodgen
D
46
923 73 Health Unresolved
303 Hendrix
D
46
820 122 Health Unresolved
304 Wright City
D
46
792 66 Health Unresolved
305 Mccurtain
D
46
560 117 Health Unresolved
306 Boynton
D
46
510 281 Health Unresolved
307 Okmulgee
D
45.7
16K 385 Health Unresolved
308 Coweta
D
45.4
14K 256 Health PFAS Unresolved
309 Yukon
D
45
23K 163 Health Unresolved
310 Pryor
D
45
17K 211 Health PFAS Unresolved
311 Ochelata
D
45
8K 242 Health Unresolved
312 Wynnewood
D
45
5K 142 Health Unresolved
313 Jay
D
45
4K 247 Health Unresolved
314 Coalgate
D
45
3K 205 Health Unresolved
315 Ramona
D
45
3K 272 Health Unresolved
316 Cookson
D
45
3K 433 Health Unresolved
317 Talihina
D
45
2K 355 Health Unresolved
318 Clayton
D
45
2K 364 Health Unresolved
319 Red Rock
D
45
543 437 Health Unresolved
320 Del City
F
44.9
22K 216 Health Unresolved
321 Moore
F
44.5
55K 251 Health Unresolved
322 Broken Bow
F
44.5
12K 150 Health Unresolved
323 Afton
F
44.5
3K 707 Health Unresolved
324 Lawton
F
44.4
99K 601 Health Unresolved
325 Wagoner
F
44
16K 254 Health Unresolved
326 Coffeyville
F
44
2K 109 Health Unresolved
327 Millerton
F
44
755 81 Health Unresolved
328 Broken Arrow
F
43.9
142K 135 Health PFAS Unresolved
329 Mcalester
F
43.9
29K 1079 Health Unresolved
330 Eufaula
F
43.8
13K 542 Health Unresolved
331 Chickasha
F
43.5
17K 129 Health Unresolved
332 Guthrie
F
43.2
19K 274 Health PFAS Unresolved
333 Tahlequah
F
43
21K 263 Health Unresolved
334 Cleveland
F
43
7K 334 Health Unresolved
335 Wellston
F
43
1K 214 Health Unresolved
336 Kremlin
F
43
920 160 Health Unresolved
337 Nashoba
F
43
725 119 Health Unresolved
338 Fort Gibson
F
42.9
8K 340 Health Unresolved
339 Bartlesville
F
42.8
36K 282 Health Unresolved
340 Madill
F
42.5
24K 364 Health Unresolved
341 Cache
F
42
5K 106 Health Unresolved
342 Lexington
F
42
5K 262 Health Unresolved
343 Claremore
F
41.7
60K 330 Health Unresolved
344 Nowata
F
41.5
7K 502 Health PFAS Unresolved
345 Okarche
F
41.5
1K 290 Health Unresolved
346 Dewey
F
41
4K 108 Health Unresolved
347 Enid
F
40.5
54K 478 Health Unresolved
348 Newkirk
F
40.2
3K 83 Health PFAS Unresolved
349 Henryetta
F
40
9K 204 Health Unresolved
350 Ponca City
F
39.8
33K 345 Health PFAS Unresolved
351 Stillwater
F
39
73K 248 Health PFAS Unresolved
352 Oklahoma City
F
38.6
677K 1387 Health Unresolved
353 Norman
F
38.4
140K 780 Health Unresolved
354 Choctaw
F
38
4K 140 Health Unresolved
355 Edmond
F
34.9
90K 2458 Health PFAS Unresolved
356 Tecumseh
F
34.2
6K 1099 Health Lead Unresolved
357 Ardmore
F
32.1
36K 698 Health Lead Unresolved
358 Ratliff City
F
31
2K 57 Health Lead Unresolved