Skip to main content
WaterVerge

Oregon Water Quality Rankings

213 cities ranked · Data from EPA SDWIS

62.3
State avg score
213
Cities ranked
39%
A or B grade
46%
D or F grade
205
Health violations
25
PFAS detected

Oregon water quality overview

Oregon's drinking water quality is fair overall, with a state average score of 62.3 out of 100 — 12.2 points below the national average of 74.5. The median city score is 60, reflecting how water quality is distributed across the state's 213 ranked cities. 46% of cities scored a D or F, pointing to significant water quality challenges across much of the state. 83 cities did earn an A or B grade, showing that strong systems do exist. PFAS "forever chemicals" were detected in 25 of 213 cities (12%). Of those, 8 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 6 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. 205 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 Oregon cities scored

15%
23%
15%
23%
23%
A
33
15%
Excellent
B
50
23%
Good
C
33
15%
Fair
D
49
23%
Poor
F
48
23%
Failing

Score distribution by range

73 37 0
3
4
73
25
25
29
42
12
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
Oregon
62.3/100
B-
National avg
74.5/100
▼ 12.2 pts below national average

Water quality across Oregon

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

All 213 cities in Oregon

# City Grade Score Score Population Violations Issues
1 Sunriver
A+
96.8
4K 21 Health
2 Gearhart
A
93.6
2K 21 Health Unresolved
3 Mill City
A
93.4
2K 66 Unresolved
4 Crescent
A
93.3
900 15 Health Unresolved
5 Toledo
A
93.1
4K 24 Unresolved
6 Tualatin
A
92.6
28K 8 Unresolved
7 Christmas Valley
A
92.5
950 60 Health Unresolved
8 Seal Rock
A
92.4
6K 10 Health Unresolved
9 Lakeside
A
92.4
2K 55 Health
10 Donald
A
91
1K 39 Health Unresolved
11 Cove
A
90.5
550 14 Health Unresolved
12 Aumsville
A
90.2
4K 49 Health Unresolved
13 Depoe Bay
A-
89.9
1K 44 Health Unresolved
14 Phoenix
A-
89.4
6K 14 Unresolved
15 Hines
A-
89.4
2K 44 Health Unresolved
16 Gervais
A-
89.3
3K 15 Health Unresolved
17 Weston
A-
89.3
714 16 Health Unresolved
18 Florence
A-
88.6
14K 51 Health Unresolved
19 Willamina
A-
88.6
2K 82 Health Unresolved
20 Athena
A-
88.6
1K 38 Health Unresolved
21 Troutdale
A-
88.5
16K 50 Health Unresolved
22 Veneta
A-
88.3
6K 36 Health Unresolved
23 Echo
A-
87.9
632 17 Health Unresolved
24 John Day
A-
87.8
2K 13 Health Unresolved
25 Merrill
A-
87.7
907 37 Health Unresolved
26 Dayton
A-
87.6
3K 95 Health Unresolved
27 Elgin
A-
87.6
2K 32 Health Unresolved
28 Union
A-
87.1
2K 21 Health Unresolved
29 Rockaway Beach
A-
86.9
1K 93 Health Unresolved
30 Arlington
A-
86.8
628 18 Unresolved
31 Gleneden Beach
A-
86.3
6K 24 Health Unresolved
32 Pilot Rock
A-
86
1K 59 Health Unresolved
33 Sublimity
A-
85.3
3K 52 Health Unresolved
34 Stayton
B+
84.7
8K 41 Health Unresolved
35 Warrenton
B+
84.6
9K 121 Health Unresolved
36 Harbor
B+
84.2
3K 51 Health Unresolved
37 Mount Vernon
B+
83.5
510 93 Health Unresolved
38 Powers
B+
83.4
712 184 Health Unresolved
39 Forest Grove
B+
83
27K 41 Health Unresolved
40 Madras
B+
82.1
16K 160 Health Unresolved
41 Parkdale
B+
81.7
867 127 Health Unresolved
42 Wallowa
B+
81.7
840 38 Health Unresolved
43 Philomath
B+
81.6
5K 102 Health Unresolved
44 Heppner
B+
81.6
1K 61 Health Unresolved
45 Banks
B+
81.2
2K 186 Health Unresolved
46 Coburg
B+
81.2
1K 42 Health Unresolved
47 La Pine
B+
81.1
4K 22 Health Unresolved
48 Siletz
B+
81.1
2K 52 Health Unresolved
49 Mcminnville
B+
81
35K 83 Health Unresolved
50 Glide
B+
80.9
2K 116 Health Unresolved
51 Lincoln City
B+
80.7
21K 73 Health Unresolved
52 Halsey
B+
80.6
800 23 Health Unresolved
53 Condon
B+
80.5
775 67 Health Unresolved
54 Wood Village
B
80
4K 116 Health Unresolved
55 Manzanita
B
79.9
3K 83 Health Unresolved
56 Turner
B
79.6
3K 85 Health Unresolved
57 Malin
B
78.8
815 94 Health Unresolved
58 Bay City
B
78.6
1K 60 Health Unresolved
59 Independence
B
78.4
10K 138 Health Unresolved
60 Joseph
B
78
1K 72 Health Unresolved
61 Mt. Angel
B
77.7
4K 95 Health Unresolved
62 Netarts
B
77.4
2K 56 Health Unresolved
63 Columbia City
B
77.3
2K 58 Health Unresolved
64 Winston
B
76.9
8K 195 Health Unresolved
65 Sutherlin
B
76.8
8K 75 Health Unresolved
66 Neskowin
B
76.5
2K 84 Health Unresolved
67 Glendale
B
75.6
864 88 Health Unresolved
68 Rhododendron
B
75.5
980 166 Health Unresolved
69 Gresham
B
75.2
77K 69 Unresolved
70 Canyon City
B-
74.3
666 38 Health Unresolved
71 Dallas
B-
74.1
18K 41 Health Unresolved
72 Carlton
B-
73.7
2K 133 Health Unresolved
73 Talent
B-
73.6
6K 62 Health Unresolved
74 Falls City
B-
73.3
1K 155 Health Unresolved
75 Nyssa
B-
72.6
3K 75 Health Unresolved
76 Sherwood
B-
72
20K 226 Health Unresolved
77 Sweet Home
B-
71.4
10K 152 Health Unresolved
78 Lowell
B-
71.4
1K 72 Lead Unresolved
79 Ontario
B-
71.1
15K 154 Health Unresolved
80 La Grande
B-
71
14K 199 Health Unresolved
81 Prairie City
B-
70.7
841 72 Health Unresolved
82 Ophir
B-
70.6
2K 124 Health Unresolved
83 Odell
B-
70
6K 101 Health Unresolved
84 Oakridge
C+
69.3
3K 53 Health Unresolved
85 Cannon Beach
C+
69.3
2K 71 Health Unresolved
86 Boardman
C+
69.2
6K 166 Unresolved
87 Wilsonville
C+
68.3
26K 184 Health Unresolved
88 Eagle Point
C+
68
10K 60 Health Unresolved
89 Baker City
C+
67.4
10K 228 Health Unresolved
90 Creswell
C+
66.9
6K 124 Health Unresolved
91 Jefferson
C+
66.5
3K 161 Health Unresolved
92 Jacksonville
C+
66
3K 204 Health Unresolved
93 Adair Village
C
65
875 224 Health Unresolved
94 Sisters
C
64.9
6K 325 Health Unresolved
95 Cascade Locks
C
64.9
1K 59 Health Unresolved
96 Huntington
C
64.7
510 161 Health Unresolved
97 Tigard
C
64.2
63K 103 Health Unresolved
98 Oceanside
C
63.1
670 187 Health Unresolved
99 Silverton
C
62.7
11K 239 Health Unresolved
100 Stanfield
C
62.7
2K 306 Health Unresolved
101 Rogue River
C
62.2
3K 188 Health Unresolved
102 Scio
C
61.3
940 187 Health Unresolved
103 Vale
C
61.2
2K 121 Health Unresolved
104 Yoncalla
C
61
1K 253 Health Unresolved
105 Keizer
C
60.4
39K 315 Health Unresolved
106 Garibaldi
C
60.2
1K 76 Health Unresolved
107 Gladstone
C
60
12K 49 Health Unresolved
108 Tangent
C
60
649 352 Health Unresolved
109 Dufur
C-
59.8
643 165 Health Unresolved
110 Lafayette
C-
59.5
4K 219 Health Unresolved
111 Wamic
C-
59.2
1K 353 Health Unresolved
112 Reedsport
C-
59.1
5K 173 Health Unresolved
113 Antelope
C-
58.6
543 177 Health Unresolved
114 Canyonville
C-
58.3
2K 107 Health Unresolved
115 Drain
C-
58.3
1K 68 Health Unresolved
116 Corbett
C-
57.3
3K 201 Health Unresolved
117 Oakland
D+
54.4
1K 198 Health Unresolved
118 Enterprise
D+
53.1
3K 225 Health Unresolved
119 Welches
D+
53
2K 395 Health Unresolved
120 Pendelton
D+
52
1K 619 Health Unresolved
121 Dundee
D+
51.8
3K 322 Health PFAS Unresolved
122 Myrtle Creek
D+
51.2
7K 366 Health Lead Unresolved
123 Myrtle Point
D+
51
3K 351 Health Unresolved
124 Colton
D+
51
2K 326 Health Unresolved
125 Coos Bay
D+
50
35K 841 Health Unresolved
126 Hood River
D+
50
15K 455 Health Unresolved
127 Boring
D+
50
4K 723 Health Unresolved
128 Burns
D+
50
3K 631 Health Unresolved
129 Grand Ronde
D+
50
3K 262 Health Unresolved
130 Aurora
D+
50
3K 327 Health Unresolved
131 Chiloquin
D+
50
1K 281 Health Unresolved
132 Island City
D+
50
1K 109 Health Unresolved
133 Westport
D+
50
828 515 Health Unresolved
134 Maupin
D
49.8
560 133 Health Unresolved
135 Fairview
D
49.5
11K 301 Health Unresolved
136 Sheridan
D
49.5
8K 474 Health Unresolved
137 Harrisburg
D
49.5
4K 318 Health Unresolved
138 Oregon City
D
49
34K 106 Health Unresolved
139 Terrebonne
D
49
6K 331 Health Unresolved
140 Clatskanie
D
49
3K 1126 Health Unresolved
141 Irrigon
D
49
2K 141 Health Unresolved
142 Vernonia
D
49
2K 330 Health Unresolved
143 Gold Hill
D
49
1K 211 Health Unresolved
144 Mapleton
D
49
600 239 Health Unresolved
145 Umatilla
D
48.8
8K 292 Health Unresolved
146 Redmond
D
48.2
42K 993 Health Unresolved
147 Amity
D
48
4K 481 Health Unresolved
148 Clackamas
D
47.4
51K 532 Health Unresolved
149 Ashland
D
47.2
22K 601 Health Unresolved
150 Canby
D
47.1
19K 274 Health Unresolved
151 Brookings
D
47
7K 468 Health Unresolved
152 Central Point
D
46.6
21K 594 Health Unresolved
153 Lakeview
D
46
2K 101 Health Unresolved
154 Shady Cove
D
46
519 338 Health Unresolved
155 Monmouth
D
45.5
14K 140 Health Unresolved
156 Lake Oswego
D
45.4
48K 509 Health Unresolved
157 Waldport
D
45
5K 454 Health Unresolved
158 Gaston
D
45
3K 268 Health Unresolved
159 Rainier
D
45
3K 1167 Health Unresolved
160 Cave Junction
D
45
3K 523 Health Unresolved
161 Nehalem
D
45
2K 179 Health Unresolved
162 Port Orford
D
45
1K 374 Health Unresolved
163 Pacific City
D
45
1K 113 Health Unresolved
164 Otis
D
45
1K 281 Health Unresolved
165 Yachats
D
45
1K 168 Health Unresolved
166 Woodburn
F
44.5
30K 564 Health Unresolved
167 Brownsville
F
44.5
2K 281 Health Unresolved
168 Sandy
F
44
15K 1478 Health Unresolved
169 Cottage Grove
F
44
12K 1157 Health Unresolved
170 Seaside
F
44
8K 721 Health Unresolved
171 Warm Springs
F
44
4K 1114 Health Unresolved
172 Rickreall
F
44
2K 123 Health Unresolved
173 Scappoose
F
43.9
10K 1636 Health Unresolved
174 Cornelius
F
43.8
15K 186 Health Unresolved
175 Salem
F
43.6
217K 3309 Health Unresolved
176 Pendleton
F
43.6
18K 352 Health Unresolved
177 Astoria
F
43.5
18K 839 Health Unresolved
178 Grants Pass
F
43.4
40K 2789 Health Unresolved
179 Prineville
F
43.2
13K 1072 Health Unresolved
180 Milton-Freewater
F
43.2
7K 435 Health PFAS Unresolved
181 Hubbard
F
43.2
4K 322 Health Unresolved
182 Corvallis
F
43
63K 599 Health Unresolved
183 Lyons
F
43
2K 329 Health Unresolved
184 Albany
F
42.6
62K 921 Health Unresolved
185 Springfield
F
42.5
70K 285 Health PFAS Unresolved
186 Newberg
F
42.5
35K 3984 Health Unresolved
187 Molalla
F
42.5
12K 794 Health Unresolved
188 Newport
F
42.5
10K 546 Health Unresolved
189 Estacada
F
42.5
6K 635 Health Unresolved
190 Lebanon
F
42.2
20K 324 Health Unresolved
191 Riddle
F
42
2K 785 Health Unresolved
192 Yamhill
F
42
2K 326 Health Unresolved
193 St Helens
F
41.9
16K 995 Health Unresolved
194 Hillsboro
F
41.8
95K 317 Health Unresolved
195 Klamath Falls
F
41.8
43K 1458 Health PFAS Unresolved
196 Coquille
F
41.4
5K 632 Health Unresolved
197 Bend
F
41
134K 1731 Health PFAS Unresolved
198 West Linn
F
41
29K 380 Health Unresolved
199 Tillamook
F
41
11K 733 Health Unresolved
200 Junction City
F
41
7K 228 Health Unresolved
201 Beaverton
F
40.7
317K 208 Health Unresolved
202 Hermiston
F
40.6
21K 1292 Health PFAS Unresolved
203 Happy Valley
F
40.5
50K 298 Health PFAS Unresolved
204 The Dalles
F
40.5
18K 1081 Health Unresolved
205 Milwaukie
F
40
51K 380 Health PFAS Unresolved
206 Bandon
F
40
3K 656 Health Unresolved
207 Portland
F
39.4
752K 2021 Health Unresolved
208 Cloverdale
F
38.3
990 254 Health Unresolved
209 Gold Beach
F
37.5
3K 312 Health Unresolved
210 Roseburg
F
30
46K 569 Health Lead Unresolved
211 Medford
F
29.4
107K 604 Health Lead Unresolved
212 Mulino
F
29
790 217 Health Lead Unresolved
213 Eugene
F
28
180K 2141 Health Lead Unresolved