WaterVerge

Virginia Water Quality Rankings

230 cities ranked · Data from EPA SDWIS

78.9
State avg score
230
Cities ranked
77%
A or B grade
13%
D or F grade
198
Health violations
52
PFAS detected

Virginia water quality overview

Virginia's drinking water quality is good overall, with a state average score of 78.9 out of 100 — 4.7 points above the national average of 74.2. The median city score is 84.5, reflecting how water quality is distributed across the state's 230 ranked cities. 77% of Virginia cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 13 cities received a failing grade. PFAS "forever chemicals" were detected in 52 of 230 cities (23%). Of those, 16 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 1 city has 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. 198 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 Virginia cities scored

47%
30%
10%
A
108
47%
Excellent
B
69
30%
Good
C
23
10%
Fair
D
17
7%
Poor
F
13
6%
Failing

Score distribution by range

87 44 0
5
21
7
20
28
87
62
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
Virginia
78.9/100
B-
National avg
74.2/100
▲ 4.7 pts above national average

Water quality across Virginia

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

All 230 cities in Virginia

# City Grade Score Score Population Violations Issues
1 Fredericksburg City
A+
98.8
28K 1 Health
2 Lynchburg City
A+
98.3
81K 0 Zero violations
3 Collinsville
A+
97.2
30K 4 Health
4 Mitchells
A+
97
2K 0 Zero violations
5 Colonial Heights City
A+
96.6
18K 3 Health
6 Salem City
A+
96.1
26K 15
7 Tysons
A+
95.9
828 1
8 Radford City
A+
95.4
17K 14 Health
9 State Farm
A+
95.4
2K 12 Health Unresolved
10 Troy
A+
95.4
2K 3 Health
11 Gloucester
A+
95.1
11K 14 Health Unresolved
12 Emporia
A+
95.1
7K 3 Health
13 Williamsburg City
A
95
16K 11
14 Amelia
A+
95
3K 12 Health Unresolved
15 New Market
A
94.8
2K 15
16 La Crosse
A
94.8
850 6 Health
17 Winchester City
A
94.7
28K 20 Health Unresolved
18 Galax City
A
94.7
7K 38 Unresolved
19 King William
A
94.7
2K 6 Unresolved
20 Lovettsville
A
94.5
3K 36 Unresolved
21 Woodberry Forest
A
94.5
739 6 Unresolved
22 Appalachia
A
94.3
3K 27 Health Unresolved
23 Quinby
A
94.1
975 35 Health Unresolved
24 Waynesboro City
A
94
23K 10 Health Unresolved
25 Richmond City
A
93.8
229K 25 Health
26 Lexington City
A
93.6
8K 20 Health Unresolved
27 Farmville
A
93.4
8K 3 Unresolved
28 Richlands
A
93.3
5K 24 Health Unresolved
29 Quantico
A
93.3
650 6 Unresolved
30 South Hill
A
93.2
5K 13 Health Unresolved
31 Shenandoah
A
93.2
2K 24 Health Unresolved
32 Lexington
A
93.1
6K 52 Health Unresolved
33 Middletown
A
93.1
1K 12 Unresolved
34 Cedar Bluff
A
93
1K 16 Unresolved
35 Henrico
A
92.8
330K 4 Health Unresolved
36 Dayton
A
92.7
2K 14 Health Unresolved
37 Suffolk City
A
92.5
70K 43 Health Unresolved
38 Appomattox
A
92.4
2K 16 Health Unresolved
39 Warm Springs
A
92.2
3K 28 Health Unresolved
40 Craigsville
A
92
2K 5
41 Victoria
A
91.8
2K 13 Health Unresolved
42 Dryden
A
91.7
2K 10 Health Unresolved
43 Bristol City
A
91.5
20K 18 Unresolved
44 Coeburn
A
91.4
5K 25 Health Unresolved
45 Wakefield
A
91.4
1K 15 Health Unresolved
46 Hanover
A
91.3
59K 8 Health Unresolved
47 Manassas City
A
91.1
43K 15 Health
48 Rural Retreat
A
91.1
3K 26 Health Unresolved
49 Montross
A
91.1
2K 35 Health Unresolved
50 Manassas Park City
A
91
14K 23 Health Unresolved
51 Stuart
A
91
2K 16 Unresolved
52 Virginia Beach City
A
90.8
461K 37 Health Unresolved
53 Chilhowie
A
90.8
5K 13 Health Unresolved
54 Staunton City
A
90.6
26K 34 Health Unresolved
55 Portsmouth City
A
90.3
121K 35 Health Unresolved
56 Harrisonburg City
A
90.3
53K 34 Unresolved
57 Charlottesville City
A
90.3
48K 5 Unresolved
58 St. Paul
A
90.2
1K 30 Health Unresolved
59 Alexandria City
A
90.1
159K 4 Unresolved
60 Vint Hill
A
90.1
2K 7 Unresolved
61 Bracey
A
90
4K 6 Health Unresolved
62 Radford
A
90
2K 21 Health Unresolved
63 Blacksburg
A-
89.9
35K 2 Health Unresolved
64 Norton City
A-
89.9
4K 22
65 Martinsville City
A-
89.8
14K 11 Health Unresolved
66 Orange
A-
89.8
5K 27 Health Unresolved
67 Hampden-Sydney
A-
89.8
1K 15 Health Unresolved
68 Hopewell City
A-
89.5
30K 30 Health Unresolved
69 Ruther Glen
A-
89.5
5K 26 Health Unresolved
70 Altavista
A-
89.5
4K 19 Health Unresolved
71 West Point
A-
89.5
3K 8 Health Unresolved
72 Dilwyn
A-
89.4
890 34 Health Unresolved
73 Franklin City
A-
89.3
9K 52 Health Unresolved
74 Fincastle
A-
89.3
2K 28 Unresolved
75 Big Stone Gap
A-
89
9K 28 Health Unresolved
76 Tappahannock
A-
88.8
2K 21 Health Unresolved
77 New Castle
A-
88.8
1K 6 Health Unresolved
78 Hamilton
A-
88.7
2K 10 PFAS Unresolved
79 Danville City
A-
88.5
43K 4 Health PFAS
80 Petersburg City
A-
88.5
33K 9 Health Unresolved
81 Franklin
A-
88.4
570 97 Health Unresolved
82 Purcellville
A-
88.3
9K 13 PFAS Unresolved
83 Newport News
A-
88.3
529 32 Health Unresolved
84 Chincoteague
A-
88.1
3K 6 Health Unresolved
85 Mcgaheysville
A-
88.1
560 6 Health Unresolved
86 Bluefield
A-
88
6K 56 Health Unresolved
87 Warsaw
A-
88
2K 17 Health Unresolved
88 Urbanna
A-
88
924 20 Health Unresolved
89 Buena Vista City
A-
87.9
7K 12 Health Unresolved
90 Surry
A-
87.8
850 29 Health Unresolved
91 Round Hill
A-
87.5
5K 16 Health PFAS Unresolved
92 Strasburg
A-
87.3
7K 23 Health Unresolved
93 Hot Springs
A-
87.3
2K 7 Health Unresolved
94 Gate City
A-
87.1
2K 47 Health Unresolved
95 Ashburn
A-
87
335K 14 Health Unresolved
96 Blackstone
A-
87
6K 29 Health Unresolved
97 Leesburg
A-
86.9
69K 37 Health Unresolved
98 Remington
A-
86.9
2K 74 Health Unresolved
99 Saltville
A-
86.7
2K 8 Unresolved
100 Onancock
A-
86.2
2K 50 Health Unresolved
101 Easvtille
A-
86
1K 22 Health Unresolved
102 Covington
A-
85.7
9K 18 Health Unresolved
103 Newport News City
A-
85.6
424K 38 Health PFAS Unresolved
104 Winchester
A-
85.6
47K 38 Health Unresolved
105 Saluda
A-
85.6
2K 1 Unresolved
106 Kenbridge
A-
85.6
1K 11 Health Unresolved
107 Waverly
A-
85.5
4K 27 Health Unresolved
108 Stephens City
A-
85.1
2K 17 Unresolved
109 Windsor
B+
84.6
3K 45 Health Unresolved
110 Cumberland
B+
84.6
2K 3 Unresolved
111 Buchanan
B+
84.6
1K 9 Health Unresolved
112 Hurt
B+
84.6
1K 25 Health Unresolved
113 Rich Creek
B+
84.6
960 83 Health Unresolved
114 Abingdon
B+
84.5
48K 28 Health Unresolved
115 Fort Belvoir
B+
84.5
39K 10 Health PFAS Unresolved
116 Irvington
B+
84.5
583 36 Health Unresolved
117 Honaker
B+
84.4
2K 14 Health Unresolved
118 Brookneal
B+
84.3
2K 54 Health Unresolved
119 Elkton
B+
84.2
3K 7 Health Unresolved
120 Kilmarnock
B+
84.2
2K 21 Health Unresolved
121 Vienna
B+
84
30K 5 Health Unresolved
122 Clarksville
B+
83.9
1K 56 Health Unresolved
123 Parksley
B+
83.7
1K 100 Health Unresolved
124 Harrisonburg
B+
83.5
23K 38 Health Unresolved
125 Tazewell
B+
83.4
5K 39 Health Unresolved
126 Colonial Beach
B+
83.3
5K 33 Health Unresolved
127 Chase City
B+
83.2
2K 46 Health Unresolved
128 Verona
B+
83
40K 72 Health Unresolved
129 Yorktown
B+
83
5K 85 Health Unresolved
130 Petersburg
B+
82.8
9K 34 Health Unresolved
131 Alexandria
B+
82.6
3K 45 Health Unresolved
132 Bland
B+
82.6
2K 48 Health Unresolved
133 Rocky Mount
B+
82.5
6K 50 Health Unresolved
134 Charlotte Courthouse
B+
82.5
2K 31 Health Unresolved
135 Bremo Bluff
B+
82.4
2K 25 Health Unresolved
136 Ivor
B+
82.4
766 15 Health Unresolved
137 Roanoke City
B+
82.2
183K 4 Health PFAS Unresolved
138 Floyd
B+
81.6
2K 32 Health Unresolved
139 Amherst
B+
81.5
2K 60 Health Unresolved
140 Woodbridge
B+
81.2
307K 4 Health PFAS Unresolved
141 Knott'S Island
B+
81
559 117 Health Unresolved
142 Knott'S Island
B+
81
559 117 Health Unresolved
143 Norfolk City
B+
80.9
291K 19 Health PFAS Unresolved
144 Brunswick
B+
80.8
731 52 Health Unresolved
145 Chesterfield
B+
80.7
390K 52 Health Unresolved
146 Wallops Island
B+
80.6
2K 22 Health Unresolved
147 Hampton City
B+
80.3
11K 28 Health PFAS Unresolved
148 Rappahannock Academy
B+
80.3
2K 102 Health Unresolved
149 Timberville
B+
80.1
4K 48 Health Unresolved
150 Goochland
B
79.5
9K 56 Health Unresolved
151 New Kent
B
79.4
16K 39 Health Unresolved
152 Stanley
B
79.3
4K 23 Health Unresolved
153 Independence
B
79.2
2K 63 Health Unresolved
154 Hillsville
B
79
13K 111 Health Unresolved
155 Arlington
B
78.2
216K 88 Health Unresolved
156 Troutville
B
78.1
577 38 Health Unresolved
157 Marion
B
77.9
17K 103 Health Unresolved
158 Grottoes
B
77.5
4K 63 Health Unresolved
159 Wytheville
B
77.2
14K 61 Health Unresolved
160 Drakes Branch
B
76.7
530 18 Health Unresolved
161 Wise
B
76.5
21K 76 Health Unresolved
162 South Boston
B
76.4
10K 147 Health Unresolved
163 Bridgewater
B
76.1
6K 54 Unresolved
164 Keysville
B
76.1
800 40 Health Unresolved
165 Montvale
B
76
773 64 Health Unresolved
166 Herndon
B
75.5
1.1M 23 Health PFAS Unresolved
167 Pennington Gap
B
75.5
6K 43 Health Unresolved
168 Broadway
B
75.2
4K 51 Health
169 Ruckersville
B
75
9K 48 Health Unresolved
170 Mineral
B
75
503 36 Health Unresolved
171 Stafford
B-
74.8
124K 108 Health PFAS Unresolved
172 Madison Heights
B-
74.6
15K 48 Health Unresolved
173 Clifton Forge
B-
74.3
4K 80 Health Unresolved
174 Gretna
B-
72.4
3K 23 Health Unresolved
175 Bedford
B-
71.8
40K 177 Health Unresolved
176 Buckingham
B-
71.7
6K 26 Health Unresolved
177 Culpeper
B-
71.2
24K 84 Health Unresolved
178 Crewe
C+
69.7
2K 21 Health Unresolved
179 North Tazewell
C+
69.5
15K 152 Health Unresolved
180 Emporia City
C+
69.4
8K 37 Health Unresolved
181 Gordonsville
C+
69.2
3K 82 Health Unresolved
182 Jonesville
C+
67.1
11K 177 Health Unresolved
183 Prince George
C+
66.6
11K 194 Health Unresolved
184 Courtland
C+
66.5
4K 144 Health Unresolved
185 Berryville
C+
66.3
6K 42 Health Unresolved
186 Pembroke
C+
65.9
1K 85 Health Unresolved
187 Fredericksburg
C
64.5
97K 163 Health Unresolved
188 Exmore
C
64.4
2K 233 Health Unresolved
189 Narrows
C
64.2
2K 88 Unresolved
190 Dahlgren
C
63.2
11K 162 Health Unresolved
191 Suffolk
C
63
872 116 Health Unresolved
192 Vansant
C
62.7
20K 52 Health Unresolved
193 Pooler
C
62.1
1K 65 Lead Unresolved
194 Edinburg
C
61.6
3K 122 Health Unresolved
195 Mcincr, Mcb Quantico
C
61.4
28K 69 Health PFAS Unresolved
196 Lynchburg
C
60.9
25K 161 Health Unresolved
197 Moneta
C
60.8
1K 182 Health Unresolved
198 Charles City
C-
59.7
611 103 Health Unresolved
199 Isle Of Wight
C-
59.3
11K 183 Health Unresolved
200 Covington City
C-
58.8
6K 54 Health Unresolved
201 Sugar Grove
D+
51.9
1K 74 Health Unresolved
202 Woodstock
D+
50.4
10K 40 Health Unresolved
203 Bowling Green
D+
50
1K 50 Health Unresolved
204 Cleveland
D+
50
563 151 Health Unresolved
205 Richmond
D
49
3K 282 Health Unresolved
206 Madison
D
47.9
15K 180 Health Unresolved
207 Luray
D
47.5
5K 581 Health Unresolved
208 Williamsburg
D
47.4
60K 119 Health Unresolved
209 Pearisburg
D
47
5K 411 Health Unresolved
210 Pulaski
D
46
20K 207 Health Unresolved
211 Mount Jackson
D
46
4K 644 Health Unresolved
212 Stanardsville
D
46
2K 307 Health Unresolved
213 Dublin
D
45.6
7K 52 Health Unresolved
214 Lawrenceville
D
45.4
9K 103 Health Unresolved
215 Clintwood
D
45.2
16K 73 Health Unresolved
216 Louisa
D
45
10K 138 Health Unresolved
217 King George
D
45
885 223 Health Unresolved
218 Charlottesville
F
43.9
92K 405 Health Unresolved
219 Weber City
F
43.5
13K 172 Health Unresolved
220 Smithfield
F
43.3
9K 158 Health Unresolved
221 Front Royal
F
42.9
18K 161 Health Unresolved
222 Lebanon
F
42.7
16K 126 Health Unresolved
223 Chatham
F
42.5
11K 157 Health Unresolved
224 Roanoke
F
42.2
12K 785 Health Unresolved
225 Chesapeake City
F
42
201K 360 Health Unresolved
226 Rockville
F
39.7
72K 1898 Health Unresolved
227 Hopewell
F
38.6
124K 421 Health PFAS Unresolved
228 Christiansburg
F
38.3
36K 179 Health Unresolved
229 Warrenton
F
36
30K 273 Health PFAS Unresolved
230 Lovingston
F
35
10K 462 Health PFAS Unresolved