WaterVerge

Minnesota Water Quality Rankings

466 cities ranked · Data from EPA SDWIS

87.5
State avg score
466
Cities ranked
94%
A or B grade
2%
D or F grade
217
Health violations
144
PFAS detected

Minnesota water quality overview

Minnesota's drinking water quality is excellent overall, with a state average score of 87.5 out of 100 — 13.3 points above the national average of 74.2. The median city score is 89.5, reflecting how water quality is distributed across the state's 466 ranked cities. 94% of Minnesota cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 2 cities received a failing grade. PFAS "forever chemicals" were detected in 144 of 466 cities (31%). Of those, 16 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. 217 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 Minnesota cities scored

77%
18%
A
357
77%
Excellent
B
83
18%
Good
C
15
3%
Fair
D
9
2%
Poor
F
2
0%
Failing

Score distribution by range

215 108 0
1
7
5
13
18
207
215
0–9
10–19
20–29
30–39
40–49
50–59
60–69
70–79
80–89
90–100

State vs national average

A-
Minnesota
87.5/100
B-
National avg
74.2/100
▲ 13.3 pts above national average

Water quality across Minnesota

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

All 466 cities in Minnesota

# City Grade Score Score Population Violations Issues
1 St. Francis
A+
99.6
5K 5 Health
2 Otsego
A+
99.4
19K 4 Health
3 Floodwood
A+
99.3
501 5 Health
4 Isanti
A+
99
7K 6 Health
5 Hermantown
A+
98.5
7K 0 Zero violations
6 Elgin
A+
98.5
1K 6 Health
7 Montevideo
A+
98
5K 5
8 Ranier
A+
97.9
565 2
9 Hugo
A+
97.7
12K 0 Zero violations
10 St. Peter
A+
97.7
12K 4 Health
11 Elko-New Market
A+
97.2
5K 10 Health
12 Ramsey
A+
97.1
18K 2
13 Lakeland
A+
97.1
4K 1
14 Corcoran
A+
97
3K 0 Zero violations
15 Mantorville
A+
97
1K 1
16 Walnut Grove
A+
97
825 1
17 Ottertail
A+
97
694 0 Zero violations
18 Adams
A+
97
672 0 Zero violations
19 Ivanhoe
A+
97
559 0 Zero violations
20 Wyoming
A+
96.9
4K 6 Health Unresolved
21 Cohasset
A+
96.9
1K 2
22 Richfield
A+
96.8
37K 1
23 Andover
A+
96.8
21K 4 Health
24 Atwater
A+
96.8
1K 4
25 Hallock
A+
96.7
850 5
26 Cleveland
A+
96.7
719 2 Health
27 Brownsdale
A+
96.7
682 4 Health
28 Mcintosh
A+
96.7
584 2 Health
29 Stephen
A+
96.7
568 7
30 East Bethel
A+
96.7
500 2 Health
31 Rockville
A+
96.6
765 4 Health
32 Rollingstone
A+
96.5
664 1 Health
33 Nicollet
A+
96.4
1K 4 Health
34 Houston
A+
96.4
997 5 Health
35 Verndale
A+
96.4
506 3 Health
36 Mabel
A+
96.3
715 5 Unresolved
37 Marble
A+
96.3
699 5 Health
38 Taylors Falls
A+
96.2
1K 6 Health
39 Kerkhoven
A+
96.1
806 3 Health
40 Laprairie
A+
96.1
520 2 Health
41 Crystal
A+
96
23K 1
42 Mounds View
A+
96
13K 0 Zero violations
43 Belle Plaine
A+
95.8
7K 5 Unresolved
44 Taconite
A+
95.8
644 7 Health
45 Zimmerman
A+
95.7
7K 11 Unresolved
46 Rogers
A+
95.3
15K 6 Unresolved
47 Baxter
A+
95.3
9K 2
48 Wadena
A+
95
4K 1
49 Carlton
A+
95
1K 1
50 Leroy
A+
95
959 0 Zero violations
51 Browerville
A+
95
836 0 Zero violations
52 Dayton
A
94.9
5K 4
53 Oronoco
A
94.9
2K 6 Unresolved
54 Robbinsdale
A
94.8
15K 0 Zero violations
55 Westbrook
A
94.8
785 2 Health
56 New Brighton
A
94.6
23K 5 Health
57 Elk River
A
94.6
20K 4 Unresolved
58 Stewartville
A
94.6
7K 4 Unresolved
59 Byron
A
94.6
6K 4 Unresolved
60 Cannon Falls
A
94.6
4K 3 Unresolved
61 Red Wing
A
94.5
17K 7 Health Unresolved
62 Mapleton
A
94.5
2K 6 Unresolved
63 Walker
A
94.5
1K 6 Unresolved
64 Cokato
A
94.4
3K 7 Unresolved
65 Birchwood
A
94.4
864 8 Unresolved
66 Lacrescent
A
94.3
5K 4 Health Unresolved
67 Barnesville
A
94.3
3K 8 Unresolved
68 Spring Valley
A
94.3
3K 6 Unresolved
69 Lake Crystal
A
94.3
3K 5 Health Unresolved
70 Ada
A
94.3
2K 8 Unresolved
71 Dassel
A
94.3
2K 5 Unresolved
72 Deer River
A
94.2
942 5 Health Unresolved
73 Dodge Center
A
94.1
3K 13 Unresolved
74 Clara City
A
94.1
1K 7 Health Unresolved
75 Red Lake Falls
A
94.1
1K 13 Unresolved
76 Adrian
A
94.1
1K 8 Health Unresolved
77 Browns Valley
A
94.1
566 5 Health Unresolved
78 Glencoe
A
94
6K 2 Health
79 Pipestone
A
94
4K 3 Health
80 Two Harbors
A
94
4K 5 Unresolved
81 Sleepy Eye
A
94
4K 0 Zero violations
82 Perham
A
94
3K 4 Health Unresolved
83 Tyler
A
94
1K 11 Unresolved
84 Norwood Young America
A
93.9
4K 3 Health Unresolved
85 Hinckley
A
93.9
2K 13 Health
86 Hayfield
A
93.9
1K 5 Unresolved
87 Roseville
A
93.8
36K 0 Zero violations
88 Melrose
A
93.8
4K 11 Health Unresolved
89 Mountain Iron
A
93.8
3K 5 Unresolved
90 Winsted
A
93.8
2K 5 Unresolved
91 Cottonwood
A
93.8
1K 9 Unresolved
92 Green Isle
A
93.8
599 7 Health Unresolved
93 Excelsior
A
93.7
5K 11 Health Unresolved
94 Richmond
A
93.7
1K 5 Health Unresolved
95 Bloomington
A
93.6
91K 5 Health Unresolved
96 Jordan
A
93.5
7K 10 Health Unresolved
97 Lonsdale
A
93.5
4K 11 Health
98 Sebeka
A
93.4
939 16 Health Unresolved
99 Littlefork
A
93.4
542 5
100 New London
A
93.3
1K 10 Health Unresolved
101 Oak Park Heights
A
93.2
5K 5 Health Unresolved
102 Bird Island
A
93.2
1K 9 Health Unresolved
103 Claremont
A
93.2
773 10 Health Unresolved
104 Lake City
A
93.1
5K 11 Health Unresolved
105 Bayport
A
93.1
3K 13 Health Unresolved
106 Spring Grove
A
93.1
1K 3 Unresolved
107 Holdingford
A
93.1
770 2
108 Brooklyn Center
A
93
34K 0 PFAS
109 Arden Hills
A
93
10K 14 Unresolved
110 Cold Spring
A
93
4K 15 Health Unresolved
111 Wells
A
93
2K 1
112 Cologne
A
93
2K 0 Zero violations
113 Eden Valley
A
93
1K 0 Zero violations
114 Twin Valley
A
93
707 1
115 Clarks Grove
A
93
695 0 Zero violations
116 Minnesota Lake
A
93
683 0 Zero violations
117 Evansville
A
93
603 0 Zero violations
118 Waverly
A
92.9
2K 1 Health
119 Menahga
A
92.9
1K 3
120 New Richland
A
92.9
1K 13 Health Unresolved
121 Watkins
A
92.9
958 2
122 Fertile
A
92.9
789 1
123 Freeport
A
92.9
685 2
124 Hills
A
92.9
685 1
125 Motley
A
92.9
680 1 Health
126 Randall
A
92.9
650 1 Health
127 Kasson
A
92.8
7K 3 Unresolved
128 Chisago City
A
92.8
4K 8 Unresolved
129 Annandale
A
92.8
3K 3 Unresolved
130 New York Mills
A
92.8
1K 4
131 Cambridge
A
92.7
10K 2 Unresolved
132 North Branch
A
92.7
6K 2 Unresolved
133 St. Charles
A
92.7
4K 2 Unresolved
134 Lewiston
A
92.7
2K 17 Health Unresolved
135 Glyndon
A
92.7
1K 3
136 Anoka
A
92.5
18K 23 Health Unresolved
137 Hamel
A
92.5
4K 6 Health Unresolved
138 Kenyon
A
92.5
2K 5 Unresolved
139 Owatonna
A
92.4
26K 3 Unresolved
140 Hutchinson
A
92.3
15K 6 Unresolved
141 Bagley
A
92.3
1K 10 Unresolved
142 Deerwood
A
92.3
805 13 Health Unresolved
143 Good Thunder
A
92.3
583 6 Health Unresolved
144 Lesueur
A
92.2
4K 4 Unresolved
145 Benson
A
92.2
3K 3
146 Minnetonka
A
92
54K 0 Zero violations
147 Henderson
A
92
886 10 Health
148 Cosmos
A
92
513 5 Health
149 Big Lake
A
91.9
12K 6 Health Unresolved
150 Mahtomedi
A
91.8
8K 3 Unresolved
151 Becker
A
91.8
5K 4 PFAS
152 Goodhue
A
91.8
1K 3 Unresolved
153 Edgerton
A
91.7
1K 10 Health Unresolved
154 Forest Lake
A
91.6
12K 6 Unresolved
155 Montrose
A
91.6
4K 3 Unresolved
156 Eyota
A
91.6
2K 3 Unresolved
157 Waterville
A
91.6
2K 4 Unresolved
158 Canby
A
91.6
2K 4 Unresolved
159 Fosston
A
91.6
1K 3 Unresolved
160 Mahnomen
A
91.6
1K 3 Unresolved
161 Blooming Prairie
A
91.5
2K 3 Health Unresolved
162 Wanamingo
A
91.5
1K 3 Health Unresolved
163 Lanesboro
A
91.5
727 4 Health Unresolved
164 Geneva
A
91.5
538 5 Health Unresolved
165 Shoreview
A
91.4
26K 4 Unresolved
166 Maple Lake
A
91.4
2K 5 Health Unresolved
167 Springfield
A
91.4
2K 4 Unresolved
168 Battle Lake
A
91.4
918 4 Health Unresolved
169 Courtland
A
91.4
635 3 Health
170 Hamburg
A
91.4
530 4 Health Unresolved
171 Brewster
A
91.4
506 4 Unresolved
172 Dundas
A
91.3
2K 9 Unresolved
173 Appleton
A
91.3
1K 22 Unresolved
174 Grand Meadow
A
91.3
1K 8 Unresolved
175 Altura
A
91.3
553 5 Unresolved
176 Long Prairie
A
91.2
4K 6 Health Unresolved
177 Long Lake
A
91.2
2K 7 Unresolved
178 Champlin
A
91.1
24K 2 Unresolved
179 Little Falls
A
91.1
9K 3 Unresolved
180 Truman
A
91.1
1K 8 Unresolved
181 Stockton
A
91.1
697 3 Health Unresolved
182 Waseca
A
91
9K 2 Unresolved
183 East Grand Forks
A
91
9K 3 Unresolved
184 Delano
A
91
7K 6 Unresolved
185 St. James
A
91
5K 2 Unresolved
186 St. Clair
A
91
846 2 Unresolved
187 Trimont
A
91
734 0 Zero violations
188 Osseo
A
90.9
3K 7 Health Unresolved
189 Keewatin
A
90.9
1K 2 Health Unresolved
190 Morgan
A
90.9
896 4 Unresolved
191 Kasota
A
90.9
704 18 Health Unresolved
192 Grove City
A
90.9
635 1
193 Audubon
A
90.9
570 3 Health Unresolved
194 Hokah
A
90.9
555 3 Unresolved
195 Minnetrista
A
90.8
6K 6 Unresolved
196 Park Rapids
A
90.8
4K 26 Health Unresolved
197 Mountain Lake
A
90.8
2K 7 Health Unresolved
198 International Falls
A
90.7
6K 2 Unresolved
199 Sherburn
A
90.7
1K 6 Unresolved
200 Brooten
A
90.6
646 5 Health Unresolved
201 Caledonia
A
90.4
3K 5 Health Unresolved
202 Hoyt Lakes
A
90.4
2K 3 Unresolved
203 Pine River
A
90.4
939 5 Health
204 Bovey
A
90.4
821 5 Health Unresolved
205 Cook
A
90.4
574 5 Health Unresolved
206 Coon Rapids
A
90.3
64K 5 Health Unresolved
207 Jeffers
A
90.3
6K 7 Unresolved
208 North St. Paul
A
90.2
13K 5 Health PFAS Unresolved
209 Shafer
A
90.2
1K 8 Health Unresolved
210 Silver Lake
A
90.2
850 8 Unresolved
211 Madelia
A
90.1
2K 6 Unresolved
212 Winona
A
90
32K 25 Health Unresolved
213 New Prague
A-
90
8K 5 Health
214 Blue Earth
A-
90
3K 2
215 Stacy
A
90
2K 10 Health Unresolved
216 Spring Lake Park
A-
89.9
7K 9 Health Unresolved
217 Sauk Centre
A-
89.9
5K 6 Health Unresolved
218 Hampton
A-
89.9
811 13 Health Unresolved
219 Balaton
A-
89.9
639 2
220 Farmington
A-
89.8
27K 4 Unresolved
221 Ortonville
A-
89.8
2K 12 Unresolved
222 Biwabik
A-
89.8
975 4 Health Unresolved
223 Plainview
A-
89.7
3K 1 Unresolved
224 Staples
A-
89.7
3K 2 Unresolved
225 Wabasha
A-
89.7
3K 2 Unresolved
226 Collegeville
A-
89.7
3K 7 Health Unresolved
227 Rice
A-
89.7
2K 2 Unresolved
228 Nashwauk
A-
89.7
971 2 Unresolved
229 Hancock
A-
89.7
845 2 Unresolved
230 Dover
A-
89.7
792 2 Unresolved
231 Minnetonka Beach
A-
89.7
547 2 Unresolved
232 Harmony
A-
89.6
1K 3 Unresolved
233 Maplewood
A-
89.6
515 11 Health Unresolved
234 Aurora
A-
89.5
3K 7 Unresolved
235 Wheaton
A-
89.5
1K 7 Unresolved
236 Hector
A-
89.5
1K 12 Health Unresolved
237 Warren
A-
89.4
5K 18 Health Unresolved
238 Sabin
A-
89.4
629 7 Health Unresolved
239 Circle Pines
A-
89.3
6K 4 Unresolved
240 Halstad
A-
89.3
550 4 Health Unresolved
241 Plymouth
A-
89.2
81K 6 Health Unresolved
242 North Mankato
A-
89.2
14K 4 Health Unresolved
243 Aitkin
A-
89.2
2K 10 Health Unresolved
244 Burnsville
A-
89.1
62K 2 Unresolved
245 Savage
A-
89
30K 7 Health Unresolved
246 Luverne
A-
89
8K 11 Unresolved
247 Willernie
A-
89
525 11 Unresolved
248 Minneota
A-
88.9
1K 4 Unresolved
249 Renville
A-
88.9
1K 2
250 Barnum
A-
88.9
621 13 Unresolved
251 Eagan
A-
88.8
68K 2 Unresolved
252 Fairmont
A-
88.8
10K 6 Health Unresolved
253 Slayton
A-
88.8
2K 12 Health Unresolved
254 Silver Bay
A-
88.8
2K 4 Unresolved
255 Northfield
A-
88.7
23K 13 Unresolved
256 New Hope
A-
88.7
21K 2 Unresolved
257 Buffalo
A-
88.7
17K 2 Unresolved
258 Virginia
A-
88.7
8K 1 Unresolved
259 Carver
A-
88.7
7K 3 Unresolved
260 Blackduck
A-
88.7
826 4 Health Unresolved
261 Duluth
A-
88.6
88K 4 Health Unresolved
262 Sartell
A-
88.6
20K 3 Unresolved
263 Lakeville
A-
88.5
68K 22 Health Unresolved
264 Golden Valley
A-
88.5
23K 4 Unresolved
265 Lakefield
A-
88.5
2K 7 Unresolved
266 Dawson
A-
88.5
2K 6 Health Unresolved
267 Grand Marais
A-
88.5
1K 8 Unresolved
268 Oak Grove
A-
88.5
623 4 Health Unresolved
269 Mazeppa
A-
88.4
937 14 Health Unresolved
270 Wabasso
A-
88.3
815 14 Unresolved
271 Hoffman
A-
88.3
703 6 Unresolved
272 Fridley
A-
88.2
29K 7 Unresolved
273 Medford
A-
88.2
2K 13 Health Unresolved
274 Clearwater
A-
88.1
2K 10 Unresolved
275 Starbuck
A-
88.1
1K 5 Health Unresolved
276 Buhl
A-
88.1
1K 6 Health Unresolved
277 Mora
A-
88
4K 6 Health Unresolved
278 Cloquet
A-
87.9
14K 40 PFAS Unresolved
279 Clarkfield
A-
87.9
841 10 Unresolved
280 Blaine
A-
87.8
72K 13 Health Unresolved
281 Albert Lea
A-
87.8
19K 3 Unresolved
282 Lindstrom
A-
87.8
5K 22 Health Unresolved
283 Pine Island
A-
87.8
3K 4 Unresolved
284 Braham
A-
87.8
2K 3 Unresolved
285 Pierz
A-
87.8
2K 10
286 St. Cloud
A-
87.7
72K 15 Health Unresolved
287 Lyle
A-
87.7
521 7 Health Unresolved
288 Zumbrota
A-
87.6
3K 4 Unresolved
289 Olivia
A-
87.6
2K 4 Unresolved
290 Lester Prairie
A-
87.6
2K 3 Unresolved
291 Lake Benton
A-
87.5
14K 22 Health Unresolved
292 Shorewood
A-
87.5
4K 1 Unresolved
293 Chatfield
A-
87.5
3K 5 Unresolved
294 Maple Plain
A-
87.5
2K 3 Health Unresolved
295 Winnebago
A-
87.5
1K 3 Health Unresolved
296 Graceville
A-
87.4
653 6 Unresolved
297 Butterfield
A-
87.4
586 3 Health Unresolved
298 Centerville
A-
87.3
4K 3 Unresolved
299 Pequot Lakes
A-
87.3
1K 10 Health Unresolved
300 Watertown
A-
87.2
5K 22 Health Unresolved
301 Foley
A-
87.2
3K 9 Health Unresolved
302 Newport
A-
87.1
4K 3 PFAS Unresolved
303 Baudette
A-
87.1
1K 24 Health Unresolved
304 Clinton
A-
87.1
520 8 Health Unresolved
305 Eden Prairie
A-
87
64K 2 Unresolved
306 Princeton
A-
87
5K 12 PFAS Unresolved
307 Dilworth
A-
87
5K 8 Health Unresolved
308 Proctor
A-
87
3K 3 Unresolved
309 Mayer
A-
87
2K 3 Unresolved
310 Madison Lake
A-
87
1K 7 Unresolved
311 Karlstad
A-
87
713 6 Unresolved
312 St. Augusta
A-
86.9
1K 2 Health Unresolved
313 Mound
A-
86.8
9K 7 Health Unresolved
314 Litchfield
A-
86.8
7K 11 Health Unresolved
315 Sandstone
A-
86.8
3K 10 Health Unresolved
316 Chisholm
A-
86.7
5K 1 Unresolved
317 Paynesville
A-
86.7
3K 1 Unresolved
318 Brownton
A-
86.7
722 1 Unresolved
319 Elmore
A-
86.7
663 1 Unresolved
320 Loretto
A-
86.7
637 1 Unresolved
321 Roseau
A-
86.6
3K 14 Unresolved
322 Janesville
A-
86.6
2K 3 Unresolved
323 Gilbert
A-
86.6
2K 3 Unresolved
324 Henning
A-
86.5
882 18 Health Unresolved
325 Tower
A-
86.5
872 11 Health Unresolved
326 Victoria
A-
86.3
11K 10 Health Unresolved
327 Hawley
A-
86.3
3K 19 Health Unresolved
328 Welcome
A-
86.3
653 3 Health Unresolved
329 Breckenridge
A-
86.2
3K 3 Unresolved
330 Pillager
A-
86.2
523 1 Unresolved
331 Rothsay
A-
86.2
503 1 Unresolved
332 Cottage Grove
A-
86.1
40K 14 Health Unresolved
333 Albertville
A-
86.1
36K 4 Unresolved
334 Eveleth
A-
86.1
4K 16 Health Unresolved
335 Willmar
A-
86
21K 8 Health Unresolved
336 Wayzata
A-
86
5K 2 Unresolved
337 Hilltop
A-
85.9
880 1 Unresolved
338 Hill City
A-
85.9
633 2 Unresolved
339 Parkers Prairie
A-
85.8
1K 2 Health Unresolved
340 St. Louis Park
A-
85.7
51K 26 Health Unresolved
341 White Bear Lake
A-
85.7
37K 10 PFAS Unresolved
342 Spicer
A-
85.7
3K 19 Health Unresolved
343 Gaylord
A-
85.7
2K 2 Unresolved
344 Arlington
A-
85.7
2K 7 Health Unresolved
345 Madison
A-
85.7
2K 2 Unresolved
346 Babbitt
A-
85.7
1K 3 Unresolved
347 Kimball
A-
85.7
911 2 Unresolved
348 Belgrade
A-
85.7
745 2 Unresolved
349 Lake Park
A-
85.6
729 2 Health Unresolved
350 Clear Lake
A-
85.6
669 14 Health Unresolved
351 Clarissa
A-
85.6
662 2 Health Unresolved
352 Jasper
A-
85.6
623 2 Health Unresolved
353 St. Joseph
A-
85.4
9K 17 Health Unresolved
354 St. Paul Park
A-
85.3
5K 2 Unresolved
355 Lamberton
A-
85.3
828 8 Unresolved
356 Raymond
A-
85.2
765 2 Unresolved
357 Windom
B+
85
5K 8 Unresolved
358 St. Bonifacius
A-
85
3K 14 Health Unresolved
359 Hopkins
B+
84.9
19K 2 Unresolved
360 Chaska
B+
84.8
31K 16 Health Unresolved
361 Vadnais Heights
B+
84.8
13K 1 Unresolved
362 Redwood Falls
B+
84.8
5K 4 Unresolved
363 Crosby
B+
84.8
2K 15 Health Unresolved
364 Maple Grove
B+
84.7
75K 2 Unresolved
365 Waconia
B+
84.7
13K 3 Unresolved
366 Montgomery
B+
84.6
3K 4 Unresolved
367 Apple Valley
B+
84.5
50K 1 Unresolved
368 Faribault
B+
84.5
26K 16 Health Unresolved
369 Columbia Heights
B+
84.5
22K 4 Unresolved
370 Coleraine
B+
84.4
2K 6 Unresolved
371 New Ulm
B+
84.2
14K 10 Unresolved
372 Pine City
B+
84.2
4K 14 Health Unresolved
373 Warroad
B+
84.1
3K 69 Health Unresolved
374 Jackson
B+
84
3K 2 Unresolved
375 Preston
B+
84
1K 25 Unresolved
376 Buffalo Lake
B+
84
703 10 Health Unresolved
377 Moose Lake
B+
83.8
3K 29 Health Unresolved
378 Frazee
B+
83.7
1K 2 Unresolved
379 Lake Bronson
B+
83.5
3K 4 Unresolved
380 Edina
B+
83.2
54K 23 Health Unresolved
381 Heron Lake
B+
83.1
691 5 Health Unresolved
382 Oakdale
B+
83
29K 4 Health Unresolved
383 Lexington
B+
82.9
3K 28 Health Unresolved
384 Elysian
B+
82.9
656 8 Health Unresolved
385 Brainerd
B+
82.8
15K 50 Health Unresolved
386 Worthington
B+
82.8
14K 1 Unresolved
387 Marshall
B+
82.7
14K 2 Unresolved
388 Eagle Lake
B+
82.7
3K 1 Unresolved
389 Elbow Lake
B+
82.7
1K 1 Unresolved
390 Hendricks
B+
82.7
650 1 Unresolved
391 Kandiyohi
B+
82.7
560 1 Unresolved
392 Bertha
B+
82.7
557 3 Unresolved
393 Eagle Bend
B+
82.7
542 1 Unresolved
394 Milaca
B+
82.6
3K 21 Unresolved
395 Brandon
B+
82.6
501 2 Unresolved
396 Moorhead
B+
82.5
45K 1 Unresolved
397 Argyle
B+
82.5
533 3 Health Unresolved
398 Grand Rapids
B+
82.4
12K 20 Health Unresolved
399 Orono
B+
82.4
3K 3 Unresolved
400 West Concord
B+
82.4
773 3 Unresolved
401 Greenbush
B+
82.2
680 6 Unresolved
402 Rosemount
B+
82
27K 3 Health Unresolved
403 Waite Park
B+
81.7
8K 1 PFAS Unresolved
404 Brooklyn Park
B+
81.5
91K 24 PFAS Unresolved
405 Prior Lake
B+
81.5
51K 83 Health Unresolved
406 Fairfax
B+
81.5
1K 6 Unresolved
407 South St. Paul
B+
81.3
21K 10 Health PFAS Unresolved
408 Austin
B+
81.2
26K 57 Unresolved
409 Rushford
B+
81.1
2K 6 Unresolved
410 Winthrop
B+
81.1
1K 4 Health Unresolved
411 Chanhassen
B+
81
25K 2 Unresolved
412 Ulen
B+
81
500 1 Unresolved
413 Ham Lake
B+
80.6
1K 36 Health Unresolved
414 Woodbury
B+
80.5
83K 5 PFAS Unresolved
415 Sauk Rapids
B+
80.5
14K 25 Health PFAS Unresolved
416 Welch
B+
80.5
7K 87 Unresolved
417 Albany
B+
80.5
3K 12 Health Unresolved
418 Morristown
B+
80.5
1K 8 Health Unresolved
419 Isle
B+
80.4
845 26 Health Unresolved
420 Lafayette
B+
80.4
504 5 Health
421 Ironton
B+
80.1
578 2 Health Unresolved
422 Tracy
B+
80
2K 4 Unresolved
423 Lake Elmo
B
79.8
13K 23 Health PFAS Unresolved
424 Alexandria
B
79
15K 21 PFAS Unresolved
425 Spring Park
B
78.4
2K 3 Unresolved
426 Shakopee
B
77
48K 39 Health Unresolved
427 Howard Lake
B
76.5
2K 9 Health Unresolved
428 Monticello
B
75.8
16K 25 Health Unresolved
429 Ely
B-
74.8
3K 8 Health Unresolved
430 Alden
B-
74.6
661 6 Health Unresolved
431 Fulda
B-
74.4
1K 7 Lead Unresolved
432 Avon
B-
73.9
2K 19 Health Unresolved
433 St. Paul
B-
73.3
403K 37 Health Unresolved
434 Osakis
B-
73.3
2K 15 Health Lead Unresolved
435 Crookston
B-
73
7K 1 Lead Unresolved
436 Minneapolis
B-
72.8
436K 43 Health Unresolved
437 Le Center
B-
72.6
3K 26 Health Unresolved
438 Thief River Falls
B-
72.2
9K 54 Health Unresolved
439 Granite Falls
B-
72
5K 63 Unresolved
440 Royalton
B-
70.2
1K 162 Health Unresolved
441 Rochester
C+
69.7
125K 44 Health Unresolved
442 Glenville
C+
69.7
566 23 Health Unresolved
443 Hastings
C+
69.4
24K 24 Health PFAS Unresolved
444 Glenwood
C+
68.6
3K 26 Unresolved
445 Morton
C+
68
4K 138 Unresolved
446 Stillwater
C+
67.6
21K 34 Health PFAS Unresolved
447 Amboy
C+
67.2
535 20 Health Unresolved
448 Lino Lakes
C+
66.8
19K 7 Health Lead Unresolved
449 Ellendale
C+
66.7
737 19 Health Unresolved
450 Gibbon
C
64.9
890 21 Health Unresolved
451 Fergus Falls
C
64.2
14K 18 Health Unresolved
452 Hibbing
C
62.9
16K 11 Health Lead Unresolved
453 Bemidji
C
62.9
16K 66 Health Unresolved
454 Detroit Lakes
C-
56.6
10K 75 Health Unresolved
455 Cass Lake
C-
56.1
4K 142 Health Unresolved
456 Rush City
D+
50.8
3K 38 Health Unresolved
457 Pelican Rapids
D+
50.8
3K 36 Health Unresolved
458 Red Lake
D+
50
2K 219 Health Unresolved
459 Inver Grove Heights
D
47.2
35K 49 Health Unresolved
460 Lancaster
D
47
511 55 Health Unresolved
461 Morris
D
46
5K 25 Health Unresolved
462 Nett Lake
D
46
3K 358 Health Unresolved
463 White Earth
D
46
1K 767 Health Unresolved
464 Onamia
D
45
6K 211 Health Unresolved
465 Mankato
F
40.5
44K 83 Health Unresolved
466 Grand Portage
F
35
820 513 Health Lead Unresolved