Skip to main content
WaterVerge

Oklahoma Water Quality Rankings

357 cities ranked · Data from EPA SDWIS

61.2
State avg score
357
Cities ranked
34%
A or B grade
54%
D or F grade
350
Health violations
85
PFAS detected

Oklahoma water quality overview

Oklahoma's drinking water quality is fair overall, with a state average score of 61.2 out of 100 — 13.3 points below the national average of 74.5. The median city score is 52, reflecting how water quality is distributed across the state's 357 ranked cities. 54% of cities scored a D or F, pointing to significant water quality challenges across much of the state. 121 cities did earn an A or B grade, showing that strong systems do exist. PFAS "forever chemicals" were detected in 85 of 357 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. 350 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%
20%
12%
43%
11%
A
48
13%
Excellent
B
73
20%
Good
C
44
12%
Fair
D
153
43%
Poor
F
39
11%
Failing

Score distribution by range

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