Colorado Water Quality Rankings
246 cities ranked · Data from EPA SDWIS
Colorado water quality overview
Colorado's drinking water quality is fair overall, with a state average score of 66.1 out of 100 — 8.1 points below the national average of 74.2. The median city score is 69.5, reflecting how water quality is distributed across the state's 246 ranked cities. 38% of cities scored a D or F, pointing to significant water quality challenges across much of the state. 119 cities did earn an A or B grade, showing that strong systems do exist. PFAS "forever chemicals" were detected in 67 of 246 cities (27%). Of those, 10 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 3 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. 206 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 Colorado cities scored
Score distribution by range
State vs national average
Water quality across Colorado
Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.
Top & bottom cities in Colorado
Best 10 cities
All 246 cities in Colorado
| # | City | Grade | Score | Score | Population | Violations | Issues |
|---|---|---|---|---|---|---|---|
| 1 | Pelham | A+ | 96.8 | 1K | 4 | ||
| 2 | Northglenn | A+ | 95.6 | 49K | 7 | ||
| 3 | Gypsum | A+ | 95 | 15K | 49 | Health Unresolved | |
| 4 | Sanford | A | 94.2 | 850 | 52 | Unresolved | |
| 5 | Vail | A | 93.9 | 52K | 22 | ||
| 6 | Niwot | A | 93.7 | 20K | 70 | Health Unresolved | |
| 7 | Commerce City | A | 93.2 | 74K | 0 | Zero violations | |
| 8 | Clifton | A | 92.5 | 35K | 16 | Health Unresolved | |
| 9 | Severance | A | 92.3 | 12K | 10 | Unresolved | |
| 10 | Des Plaines | A | 92.3 | 702 | 9 | Unresolved | |
| 11 | Manitou Springs | A | 92 | 7K | 43 | Health Unresolved | |
| 12 | Erie | A | 91.6 | 40K | 38 | Health | |
| 13 | Superior | A | 91.5 | 18K | 53 | Health Unresolved | |
| 14 | Eads | A | 91.4 | 656 | 85 | Health Unresolved | |
| 15 | Tabernash | A | 91.3 | 564 | 35 | ||
| 16 | Byers | A | 90.6 | 1K | 8 | Health Unresolved | |
| 17 | Dubuque | A | 90.4 | 548 | 8 | Unresolved | |
| 18 | Zion | A | 90.3 | 624 | 8 | ||
| 19 | Usaf Academy | A | 90.2 | 17K | 25 | Health Unresolved | |
| 20 | Pierce | A | 90.2 | 1K | 65 | Health Unresolved | |
| 21 | Edgewater | A- | 89.8 | 5K | 4 | Unresolved | |
| 22 | Bennett | A- | 89.3 | 4K | 19 | Health Unresolved | |
| 23 | Fort Morgan | A- | 89.2 | 20K | 49 | Health Unresolved | |
| 24 | Longmont | A- | 89 | 107K | 46 | Health Unresolved | |
| 25 | Louisville | A- | 88.7 | 21K | 42 | Health Unresolved | |
| 26 | Parachute | A- | 88.7 | 2K | 40 | Health Unresolved | |
| 27 | Penrose | A- | 88.6 | 3K | 24 | Health Unresolved | |
| 28 | Collbran | A- | 88.6 | 678 | 7 | Unresolved | |
| 29 | Kersey | A- | 88.3 | 2K | 16 | Health Unresolved | |
| 30 | Dacono | A- | 88.1 | 7K | 8 | Health Unresolved | |
| 31 | New Castle | A- | 88 | 6K | 127 | Health Unresolved | |
| 32 | Diamond | A- | 87.9 | 543 | 2 | Unresolved | |
| 33 | La Porte | A- | 87.8 | 4K | 18 | Health Unresolved | |
| 34 | Georgetown | A- | 87.7 | 5K | 38 | Health Unresolved | |
| 35 | Gainesville | A- | 87.7 | 1K | 23 | Health Unresolved | |
| 36 | Nederland | A- | 87.6 | 2K | 26 | Health Unresolved | |
| 37 | Swink | A- | 87.6 | 660 | 15 | Health Unresolved | |
| 38 | Black Hawk | A- | 87.5 | 15K | 97 | Unresolved | |
| 39 | Simla | A- | 87.3 | 618 | 20 | Health Unresolved | |
| 40 | Lake City | A- | 87.2 | 654 | 20 | Health Unresolved | |
| 41 | Deer Trail | A- | 87 | 2K | 146 | Health Unresolved | |
| 42 | Firestone | A- | 86.9 | 28K | 16 | Unresolved | |
| 43 | Flagler | A- | 86.8 | 2K | 88 | Health Unresolved | |
| 44 | Hot Sulphur Springs | A- | 86.8 | 687 | 27 | Health Unresolved | |
| 45 | Keenesburg | A- | 86.7 | 5K | 110 | Health Unresolved | |
| 46 | Poncha Springs | A- | 86.7 | 1K | 11 | Health Unresolved | |
| 47 | Hastings | A- | 86.7 | 738 | 4 | Unresolved | |
| 48 | Center | A- | 86.3 | 3K | 37 | Unresolved | |
| 49 | Lochbuie | A- | 86.2 | 7K | 40 | Health Unresolved | |
| 50 | Limon | A- | 86.2 | 6K | 26 | Health Unresolved | |
| 51 | Mount Crested Butte | A- | 86.2 | 4K | 38 | Unresolved | |
| 52 | Kiowa | A- | 85.8 | 910 | 26 | Unresolved | |
| 53 | Fort Carson | A- | 85.7 | 48K | 6 | ||
| 54 | Delta | A- | 85.7 | 9K | 5 | Health Unresolved | |
| 55 | Silverton | A- | 85.4 | 2K | 11 | Health Unresolved | |
| 56 | Central City | A- | 85.2 | 4K | 17 | Health Unresolved | |
| 57 | Breckenridge | B+ | 84.9 | 28K | 62 | Health Unresolved | |
| 58 | Gilcrest | B+ | 84.9 | 1K | 7 | Health Unresolved | |
| 59 | Castle Pines | B+ | 84.8 | 13K | 72 | Unresolved | |
| 60 | Federal Heights | B+ | 84.8 | 12K | 1 | Unresolved | |
| 61 | Lucerne | B+ | 84.2 | 16K | 1 | Unresolved | |
| 62 | Wray | B+ | 84.2 | 2K | 34 | Unresolved | |
| 63 | Log Lane Village | B+ | 83.9 | 1K | 22 | Health Unresolved | |
| 64 | Hillrose | B+ | 83.8 | 5K | 22 | Health Unresolved | |
| 65 | Arvada | B+ | 83.5 | 173K | 7 | Health Unresolved | |
| 66 | Conifer | B+ | 83.5 | 2K | 66 | Health Unresolved | |
| 67 | Platteville | B+ | 83.4 | 3K | 16 | Unresolved | |
| 68 | Canon City | B+ | 83 | 39K | 78 | Health Unresolved | |
| 69 | Copper Mountain | B+ | 82.8 | 6K | 3 | Health Unresolved | |
| 70 | Springfield | B+ | 82.8 | 1K | 11 | Health Unresolved | |
| 71 | Minturn | B+ | 82.5 | 1K | 16 | Health Unresolved | |
| 72 | Grand Lake | B+ | 82.3 | 3K | 80 | Health Unresolved | |
| 73 | Nathrop | B+ | 82.2 | 638 | 107 | Health Unresolved | |
| 74 | Las Animas | B+ | 81.8 | 2K | 38 | Health Unresolved | |
| 75 | Decatur | B+ | 81.7 | 500 | 10 | Unresolved | |
| 76 | Austin | B+ | 81.3 | 3K | 23 | Unresolved | |
| 77 | Ault | B+ | 81.2 | 4K | 7 | Unresolved | |
| 78 | West Columbia | B+ | 80.6 | 1K | 16 | Health Unresolved | |
| 79 | Evans | B+ | 80 | 21K | 22 | Unresolved | |
| 80 | Manassa | B | 79.6 | 976 | 110 | Health Unresolved | |
| 81 | Grand Junction | B | 79 | 119K | 63 | Health Unresolved | |
| 82 | Johnstown | B | 79 | 25K | 94 | Health Unresolved | |
| 83 | Olathe | B | 79 | 3K | 5 | Unresolved | |
| 84 | Walden | B | 78.9 | 652 | 17 | Health Unresolved | |
| 85 | La Jara | B | 78.7 | 825 | 79 | Unresolved | |
| 86 | Broomfield | B | 78.5 | 110K | 60 | Health Unresolved | |
| 87 | Creede | B | 78.2 | 2K | 28 | Unresolved | |
| 88 | Cheyenne Wells | B | 78 | 840 | 136 | Health Unresolved | |
| 89 | Rockvale | B | 77.8 | 504 | 23 | Health Unresolved | |
| 90 | Craig | B | 77.7 | 9K | 41 | Unresolved | |
| 91 | Milliken | B | 77.6 | 9K | 117 | Unresolved | |
| 92 | Cripple Creek | B | 77.5 | 3K | 67 | Health Unresolved | |
| 93 | Dolores | B | 77.4 | 15K | 27 | Health Unresolved | |
| 94 | Elizabeth | B | 77.3 | 5K | 128 | Health Unresolved | |
| 95 | Akron | B | 77.1 | 2K | 77 | Health Unresolved | |
| 96 | Rock Springs | B | 77 | 1K | 35 | Health Unresolved | |
| 97 | Fowler | B | 76.1 | 1K | 46 | Health Unresolved | |
| 98 | Del Norte | B | 75.9 | 1K | 96 | Health Unresolved | |
| 99 | Williamsburg | B | 75.8 | 775 | 37 | Unresolved | |
| 100 | Indian Hills | B | 75.5 | 1K | 34 | Health Unresolved | |
| 101 | Idaho Springs | B | 75.2 | 10K | 40 | Health Unresolved | |
| 102 | Lamar | B- | 74.8 | 8K | 140 | Health Unresolved | |
| 103 | Eaton | B- | 74.6 | 7K | 13 | Health Unresolved | |
| 104 | Westcliffe | B- | 74.5 | 2K | 20 | Unresolved | |
| 105 | Hugo | B- | 74.4 | 885 | 41 | Health Unresolved | |
| 106 | Julesburg | B- | 73.9 | 1K | 19 | Health Unresolved | |
| 107 | Wellington | B- | 73.8 | 16K | 71 | Health Unresolved | |
| 108 | El Jebel | B- | 73.8 | 2K | 34 | Health Unresolved | |
| 109 | Frederick | B- | 73.6 | 18K | 19 | Health Unresolved | |
| 110 | Woodland | B- | 73 | 9K | 42 | Health Unresolved | |
| 111 | Mulberry | B- | 73 | 764 | 30 | Health Unresolved | |
| 112 | Norwood | B- | 72.8 | 2K | 95 | Health Unresolved | |
| 113 | Snowmass Village | B- | 72.7 | 6K | 18 | Health Unresolved | |
| 114 | Crestone | B- | 72.3 | 2K | 77 | Health Unresolved | |
| 115 | Highlands Ranch | B- | 71.5 | 105K | 47 | Unresolved | |
| 116 | Moffat | B- | 71.2 | 580 | 85 | Health Unresolved | |
| 117 | Pueblo West | B- | 71 | 30K | 64 | Health Unresolved | |
| 118 | Peyton | B- | 71 | 14K | 115 | Health Unresolved | |
| 119 | Golden | B- | 70.5 | 55K | 175 | Health Unresolved | |
| 120 | Morrison | C+ | 69.9 | 10K | 167 | Health Unresolved | |
| 121 | Holyoke | C+ | 69.9 | 3K | 50 | Health Unresolved | |
| 122 | Otis | C+ | 69.9 | 600 | 180 | Health Unresolved | |
| 123 | Rangely | C+ | 69.8 | 2K | 66 | Health Unresolved | |
| 124 | Meeker | C+ | 69.5 | 3K | 110 | Health Unresolved | |
| 125 | Debeque | C+ | 69.4 | 911 | 102 | Health Unresolved | |
| 126 | Lasalle | C+ | 69.2 | 2K | 27 | Health Unresolved | |
| 127 | Florence | C+ | 68.8 | 8K | 121 | Health Unresolved | |
| 128 | Ordway | C+ | 68.6 | 2K | 114 | Health Unresolved | |
| 129 | Sedalia | C+ | 68.4 | 525 | 183 | Health Unresolved | |
| 130 | Empire | C+ | 68.1 | 500 | 52 | Health Unresolved | |
| 131 | Dillon | C+ | 67.8 | 9K | 34 | Unresolved | |
| 132 | Eagle | C+ | 67.4 | 8K | 134 | Health Unresolved | |
| 133 | Yuma | C+ | 65.5 | 4K | 175 | Health Unresolved | |
| 134 | Berthoud | C+ | 65.2 | 40K | 82 | Health PFAS Unresolved | |
| 135 | Kremmling | C | 64.7 | 2K | 64 | Health Unresolved | |
| 136 | Gunnison | C | 63.7 | 11K | 100 | Health PFAS Unresolved | |
| 137 | Edwards | C | 63.5 | 2K | 145 | Health Unresolved | |
| 138 | Mancos | C | 62.7 | 3K | 109 | Health Unresolved | |
| 139 | Keystone | C | 61.9 | 11K | 69 | Health PFAS Lead Unresolved | |
| 140 | Fairplay | C | 61.8 | 1K | 114 | Health Unresolved | |
| 141 | Bailey | C | 61.8 | 783 | 111 | Health Unresolved | |
| 142 | Haxtun | C | 60.7 | 963 | 225 | Health Unresolved | |
| 143 | Dove Creek | C- | 59 | 850 | 53 | Health Unresolved | |
| 144 | Naturita | C- | 59 | 585 | 75 | Health Unresolved | |
| 145 | Clark | C- | 59 | 511 | 107 | Health Unresolved | |
| 146 | Palisade | C- | 57.9 | 3K | 163 | Health Unresolved | |
| 147 | Stratton | C- | 57.9 | 960 | 138 | Health Unresolved | |
| 148 | Crested Butte | C- | 57.8 | 6K | 241 | Health Unresolved | |
| 149 | Fraser | C- | 57.5 | 5K | 270 | Unresolved | |
| 150 | Ouray | C- | 57.4 | 1K | 114 | Health Unresolved | |
| 151 | Sterling | C- | 56.6 | 15K | 159 | Health Unresolved | |
| 152 | Granby | C- | 55.8 | 5K | 256 | Health Unresolved | |
| 153 | Burlington | C- | 55.8 | 4K | 317 | Health Unresolved | |
| 154 | Silverthorne | D+ | 54.1 | 12K | 382 | Health Unresolved | |
| 155 | Ridgway | D+ | 53.7 | 1K | 91 | Health Unresolved | |
| 156 | Walsh | D+ | 53.1 | 650 | 44 | Health Unresolved | |
| 157 | Wiley | D+ | 52 | 2K | 627 | Health Unresolved | |
| 158 | Perth (T) | D+ | 52 | 500 | 750 | Health Unresolved | |
| 159 | Larkspur | D+ | 51.5 | 4K | 95 | Health Unresolved | |
| 160 | Monte Vista | D+ | 51 | 5K | 679 | Health Unresolved | |
| 161 | Woody Creek | D+ | 50.5 | 544 | 277 | Health Unresolved | |
| 162 | Wiggins | D+ | 50 | 2K | 209 | Health Unresolved | |
| 163 | Calhan | D+ | 50 | 1K | 372 | Health Unresolved | |
| 164 | Holly | D+ | 50 | 1K | 244 | Health Unresolved | |
| 165 | Pine Bluffs | D+ | 50 | 1K | 193 | Health Unresolved | |
| 166 | Pine Bluffs | D+ | 50 | 1K | 193 | Health Unresolved | |
| 167 | Manzanola | D+ | 50 | 967 | 602 | Health Unresolved | |
| 168 | Saguache | D+ | 50 | 504 | 151 | Health Unresolved | |
| 169 | Englewood | D | 49.8 | 100K | 203 | Health Unresolved | |
| 170 | Aspen | D | 49.5 | 33K | 210 | Health Unresolved | |
| 171 | Falcon | D | 49.2 | 19K | 681 | Health Unresolved | |
| 172 | Hayden | D | 49.2 | 4K | 144 | Health Unresolved | |
| 173 | Basalt | D | 49 | 8K | 529 | Health Unresolved | |
| 174 | Bayfield | D | 49 | 6K | 365 | Health Unresolved | |
| 175 | Walsenburg | D | 49 | 4K | 390 | Health Unresolved | |
| 176 | Watkins | D | 49 | 4K | 159 | Health Unresolved | |
| 177 | Oak Creek | D | 49 | 2K | 132 | Health Unresolved | |
| 178 | Beulah | D | 49 | 927 | 220 | Health Unresolved | |
| 179 | Windsor | D | 48.8 | 30K | 1144 | Health Unresolved | |
| 180 | Paonia | D | 48.5 | 4K | 561 | Health Unresolved | |
| 181 | Redvale | D | 48 | 10K | 181 | PFAS Unresolved | |
| 182 | Hudson | D | 48 | 4K | 973 | Health Unresolved | |
| 183 | Leadville | D | 47.5 | 8K | 500 | Health Unresolved | |
| 184 | Alamosa | D | 47.2 | 13K | 476 | Health Unresolved | |
| 185 | Cortez | D | 47.2 | 10K | 158 | Health Unresolved | |
| 186 | Winter Park | D | 47 | 12K | 272 | Health Unresolved | |
| 187 | Strasburg | D | 47 | 2K | 181 | Health Unresolved | |
| 188 | Fort Collins | D | 46.8 | 304K | 121 | Health Unresolved | |
| 189 | Estes Park | D | 46.4 | 22K | 225 | Health Unresolved | |
| 190 | Rifle | D | 46.2 | 11K | 404 | Health Unresolved | |
| 191 | Westminster | D | 46 | 204K | 115 | Health Unresolved | |
| 192 | Trinidad | D | 46 | 13K | 288 | Health Unresolved | |
| 193 | Glendale | D | 46 | 7K | 213 | Health Unresolved | |
| 194 | Woodland Park | D | 46 | 2K | 523 | Health Unresolved | |
| 195 | San Luis | D | 46 | 1K | 242 | Health Unresolved | |
| 196 | South Fork | D | 46 | 1K | 255 | Health Unresolved | |
| 197 | Rye | D | 46 | 745 | 257 | Health Unresolved | |
| 198 | Salida | D | 45.8 | 6K | 225 | Health Unresolved | |
| 199 | Wheat Ridge | D | 45 | 41K | 347 | Health Unresolved | |
| 200 | Fort Lupton | D | 45 | 14K | 162 | Health Unresolved | |
| 201 | Cedaredge | D | 45 | 9K | 513 | Health Unresolved | |
| 202 | Telluride | D | 45 | 9K | 400 | Health Unresolved | |
| 203 | Lyons | D | 45 | 4K | 116 | Health Unresolved | |
| 204 | Palmer Lake | D | 45 | 3K | 151 | Health Unresolved | |
| 205 | Towoac | D | 45 | 2K | 436 | Health Unresolved | |
| 206 | Nucla | D | 45 | 875 | 134 | Health Unresolved | |
| 207 | Granada | D | 45 | 515 | 238 | Health Unresolved | |
| 208 | Divide | F | 44.5 | 3K | 837 | Health Unresolved | |
| 209 | Greeley | F | 44.1 | 141K | 166 | Health Unresolved | |
| 210 | Frisco | F | 44 | 5K | 546 | Health Unresolved | |
| 211 | Loveland | F | 43.8 | 98K | 336 | Health Unresolved | |
| 212 | Buena Vista | F | 43.5 | 7K | 526 | Health Unresolved | |
| 213 | Boulder | F | 43.4 | 171K | 116 | Health Unresolved | |
| 214 | Parker | F | 43.4 | 105K | 499 | Health PFAS Unresolved | |
| 215 | La Junta | F | 43.2 | 10K | 715 | Health Unresolved | |
| 216 | Administrative Contact | F | 43.2 | 4K | 383 | Health Unresolved | |
| 217 | Silt | F | 43 | 4K | 173 | Health Unresolved | |
| 218 | Lafayette | F | 42.6 | 32K | 461 | Health Unresolved | |
| 219 | Steamboat Springs | F | 42.6 | 30K | 607 | Health Unresolved | |
| 220 | Montrose | F | 42.2 | 52K | 474 | Health Unresolved | |
| 221 | Carbondale | F | 42.2 | 8K | 1470 | Health Unresolved | |
| 222 | Pagosa Springs | F | 42 | 12K | 285 | Health Unresolved | |
| 223 | Colorado City | F | 42 | 3K | 132 | Health Unresolved | |
| 224 | Ft Morgan | F | 42 | 705 | 176 | Health Unresolved | |
| 225 | Fountain | F | 41.9 | 26K | 204 | Health Unresolved | |
| 226 | La Veta | F | 41.9 | 1K | 141 | Health Unresolved | |
| 227 | Monument | F | 41.8 | 31K | 341 | Health Unresolved | |
| 228 | Evergreen | F | 41.8 | 17K | 178 | Health Unresolved | |
| 229 | Antonito | F | 41.5 | 1K | 399 | Health Unresolved | |
| 230 | Glenwood Springs | F | 41 | 17K | 515 | Health Unresolved | |
| 231 | Crawford | F | 41 | 1K | 520 | Health Unresolved | |
| 232 | Pueblo | F | 40.9 | 128K | 363 | Health Unresolved | |
| 233 | Littleton | F | 40.9 | 127K | 341 | Health Unresolved | |
| 234 | Greenwood Village | F | 40.2 | 20K | 268 | Health Unresolved | |
| 235 | Castle Rock | F | 40 | 116K | 259 | Health Unresolved | |
| 236 | Denver | F | 39.6 | 1.4M | 1182 | Health Unresolved | |
| 237 | Aurora | F | 38.1 | 604K | 1430 | Health Unresolved | |
| 238 | Thornton | F | 38 | 233K | 139 | Health PFAS Unresolved | |
| 239 | Durango | F | 38 | 47K | 1724 | Health Unresolved | |
| 240 | Ignacio | F | 38 | 3K | 156 | Health Unresolved | |
| 241 | Lakewood | F | 36.9 | 252K | 591 | Health Unresolved | |
| 242 | Centennial | F | 36.8 | 106K | 298 | Health PFAS Unresolved | |
| 243 | Brighton | F | 36 | 65K | 337 | Health PFAS Unresolved | |
| 244 | Colorado Springs | F | 33.5 | 572K | 2519 | Health PFAS Unresolved | |
| 245 | Hotchkiss | F | 31 | 4K | 957 | Health Lead Unresolved | |
| 246 | Rocky Ford | F | 29.2 | 6K | 726 | Health PFAS Lead Unresolved |