WaterVerge

Utah Water Quality Rankings

177 cities ranked · Data from EPA SDWIS

70.2
State avg score
177
Cities ranked
58%
A or B grade
28%
D or F grade
150
Health violations
64
PFAS detected

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

30%
28%
14%
18%
11%
A
53
30%
Excellent
B
50
28%
Good
C
24
14%
Fair
D
31
18%
Poor
F
19
11%
Failing

Score distribution by range

56 28 0
6
33
18
17
29
56
18
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-
Utah
70.2/100
B-
National avg
74.2/100
▼ 4.0 pts below 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.

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