WaterVerge

West Virginia Water Quality Rankings

248 cities ranked · Data from EPA SDWIS

61.3
State avg score
248
Cities ranked
39%
A or B grade
50%
D or F grade
223
Health violations
43
PFAS detected

West Virginia water quality overview

West Virginia'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 56.6, reflecting how water quality is distributed across the state's 248 ranked cities. 50% of cities scored a D or F, pointing to significant water quality challenges across much of the state. 96 cities did earn an A or B grade, showing that strong systems do exist. PFAS "forever chemicals" were detected in 43 of 248 cities (17%). Of those, 17 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. 223 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 West Virginia cities scored

14%
25%
12%
27%
23%
A
35
14%
Excellent
B
61
25%
Good
C
29
12%
Fair
D
66
27%
Poor
F
57
23%
Failing

Score distribution by range

98 49 0
11
98
19
24
39
47
10
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
West Virginia
61.3/100
B-
National avg
74.2/100
▼ 12.9 pts below national average

Water quality across West Virginia

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

All 248 cities in West Virginia

# City Grade Score Score Population Violations Issues
1 Bluefield
A+
99
12K 0 Zero violations
2 Spencer
A
93.6
5K 28 Health Unresolved
3 Volga
A
90.9
3K 15 Health Unresolved
4 Kingwood
A
90.5
7K 20 Health Unresolved
5 Pleasant Valley
A
90.2
3K 15 Health Unresolved
6 Pleasant Valley
A
90.2
3K 15 Health Unresolved
7 Charleston
A
90.1
209K 4 Unresolved
8 Beckley
A-
90
47K 15 Health Unresolved
9 Hurricane
A
90
9K 6 Health Unresolved
10 French Creek
A
90
5K 13 Health Unresolved
11 Craigsville
A-
89.9
5K 26 Health Unresolved
12 Sutton
A-
89.8
4K 51 Health Unresolved
13 Huntington
A-
89.7
99K 4 Health Unresolved
14 Letart
A-
89.4
3K 23 Unresolved
15 Daniels
A-
88.7
2K 2 Unresolved
16 Alderson
A-
88.6
2K 19 Health Unresolved
17 Peterstown
A-
88.5
5K 12 Health Unresolved
18 Newell
A-
88.4
5K 58 Health Unresolved
19 Oak Hill
A-
88.2
26K 1 Unresolved
20 Sutton
A-
88.1
5K 55 Health Unresolved
21 Rupert
A-
87.9
1K 8 Unresolved
22 Hinton
A-
87.8
21K 1 Unresolved
23 Glen Dale
A-
87.6
2K 40 Health Unresolved
24 Petersburg
A-
87.5
5K 12 Unresolved
25 New Manchester (Pughtown)
A-
86.9
2K 7 Unresolved
26 Summersville
A-
86.7
6K 24 Health Unresolved
27 Core
A-
86.7
4K 2 Unresolved
28 Beech Bottom
A-
86.6
610 13 Health Unresolved
29 Weston
A-
86.5
15K 2 Unresolved
30 Athens
A-
86.1
6K 13 Health Unresolved
31 Danese
A-
85.8
2K 14 Health Unresolved
32 Scott Depot (Rr Name Scott)
A-
85.7
24K 7 Unresolved
33 Junior
A-
85.2
987 22 Unresolved
34 Belington
A-
85.1
2K 5 Unresolved
35 Newburg
A-
85
1K 11 Unresolved
36 Chestnut Ridge
B+
84.8
3K 3 Health Unresolved
37 Ashton
B+
84.6
4K 25 Unresolved
38 Sherrard
B+
83.5
3K 20 Health Unresolved
39 Benwood
B+
83.1
2K 96 Health Unresolved
40 Rachel (Downs)
B+
83.1
1K 19 Health Unresolved
41 Amherstdale
B+
83
4K 17 Health Unresolved
42 Gassaway
B+
83
2K 3 Unresolved
43 Branchland
B+
82.9
3K 23 Health Unresolved
44 Birch River
B+
82.9
1K 23 Health Unresolved
45 Meadowville
B+
82.7
615 10 Unresolved
46 Reynoldsville
B+
82.5
3K 12 Unresolved
47 Star City
B+
82.5
2K 28 Unresolved
48 Grant Town
B+
82.5
506 34 Health Unresolved
49 Bethlehem
B+
82.4
3K 18 Health Unresolved
50 Hundred
B+
82.3
638 50 Health Unresolved
51 Gerrardstown
B+
82.1
1K 53 Unresolved
52 Norton
B+
82
2K 13 Health Unresolved
53 Reader
B+
82
1K 12 Health Unresolved
54 Bridgeport
B+
81.7
11K 12 Health PFAS Unresolved
55 Monongah
B+
81.6
3K 25 Health Unresolved
56 Jane Lew
B+
81.1
1K 72 Health Unresolved
57 Stonewood
B+
80.3
2K 38 Health Unresolved
58 Princeton
B
79.9
7K 53 Health Unresolved
59 Washington
B
79.1
10K 27 Health PFAS Unresolved
60 Walton
B
79
2K 27 Health Unresolved
61 Belmont
B
79
1K 25 Unresolved
62 Union
B
78.9
758 20 Health Unresolved
63 Tunnelton
B
78.2
1K 27 Health Unresolved
64 Gallipolis Ferry (Rr Name Gall
B
78.1
1K 23 Unresolved
65 Crum
B
77.7
3K 21 Health Unresolved
66 Lavalette
B
77.4
10K 12 Health PFAS Unresolved
67 Clear Creek
B
77.1
1K 3 Health Unresolved
68 Point Pleasant
B
76.9
4K 42 Health Unresolved
69 Hepzibah
B
76.5
2K 36 Health Unresolved
70 New Creek (Newcreek)
B
76.3
3K 23 Health Unresolved
71 Waverly
B
76.2
8K 34 Health PFAS Unresolved
72 Flemington
B
76.1
5K 30 Health Unresolved
73 Inwood
B
75.8
35K 39 Health Unresolved
74 Petersburg
B
75.8
9K 47 Health Unresolved
75 Triadelphia
B
75.6
5K 35 Health Unresolved
76 Coal City
B
75.2
3K 50 Health Unresolved
77 Brandywine
B
75.2
692 98 Health Unresolved
78 Franklin
B
75.2
633 92 Health Unresolved
79 West Liberty
B
75.1
10K 37 Health Unresolved
80 Masontown
B-
74.8
2K 47 Health Unresolved
81 Anmoore
B-
74.4
1K 96 Health Unresolved
82 Cool Ridge
B-
74.2
4K 15 Health Unresolved
83 Mount Nebo
B-
74
6K 40 Health Unresolved
84 Proctor
B-
73.5
2K 48 Health Unresolved
85 Slab Fork
B-
73.4
550 49 Health Unresolved
86 Ceredo
B-
73.3
1K 59 Health Unresolved
87 Pruntytown
B-
72.8
2K 29 Health Unresolved
88 Odd
B-
72.6
575 10 Health Unresolved
89 Wheeling
B-
72
30K 36 Health Unresolved
90 Talcott
B-
71.8
1K 22 Health Unresolved
91 Capon Bridge
B-
70.9
700 45 Health Unresolved
92 Beaver
B-
70.8
5K 13 Health Unresolved
93 Augusta
B-
70.7
2K 37 Health Unresolved
94 Burnsville
B-
70.7
1K 63 Health Unresolved
95 Nettie
B-
70.2
4K 63 Health Unresolved
96 Mcmechen
B-
70
2K 79 Health Unresolved
97 Mcgraws
C+
68.8
4K 33 Health Unresolved
98 Friendly
C+
68.2
4K 173 Health Unresolved
99 Elizabeth
C+
66.9
2K 55 Health Unresolved
100 Frank
C+
66.1
504 83 Health Unresolved
101 Frank
C+
66.1
504 83 Health Unresolved
102 St. Marys
C+
65.8
5K 29 Health PFAS Unresolved
103 Hillsboro
C+
65.4
559 131 Health Unresolved
104 Kenova
C+
65.2
11K 81 Health Unresolved
105 Windsor Heights
C+
65.1
2K 83 Health Unresolved
106 Goshen
C
64.4
972 139 Health Unresolved
107 Cottageville
C
64.3
3K 38 Health Unresolved
108 Parsons
C
64.1
1K 125 Health Unresolved
109 Shepherdstown
C
63.8
4K 138 Health Unresolved
110 Parkersburg
C
63.2
44K 151 Health PFAS Unresolved
111 Adamsville
C
63.1
1K 68 Health Unresolved
112 Adamsville
C
63.1
1K 68 Health Unresolved
113 Mannington
C
63
4K 87 Health Unresolved
114 Chester
C
63
3K 103 Health Unresolved
115 Meadow Bridge
C
62.5
692 33 Health Unresolved
116 Mineralwells
C
62
6K 30 Health PFAS Unresolved
117 Coalwood
C
61.4
2K 85 Health Unresolved
118 Mount Hope
C
61.3
2K 26 Health Unresolved
119 Clover
C
61
976 60 Health Unresolved
120 Marlinton
C
60.5
2K 168 Health Unresolved
121 Vienna
C-
57.9
13K 180 Health Unresolved
122 Beverly
C-
57.7
2K 85 Unresolved
123 Buckhannon
C-
57.5
17K 128 Health Unresolved
124 Arnett
C-
57.1
7K 22 Health Unresolved
125 Williamstown
C-
56.6
3K 60 Health PFAS Unresolved
126 Mt Storm
D+
54.9
2K 88 Health Unresolved
127 Follansbee
D+
54.7
8K 96 Health Unresolved
128 Wallace
D+
54.1
3K 46 Health PFAS Unresolved
129 Ronceverte
D+
54
2K 25 Health Unresolved
130 Maybeury
D+
53.1
2K 87 Health Unresolved
131 Burlington
D+
52.8
793 203 Unresolved
132 Snowshoe Resort
D+
51.8
2K 63 Health Unresolved
133 Mason (Rr Name Mason City)
D+
51.6
2K 153 Health Unresolved
134 Inwood
D+
51.1
35K 119 Health Unresolved
135 Reedsville
D+
51
3K 160 Health Unresolved
136 Pennsboro
D+
51
2K 72 Health PFAS Unresolved
137 Crichton
D+
50.7
1K 75 Health Unresolved
138 Keyser
D+
50
6K 244 Health Unresolved
139 Cowen
D+
50
3K 170 Health Unresolved
140 Griffithsville
D
49.8
2K 57 Health Unresolved
141 West Hamlin
D
49.2
2K 232 Health Unresolved
142 Procious (Camp)
D
49
3K 317 Health Unresolved
143 Harpers Ferry
D
49
3K 380 Health Unresolved
144 Gauley Bridge
D
49
3K 224 Health Unresolved
145 Pineville
D
49
2K 274 Health Unresolved
146 Clay
D
49
2K 164 Health Unresolved
147 Gilbert
D
49
2K 256 Health Unresolved
148 Lumberport
D
49
2K 302 Health Unresolved
149 Middlebourne
D
49
1K 105 Health Unresolved
150 Cass
D
49
555 355 Health Unresolved
151 Justice
D
48.8
504 94 Health Unresolved
152 Bluewell
D
48.5
6K 182 Health Unresolved
153 Green Spring
D
48.5
1K 589 Health Unresolved
154 Logan
D
48
17K 128 Health Unresolved
155 Frametown
D
48
2K 488 Health Unresolved
156 Keyser
D
48
1K 201 Health Unresolved
157 Williamson
D
47.8
3K 148 Health Unresolved
158 Belva
D
47
4K 35 Health Unresolved
159 Hedgesville
D
47
4K 325 Health Unresolved
160 Sistersville
D
47
2K 237 Health Unresolved
161 New Haven
D
47
2K 148 Health Unresolved
162 Normantown
D
47
618 86 Health Unresolved
163 Wiley Ford
D
46.8
7K 956 Health Unresolved
164 Wiley Ford
D
46.8
7K 956 Health Unresolved
165 Elkins
D
46
15K 115 Health Unresolved
166 Glenville
D
46
5K 204 Health Unresolved
167 Oceana
D
46
4K 196 Health Unresolved
168 Harrisville
D
46
2K 66 Health Unresolved
169 Matewan
D
46
2K 58 Health Unresolved
170 Hambleton
D
46
2K 69 Health Unresolved
171 Hambleton
D
46
2K 69 Health Unresolved
172 Hambleton
D
46
2K 69 Health Unresolved
173 Paw Paw
D
46
2K 179 Health Unresolved
174 Grantsville
D
46
2K 318 Health Unresolved
175 Fort Gay (Cassville)
D
46
2K 138 Health Unresolved
176 Kermit
D
46
1K 198 Health Unresolved
177 Rowlesburg
D
46
680 163 Health Unresolved
178 Pine Grove
D
46
620 201 Health Unresolved
179 Valley Grove
D
46
610 94 Health Unresolved
180 English
D
45.5
2K 263 Health Unresolved
181 English
D
45.5
2K 263 Health Unresolved
182 Berwind
D
45.5
692 316 Health Unresolved
183 Canaan Valley
D
45.5
577 147 Health Unresolved
184 Maidsville
D
45.4
2K 62 Health Unresolved
185 Albright
D
45.2
9K 151 Health Unresolved
186 White Sulphur Springs
D
45.2
7K 129 Health Unresolved
187 Moorefield
D
45
7K 290 Health Unresolved
188 New Cumberland
D
45
3K 164 Health Unresolved
189 Franklin
D
45
3K 329 Health Unresolved
190 War
D
45
1K 330 Health Unresolved
191 Thomas
D
45
753 262 Health Unresolved
192 Clarksburg
F
44.9
19K 118 Health Unresolved
193 Wiley Ford
F
44.2
8K 1283 Health Unresolved
194 Mullens
F
44.2
4K 296 Health Unresolved
195 Worthington
F
44.2
951 158 Health Unresolved
196 Logan
F
44
25K 567 Health Unresolved
197 Shinnston
F
44
6K 189 Health Unresolved
198 Augusta
F
44
5K 137 Health Unresolved
199 Nutter Fort
F
44
4K 85 Health Unresolved
200 Rivesville
F
44
2K 208 Health Unresolved
201 Chapmanville
F
44
2K 97 Health Unresolved
202 Salem
F
44
2K 155 Health Unresolved
203 Farmington
F
44
768 133 Health Unresolved
204 Camden-On-Gauley (Corp/Rr Name
F
44
581 369 Health Unresolved
205 Fenwick
F
44
554 79 Health Unresolved
206 Wayne
F
43.8
6K 31 Health Unresolved
207 Terra Alta
F
43.5
3K 85 Health Unresolved
208 Boothsville
F
43.5
2K 70 Health Unresolved
209 Greenville
F
43.2
4K 152 Health Unresolved
210 Welch
F
43
3K 165 Health Unresolved
211 Ridgeley (Rr Name Ridgely)
F
43
2K 235 Health Unresolved
212 Gary
F
43
2K 199 Health Unresolved
213 Hartford City (Corporate Name
F
43
745 160 Health Unresolved
214 Ragland
F
43
621 87 Health Unresolved
215 Arthurdale
F
43
555 229 Health Unresolved
216 St. Albans
F
42.8
14K 100 Health Unresolved
217 Fairview
F
42.8
958 86 Health Unresolved
218 Lewisburg
F
42.4
12K 168 Health Unresolved
219 Ripley
F
42.2
12K 221 Health PFAS Unresolved
220 Naugatuck
F
42.2
2K 601 Health Unresolved
221 West Milford
F
42
7K 129 Health PFAS Unresolved
222 Mill Creek
F
42
5K 379 Health Unresolved
223 Berkeley Springs
F
42
4K 709 Health Unresolved
224 West Union
F
42
2K 134 Health Unresolved
225 Piedmont
F
42
847 409 Health Unresolved
226 Pax
F
42
762 119 Health Unresolved
227 Grafton
F
41.8
9K 86 Health Unresolved
228 Wardensville
F
41.5
1K 87 Health Unresolved
229 Alum Creek
F
41.2
4K 317 Health Unresolved
230 Charles Town
F
41
23K 1226 Health PFAS Unresolved
231 Wellsburg
F
41
7K 72 Health PFAS Unresolved
232 Philippi
F
41
6K 108 Health Unresolved
233 Paden City
F
41
3K 284 Health Unresolved
234 Rainelle
F
41
2K 82 Health Unresolved
235 Martinsburg
F
40.2
54K 385 Health Unresolved
236 Five Forks
F
40
2K 134 Health Unresolved
237 Cameron
F
40
962 128 Health Unresolved
238 Moundsville
F
39.5
16K 217 Health Unresolved
239 Morgantown
F
39.4
78K 1062 Health Unresolved
240 Point Pleasant
F
39
15K 347 Health Unresolved
241 Weirton
F
37.9
19K 141 Health PFAS Unresolved
242 Ravenswood
F
37.5
8K 147 Health PFAS Unresolved
243 New Martinsville
F
36.5
5K 112 Health PFAS Unresolved
244 Varney
F
36
3K 76 Health Unresolved
245 Fairmont
F
35.1
40K 241 Health Unresolved
246 Davis
F
35
977 213 Health Lead Unresolved
247 Lester
F
34
665 112 Health Unresolved
248 Richwood
F
32
2K 107 Health Lead Unresolved