WaterVerge

North Dakota Water Quality Rankings

103 cities ranked · Data from EPA SDWIS

85.4
State avg score
103
Cities ranked
95%
A or B grade
3%
D or F grade
71
Health violations
23
PFAS detected

North Dakota water quality overview

North Dakota's drinking water quality is excellent overall, with a state average score of 85.4 out of 100 — 11.2 points above the national average of 74.2. The median city score is 87, reflecting how water quality is distributed across the state's 103 ranked cities. 95% of North Dakota cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 0 cities received a failing grade. PFAS "forever chemicals" were detected in 23 of 103 cities (22%). All detected levels remain within current EPA limits, though any PFAS detection warrants attention. 2 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. 71 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 North Dakota cities scored

67%
28%
A
69
67%
Excellent
B
29
28%
Good
C
2
2%
Fair
D
3
3%
Poor
F
0
0%
Failing

Score distribution by range

52 26 0
2
2
1
12
52
34
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-
North Dakota
85.4/100
B-
National avg
74.2/100
▲ 11.2 pts above national average

Water quality across North Dakota

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

All 103 cities in North Dakota

# City Grade Score Score Population Violations Issues
1 Minto
A+
97
604 0 Zero violations
2 Enderlin
A+
96.4
911 6
3 Surrey
A+
95.4
1K 5 Health
4 Beulah
A
95
3K 5 Health Unresolved
5 Wishek
A
94.5
952 6 Unresolved
6 Thompson
A
94.4
6K 3 Unresolved
7 Mayville
A
94.2
2K 8 Health Unresolved
8 Mohall
A
94.2
783 6 Health Unresolved
9 Steele
A
94.2
715 5 Health Unresolved
10 Cavalier
A
94.1
5K 8 Unresolved
11 Mott
A
93.3
721 6 Health Unresolved
12 Oakes
A
93.1
2K 9 Health Unresolved
13 Walhalla
A
93.1
996 13 Health Unresolved
14 Dickinson
A
93
39K 14 Health Unresolved
15 New Rockford
A
92.8
1K 7 Health Unresolved
16 Lidgerwood
A
92.7
652 9 Health Unresolved
17 Beach
A
92.5
981 9 Health
18 Pembina
A
92.3
592 14 Health Unresolved
19 West Fargo
A
92.2
35K 1 Health
20 Valley City
A
92.2
12K 7 Health
21 Burlington
A
92.2
1K 20 Health Unresolved
22 New Salem
A
92
946 0 Zero violations
23 Glen Ullin
A
91.9
807 4 Health Unresolved
24 Langdon
A
91.6
4K 18 Health Unresolved
25 Cooperstown
A
91.6
984 4 Unresolved
26 Fargo
A
91.5
121K 9 Health Unresolved
27 Elgin
A
91.5
642 6 Health Unresolved
28 Grand Forks
A
91.3
57K 9 Health
29 Trenton
A
91
840 16 Health Unresolved
30 Hebron
A
90.7
747 11 Health Unresolved
31 Ellendale
A
90.6
1K 5 Health
32 Tioga
A
90.4
3K 7 Unresolved
33 Hettinger
A
90.3
1K 5 Health Unresolved
34 Washburn
A
90
1K 30 Health Unresolved
35 Parshall
A-
89.9
903 13 Health
36 Park River
A-
89.7
1K 2 Unresolved
37 Mapleton
A-
89.7
1K 2 Unresolved
38 Hatton
A-
89.2
777 7 Unresolved
39 Turtle Lake
A-
88.9
3K 14 Health Unresolved
40 Devils Lake
A-
88.7
13K 12 Health Unresolved
41 Napoleon
A-
88.7
792 3 Unresolved
42 Garrison
A-
88.6
3K 14 Health Unresolved
43 Larimore
A-
88.6
1K 3 Unresolved
44 Hillsboro
A-
88.5
4K 9 Health Unresolved
45 Northwood
A-
88.1
945 10 Health Unresolved
46 Rolla
A-
87.9
1K 7 Health Unresolved
47 Ray
A-
87.8
2K 7 Unresolved
48 Gilby
A-
87.6
3K 3 Health Unresolved
49 Kindred
A-
87.2
12K 5 Health Unresolved
50 Lincoln
A-
87.2
4K 5 Health Unresolved
51 Wahpeton
A-
87
12K 4 Unresolved
52 Sharon
A-
87
1K 7 Unresolved
53 Forman
A-
87
504 8 Health Unresolved
54 Rugby
A-
86.9
3K 4 Unresolved
55 Casselton
A-
86.9
3K 3
56 Lisbon
A-
86.7
4K 3 Health Unresolved
57 Gwinner
A-
86.7
753 1 Unresolved
58 St. Michael
A-
86.5
4K 39 Health Unresolved
59 Linton
A-
86.4
1K 3 Health Unresolved
60 La Moure
A-
86.3
889 3 Unresolved
61 Fessenden
A-
86
4K 9 Health Unresolved
62 Stanley
A-
86
1K 10 Unresolved
63 Bowman
A-
85.9
1K 3 Unresolved
64 Underwood
A-
85.9
778 7 Health Unresolved
65 Bismarck
A-
85.7
91K 33 Health Unresolved
66 Harvey
A-
85.7
2K 2 Unresolved
67 Crosby
A-
85.7
1K 1 Unresolved
68 Drayton
A-
85.7
824 14 Health Unresolved
69 Ashley
A-
85.2
749 3 Unresolved
70 Finley
B+
84.6
2K 4 Health Unresolved
71 Alexander
B+
84.4
1K 5 Health Unresolved
72 Belfield
B+
83.6
1K 3 Health Unresolved
73 Portland
B+
83.6
606 4 Unresolved
74 Minot
B+
83.2
60K 24 Health Unresolved
75 Center
B+
83.2
588 6 Unresolved
76 Grafton
B+
82.5
7K 4 Health Unresolved
77 Bottineau
B+
82.3
6K 9 Health Unresolved
78 Dunseith
B+
81.9
773 14 Health Unresolved
79 Kenmare
B+
81.7
2K 36 Health Unresolved
80 Fullerton
B+
81.7
1K 32 Unresolved
81 Richardton
B+
81.7
529 1 Unresolved
82 Velva
B+
81.3
1K 12 Health Unresolved
83 Carrington
B+
81
2K 3 Health Unresolved
84 Harwood
B+
80.3
718 17 Health Unresolved
85 New England
B+
80.3
600 2 Health Unresolved
86 Jamestown
B+
80.2
21K 6 Health Unresolved
87 Hazen
B
79.6
2K 2 Unresolved
88 Killdeer
B
79.6
939 3 Unresolved
89 Edgeley
B
79.6
658 101 Health Unresolved
90 Mandan
B
78.7
27K 48 Health Unresolved
91 Milnor
B
78.2
763 27 Health Unresolved
92 Fort Yates
B
77.5
7K 53 Health Unresolved
93 Cando
B
76.9
1K 8 Lead Unresolved
94 Strasburg
B
76.9
814 21 Health Unresolved
95 Abercrombie
B
76.5
4K 46 Health Unresolved
96 Wilton
B
75.9
711 6 Health Unresolved
97 Lakota
B-
73.9
3K 11 Health Lead Unresolved
98 Williston
B-
71
32K 50 Health Unresolved
99 Watford City
C+
66.3
10K 44 Health Unresolved
100 Belcourt
C-
55.5
14K 78 Health Unresolved
101 Horace
D+
54.5
2K 126 Health Unresolved
102 Hankinson
D
48
3K 312 Health Unresolved
103 New Town
D
45.3
9K 350 Health Unresolved