Oregon Water Quality Rankings
213 cities ranked · Data from EPA SDWIS
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
Score distribution by range
State vs 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.
Top & bottom cities in Oregon
Best 10 cities
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 |