Utah Water Quality Rankings
177 cities ranked · Data from EPA SDWIS
Utah water quality overview
Utah's drinking water quality is fair overall, with a state average score of 70.2 out of 100 — 4.0 points below the national average of 74.2. The median city score is 75.7, reflecting how water quality is distributed across the state's 177 ranked cities. The state shows a mixed picture: 53 cities earned an A grade while 19 cities received an F. The majority fall in the B–C range. PFAS "forever chemicals" were detected in 64 of 177 cities (36%). Of those, 3 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 4 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. 150 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 Utah cities scored
Score distribution by range
State vs national average
Water quality across Utah
Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.
Top & bottom cities in Utah
Best 10 cities
All 177 cities in Utah
| # | City | Grade | Score | Score | Population | Violations | Issues |
|---|---|---|---|---|---|---|---|
| 1 | Milford | A | 94.6 | 1K | 27 | Health Unresolved | |
| 2 | Rocky Ridge | A | 93.4 | 1K | 16 | Health Unresolved | |
| 3 | Great Falls | A | 93 | 600 | 1 | ||
| 4 | South Rim | A | 92.7 | 834 | 16 | Health Unresolved | |
| 5 | Millcreek | A | 92.2 | 5K | 16 | Health Unresolved | |
| 6 | Toquerville | A | 92.2 | 2K | 25 | Health Unresolved | |
| 7 | Henefer | A | 92.1 | 882 | 48 | Unresolved | |
| 8 | Lewiston | A | 92 | 2K | 87 | Health Unresolved | |
| 9 | Redmond | A | 92 | 850 | 27 | Health Unresolved | |
| 10 | Montpelier | A | 91.9 | 600 | 17 | Unresolved | |
| 11 | Minersville | A | 91.5 | 825 | 15 | Unresolved | |
| 12 | Clevland | A | 91.3 | 1K | 80 | Health Unresolved | |
| 13 | Hyrum | A | 90.8 | 9K | 82 | Unresolved | |
| 14 | Orderville | A | 90.5 | 805 | 113 | Health Unresolved | |
| 15 | Hideout | A | 90.3 | 1K | 4 | Unresolved | |
| 16 | Genola | A | 90.2 | 2K | 42 | Health Unresolved | |
| 17 | Talmage | A | 90.1 | 2K | 7 | Unresolved | |
| 18 | Mendon | A | 90 | 2K | 76 | Health Unresolved | |
| 19 | Woods Cross | A- | 89.8 | 6K | 16 | Unresolved | |
| 20 | Annabella | A- | 89.8 | 860 | 42 | Health Unresolved | |
| 21 | Salina | A- | 89.7 | 2K | 66 | Unresolved | |
| 22 | Paragonah | A- | 89.7 | 600 | 65 | Health Unresolved | |
| 23 | Helper | A- | 89.5 | 2K | 7 | Health Unresolved | |
| 24 | City | A- | 89.4 | 522 | 31 | Health Unresolved | |
| 25 | Ephraim | A- | 89.3 | 7K | 47 | Health Unresolved | |
| 26 | Jensen | A- | 89.2 | 1K | 16 | Health Unresolved | |
| 27 | Uintah City | A- | 89.2 | 1K | 19 | Unresolved | |
| 28 | Aurora | A- | 88.4 | 1K | 12 | Unresolved | |
| 29 | Perry | A- | 88.3 | 5K | 17 | Health Unresolved | |
| 30 | La Verkin | A- | 88.2 | 5K | 12 | Health Unresolved | |
| 31 | Tridell | A- | 88.1 | 14K | 45 | Health Unresolved | |
| 32 | Mayfield | A- | 88 | 617 | 68 | Unresolved | |
| 33 | Washington Terrace | A- | 87.9 | 9K | 46 | Unresolved | |
| 34 | Richfield | A- | 87.5 | 8K | 72 | Health Unresolved | |
| 35 | Millville | A- | 87.4 | 2K | 60 | Health Unresolved | |
| 36 | Erda | A- | 87.4 | 1K | 97 | Health Unresolved | |
| 37 | Benson | A- | 87.4 | 743 | 83 | Health Unresolved | |
| 38 | Layton | A- | 87.2 | 82K | 44 | Health Unresolved | |
| 39 | Fillmore | A- | 87.2 | 3K | 15 | Unresolved | |
| 40 | Gunnison | A- | 86.5 | 3K | 58 | Health Unresolved | |
| 41 | Newton | A- | 86.5 | 810 | 104 | Health Unresolved | |
| 42 | Stockton | A- | 86.5 | 620 | 176 | Health Unresolved | |
| 43 | Virgin | A- | 86.4 | 2K | 62 | Unresolved | |
| 44 | Fairview | A- | 86.2 | 2K | 207 | Health Unresolved | |
| 45 | Wendover | A- | 86.2 | 2K | 78 | Health Unresolved | |
| 46 | Levan | A- | 86.1 | 851 | 138 | Health Unresolved | |
| 47 | Clarkston | A- | 85.5 | 763 | 78 | Health Unresolved | |
| 48 | Springdale | A- | 85.5 | 529 | 123 | Unresolved | |
| 49 | Veyo | A- | 85.4 | 500 | 75 | Health Unresolved | |
| 50 | South Beloit | A- | 85.3 | 507 | 2 | Unresolved | |
| 51 | Nephi | A- | 85.2 | 7K | 40 | Health Unresolved | |
| 52 | Mona | A- | 85.2 | 2K | 113 | Health Unresolved | |
| 53 | Monroe | A- | 85.1 | 2K | 116 | Unresolved | |
| 54 | Green River | B+ | 84.6 | 910 | 77 | Health Unresolved | |
| 55 | Wellington | B+ | 84.5 | 2K | 66 | Unresolved | |
| 56 | Panguitch | B+ | 84.2 | 2K | 104 | Unresolved | |
| 57 | Riverdale | B+ | 84.1 | 9K | 99 | Unresolved | |
| 58 | Myton | B+ | 84.1 | 1K | 81 | Unresolved | |
| 59 | Bear River | B+ | 83.7 | 880 | 125 | Health Unresolved | |
| 60 | Loa | B+ | 83.5 | 840 | 69 | Health Unresolved | |
| 61 | West Haven | B+ | 82.8 | 21K | 47 | Health Unresolved | |
| 62 | Ivins | B+ | 82.8 | 16K | 78 | Health Unresolved | |
| 63 | Manti | B+ | 82.7 | 3K | 45 | Health Unresolved | |
| 64 | Kanosh | B+ | 82.7 | 555 | 57 | Health Unresolved | |
| 65 | Altamont | B+ | 82.6 | 1K | 47 | Health Unresolved | |
| 66 | St George City | B+ | 82.5 | 105K | 54 | Health Unresolved | |
| 67 | Spring City | B+ | 82.5 | 1K | 75 | Health Unresolved | |
| 68 | Magna | B+ | 81.3 | 32K | 81 | Health Unresolved | |
| 69 | Riverton | B+ | 81.2 | 67K | 210 | Health Unresolved | |
| 70 | Santa Clara | B+ | 81.2 | 9K | 131 | Unresolved | |
| 71 | Taylorsville | B+ | 80.9 | 3K | 6 | Unresolved | |
| 72 | Oak City | B+ | 80.9 | 785 | 142 | Health Unresolved | |
| 73 | River Heights | B+ | 80.8 | 2K | 146 | Health Unresolved | |
| 74 | Honeyville | B+ | 80.3 | 2K | 78 | Health Unresolved | |
| 75 | Fountain Green | B | 79.9 | 1K | 54 | Unresolved | |
| 76 | Francis | B | 79.1 | 2K | 133 | Health Unresolved | |
| 77 | Beaver | B | 78.9 | 4K | 125 | Health Unresolved | |
| 78 | Leeds | B | 78.9 | 1K | 147 | Health Unresolved | |
| 79 | Kearns | B | 78.8 | 57K | 80 | Health Unresolved | |
| 80 | Plain City | B | 78.8 | 21K | 34 | Health Unresolved | |
| 81 | Fruitland | B | 77.7 | 1K | 221 | Health Unresolved | |
| 82 | West Point | B | 77.6 | 15K | 123 | Health Unresolved | |
| 83 | Goshen | B | 77.5 | 925 | 136 | Health Unresolved | |
| 84 | Willard | B | 77.1 | 2K | 121 | Health Unresolved | |
| 85 | Dutch John | B | 76.4 | 504 | 267 | Unresolved | |
| 86 | Torrey | B | 76.1 | 2K | 137 | Health Unresolved | |
| 87 | Billings | B | 75.7 | 2K | 22 | Health Unresolved | |
| 88 | East Carbon | B | 75.7 | 1K | 188 | Health Unresolved | |
| 89 | Dammeron Valley | B | 75.7 | 885 | 83 | Health Unresolved | |
| 90 | Mountain Green | B | 75.4 | 4K | 197 | Health Unresolved | |
| 91 | Woodland Hills | B | 75.2 | 2K | 197 | Health Unresolved | |
| 92 | Central Valley | B- | 74.3 | 690 | 348 | Health Unresolved | |
| 93 | Syracuse | B- | 73.5 | 36K | 72 | Health Unresolved | |
| 94 | Roy | B- | 72.9 | 42K | 180 | Health Unresolved | |
| 95 | Farmington | B- | 72.7 | 13K | 41 | Health Unresolved | |
| 96 | Lincoln | B- | 72.6 | 660 | 216 | Health Unresolved | |
| 97 | Bullfrog | B- | 71.8 | 880 | 178 | Unresolved | |
| 98 | Elwood | B- | 71.2 | 27K | 233 | Health Unresolved | |
| 99 | Corinne | B- | 71.2 | 2K | 248 | Health Unresolved | |
| 100 | Montua | B- | 71.2 | 1K | 214 | Health Unresolved | |
| 101 | Fruit Heights | B- | 71 | 6K | 31 | Health Unresolved | |
| 102 | Farr West | B- | 70.3 | 30K | 114 | Health Unresolved | |
| 103 | Enterprise | B- | 70 | 3K | 263 | Health Unresolved | |
| 104 | Alta | C+ | 69.8 | 5K | 71 | Health Unresolved | |
| 105 | Escalante | C+ | 69 | 800 | 230 | Health Unresolved | |
| 106 | Stansbury Park | C+ | 68.8 | 12K | 335 | Health Unresolved | |
| 107 | Circleville | C+ | 68.5 | 500 | 101 | Health Unresolved | |
| 108 | Fielding | C+ | 68.3 | 3K | 213 | Health Unresolved | |
| 109 | Clinton | C+ | 68 | 44K | 85 | Health Unresolved | |
| 110 | Kaysville | C+ | 68 | 42K | 217 | Health Unresolved | |
| 111 | Mount Pleasant | C+ | 67.8 | 4K | 230 | Health Unresolved | |
| 112 | Hinckley | C+ | 67.5 | 630 | 158 | Health Unresolved | |
| 113 | South Jordan | C+ | 67.3 | 88K | 230 | Health Unresolved | |
| 114 | Hurricane | C+ | 67 | 75K | 253 | Health Unresolved | |
| 115 | Mapleton | C+ | 65.4 | 14K | 456 | Health Unresolved | |
| 116 | Vernal | C+ | 65.2 | 16K | 159 | Health Unresolved | |
| 117 | West Jordan | C+ | 65.1 | 255K | 182 | Health Unresolved | |
| 118 | Grantsville | C | 63.2 | 13K | 132 | Health Unresolved | |
| 119 | Bluffdale | C | 62.6 | 44K | 226 | Health Unresolved | |
| 120 | Springville | C | 61.2 | 36K | 241 | Health Unresolved | |
| 121 | Brigham City | C- | 59.6 | 123K | 250 | Health Unresolved | |
| 122 | Paradise | C- | 59 | 1K | 178 | Health Unresolved | |
| 123 | Garland | C- | 57.9 | 2K | 89 | Health Unresolved | |
| 124 | Deweyville | C- | 57.6 | 520 | 354 | Health Unresolved | |
| 125 | Manila | C- | 57.1 | 845 | 366 | Health Unresolved | |
| 126 | North Salt Lake | C- | 56 | 19K | 299 | Health Lead Unresolved | |
| 127 | Tabiona | C- | 55.8 | 785 | 297 | Health Unresolved | |
| 128 | Kanab | D+ | 54.9 | 9K | 464 | Health Unresolved | |
| 129 | Centerfield | D+ | 52 | 2K | 225 | Health Unresolved | |
| 130 | Eureka | D+ | 52 | 760 | 425 | Health Unresolved | |
| 131 | Wellsville | D+ | 51 | 78K | 541 | Health Unresolved | |
| 132 | Elsinore | D+ | 50.2 | 1K | 544 | Health Unresolved | |
| 133 | Herriman | D+ | 50 | 61K | 440 | Health Unresolved | |
| 134 | Castledale | D+ | 50 | 8K | 532 | Health Unresolved | |
| 135 | Parowan | D+ | 50 | 4K | 676 | Health Unresolved | |
| 136 | Monument Valley | D+ | 50 | 1K | 595 | Health Unresolved | |
| 137 | New Harmony | D+ | 50 | 1K | 614 | Health Unresolved | |
| 138 | Midway | D+ | 50 | 531 | 157 | Health Unresolved | |
| 139 | Payson | D | 49.6 | 28K | 446 | Health Unresolved | |
| 140 | Roosevelt | D | 49.4 | 8K | 192 | Health Unresolved | |
| 141 | Moab | D | 49 | 14K | 732 | Health Unresolved | |
| 142 | St George | D | 49 | 3K | 1282 | Health Unresolved | |
| 143 | Bountiful | D | 48.5 | 48K | 234 | Health Unresolved | |
| 144 | North Ogden | D | 48.2 | 32K | 371 | Health Unresolved | |
| 145 | Apple Valley | D | 48 | 744 | 957 | Health Unresolved | |
| 146 | Santaquin | D | 47.9 | 27K | 148 | Health Unresolved | |
| 147 | Tremonton | D | 47.2 | 14K | 623 | Health Unresolved | |
| 148 | Delta | D | 47.2 | 4K | 356 | Health Unresolved | |
| 149 | Morni | D | 47.2 | 2K | 180 | Health Unresolved | |
| 150 | Eagle Mountain | D | 46.9 | 140K | 737 | Health Unresolved | |
| 151 | Tropic | D | 46.4 | 2K | 334 | Health Unresolved | |
| 152 | Price | D | 46.1 | 15K | 163 | Health Unresolved | |
| 153 | Eden | D | 46 | 5K | 786 | Health Unresolved | |
| 154 | Oakley | D | 46 | 3K | 418 | Health Unresolved | |
| 155 | Kamas | D | 46 | 3K | 356 | Health Unresolved | |
| 156 | Heber | D | 46 | 749 | 434 | Health Unresolved | |
| 157 | Provo | D | 45.7 | 120K | 846 | Health Unresolved | |
| 158 | Morgan | D | 45.2 | 6K | 339 | Health Unresolved | |
| 159 | Lehi | F | 44.9 | 141K | 422 | Health Unresolved | |
| 160 | Draper | F | 44.1 | 37K | 394 | Health Unresolved | |
| 161 | Blanding | F | 44 | 4K | 390 | Health Unresolved | |
| 162 | Duchesne | F | 43.7 | 6K | 198 | Health Unresolved | |
| 163 | Saratoga Springs | F | 43.6 | 89K | 206 | Health Unresolved | |
| 164 | Ogden | F | 43.5 | 60K | 418 | Health Unresolved | |
| 165 | Ft. Duchesne | F | 43.2 | 4K | 487 | Health Unresolved | |
| 166 | Spanish Fork | F | 43 | 71K | 675 | Health Unresolved | |
| 167 | Heber City | F | 41.2 | 28K | 971 | Health Unresolved | |
| 168 | Coalville | F | 40.8 | 26K | 456 | Health Unresolved | |
| 169 | Orem | F | 40.7 | 161K | 1136 | Health Unresolved | |
| 170 | Cedar City | F | 40.6 | 53K | 2155 | Health Unresolved | |
| 171 | Hildale | F | 40.2 | 6K | 411 | Health PFAS Unresolved | |
| 172 | Sandy | F | 39.5 | 158K | 662 | Health Unresolved | |
| 173 | Park City | F | 36.8 | 23K | 842 | Health PFAS Unresolved | |
| 174 | Salt Lake City | F | 35.3 | 541K | 1338 | Health PFAS Unresolved | |
| 175 | Smithfield | F | 35 | 19K | 162 | Health Lead Unresolved | |
| 176 | Tooele | F | 33.6 | 37K | 428 | Health Lead Unresolved | |
| 177 | Monticello | F | 33 | 3K | 826 | Health Lead Unresolved |