WaterVerge
HAA5 Contamination

HAA5 in Illinois Drinking Water

Ranked by average HAA5 concentration (µg/L) · UCMR 4 data (2018–2020) · Data from EPA SDWIS & UCMR

239
Cities Tested
1
Exceeds Limit
0%
% Exceeds Limit
12.7 µg/L
State Avg
▼ 1% vs national
vs National
695
Health Violations

HAA5 in Illinois: what the data shows

Illinois has 239 cities with HAA5 monitoring data from the EPA's UCMR 4 program (2018–2020). Haloacetic acids (HAA5) form when chlorine-based disinfectants react with natural organic matter in water. The state average is 12.7 µg/L — better than the 15.5 µg/L national average. 1 city exceeds the EPA MCL of 60 µg/L. HAA5 is a group of five chlorinated and brominated acetic acids. Long-term exposure above the MCL is associated with increased cancer risk and adverse reproductive outcomes. The EPA classifies total HAA5 as a probable human carcinogen at elevated concentrations. Activated carbon filtration (especially granular or block carbon) is effective at reducing HAA5. Running water through a refrigerator filter or letting it sit in an open pitcher for 30 minutes also helps, as some HAA5 species are volatile. Boiling does not remove disinfection byproducts and may concentrate them.

Cities exceeding 60 µg/L EPA MCL

Illinois
0%
1 of 239 cities
▼ 1% below national rate (better)
National avg
1%
23 of 4420 cities

HAA5 data across Illinois

Each dot is a city with UCMR 4 HAA5 testing data. Cities where average HAA5 exceeded the 60 µg/L EPA MCL are highlighted. Size reflects population served.

All Illinois cities ranked by haa5 level

# City Level Level Exceeds? Violations Grade
1 Caseyville 90.0 µg/L
Yes 3
B+
2 Dieterich 55.3 µg/L
No 7
F
3 Sparta 42.0 µg/L
No 21
B-
4 O Fallon 41.2 µg/L
No 17
A-
5 Essex 37.9 µg/L
No 14
B-
6 Rock Island 37.3 µg/L
No 5
B-
7 Jerseyville 33.2 µg/L
No 6
A-
8 Nashville 28.1 µg/L
No 27
C-
9 Tuscola 26.6 µg/L
No 0
A
10 West Frankfort 26.6 µg/L
No 6
B+
11 Effingham 25.4 µg/L
No 2
A-
12 Sullivan 25.4 µg/L
No 5
A-
13 Mattoon 25.2 µg/L
No 14
B-
14 Mt Vernon 24.9 µg/L
No 1
A
15 East Moline 24.7 µg/L
No 18
D+
16 Murphysboro 24.2 µg/L
No 8
B
17 Chatham 23.9 µg/L
No 2
A
18 Champaign 23.7 µg/L
No 0
A
19 Litchfield 23.7 µg/L
No 5
D+
20 Granite City 23.6 µg/L
No 0
B+
21 Galesburg 23.6 µg/L
No 1
B
22 Carbondale 23.3 µg/L
No 26
D
23 Kankakee 22.9 µg/L
No 40
F
24 Marion 22.4 µg/L
No 29
D
25 Streator 22.1 µg/L
No 14
A-
26 Springfield 21.8 µg/L
No 3
D
27 Bloomington 21.8 µg/L
No 21
F
28 Fairfield 21.8 µg/L
No 16
D+
29 Jacksonville 21.7 µg/L
No 28
B-
30 Alton 21.7 µg/L
No 1
B
31 Wood River 20.3 µg/L
No 0
B+
32 Lake Forest 20.3 µg/L
No 58
B-
33 Woodstock 19.4 µg/L
No 3
B-
34 Herrin 19.1 µg/L
No 0
C+
35 Naperville 18.8 µg/L
No 0
B+
36 Deerfield 18.8 µg/L
No 4
B
37 Palatine 18.5 µg/L
No 2
B
38 Carlinville 18.4 µg/L
No 74
D
39 Frankfort 18.3 µg/L
No 7
B+
40 East St Louis 17.9 µg/L
No 1
B+
41 Macomb 17.7 µg/L
No 39
D
42 Urbana 17.5 µg/L
No 0
C+
43 North Chicago 17.5 µg/L
No 5
B+
44 Algonquin 17.4 µg/L
No 6
A-
45 North Riverside 17.2 µg/L
No 4
B+
46 Stickney 17.1 µg/L
No 1
B+
47 Midlothian 17.0 µg/L
No 5
A-
48 Waukegan 16.8 µg/L
No 5
B+
49 Plainfield 16.6 µg/L
No 23
B-
50 Mount Vernon 16.6 µg/L
No 2
B+
51 Palos Heights 16.6 µg/L
No 1
A-
52 Rolling Meadows 16.5 µg/L
No 3
A
53 Mount Prospect 16.4 µg/L
No 1
B+
54 Morton Grove 16.2 µg/L
No 2
B-
55 Riverdale 16.2 µg/L
No 6
B+
56 New Lenox 16.2 µg/L
No 7
D+
57 Lincolnwood 15.9 µg/L
No 1
B+
58 Elmhurst 15.8 µg/L
No 2
A-
59 Wheaton 15.8 µg/L
No 2
B-
60 Orland Park 15.8 µg/L
No 0
A-
61 Crestwood 15.8 µg/L
No 0
B
62 Northbrook 15.7 µg/L
No 55
D
63 Decatur 15.6 µg/L
No 28
B
64 Franklin Park 15.6 µg/L
No 5
B
65 Woodridge 15.6 µg/L
No 2
A-
66 Burr Ridge 15.6 µg/L
No 0
A
67 Godfrey 15.5 µg/L
No 22
C+
68 Country Club Hills 15.5 µg/L
No 0
A-
69 Weston 15.3 µg/L
No 6
A
70 Bolingbrook 15.3 µg/L
No 2
A
71 Hoffman Estates 15.2 µg/L
No 7
A+
72 Westmont 15.0 µg/L
No 6
B-
73 Quincy 15.0 µg/L
No 3
B-
74 Zion 14.9 µg/L
No 1
B
75 Alsip 14.9 µg/L
No 2
A-
76 Homewood 14.9 µg/L
No 2
C
77 La Grange 14.9 µg/L
No 1
B
78 Danville 14.8 µg/L
No 24
B
79 Matteson 14.8 µg/L
No 1
B
80 Robbins 14.8 µg/L
No 7
C-
81 Bellwood 14.7 µg/L
No 7
B+
82 Addison 14.6 µg/L
No 0
A
83 Glendale Heights 14.6 µg/L
No 1
A
84 Westchester 14.6 µg/L
No 2
B
85 Darien 14.5 µg/L
No 6
C+
86 Schaumburg 14.5 µg/L
No 17
B+
87 Highland Park 14.5 µg/L
No 2
B+
88 South Holland 14.4 µg/L
No 5
B-
89 Hanover Park 14.4 µg/L
No 3
A
90 Downers Grove 14.4 µg/L
No 2
A
91 Tinley Park 14.3 µg/L
No 0
B+
92 Moline 14.3 µg/L
No 7
C
93 Aurora 14.2 µg/L
No 20
D
94 Centralia 14.0 µg/L
No 2
B
95 Roselle 13.9 µg/L
No 2
A-
96 Hinsdale 13.9 µg/L
No 0
A
97 Wood Dale 13.9 µg/L
No 0
A-
98 Hazel Crest 13.9 µg/L
No 2
B
99 Oak Forest 13.8 µg/L
No 0
B+
100 Bensenville 13.8 µg/L
No 4
A
101 Elmwood Park 13.8 µg/L
No 3
B+
102 Buffalo Grove 13.6 µg/L
No 1
A
103 Hickory Hills 13.6 µg/L
No 1
A
104 Wheeling 13.6 µg/L
No 5
A+
105 Elk Grove 13.6 µg/L
No 2
A-
106 Waterloo 13.6 µg/L
No 1
C
107 Berwyn 13.5 µg/L
No 3
A-
108 Mokena 13.4 µg/L
No 2
A
109 Justice 13.3 µg/L
No 0
A-
110 Taylorville 13.3 µg/L
No 0
A-
111 Oak Park 13.2 µg/L
No 2
A
112 Glenview 13.2 µg/L
No 3
B+
113 Chicago Ridge 13.2 µg/L
No 1
A-
114 Lombard 13.2 µg/L
No 1
A-
115 Palos Hills 13.2 µg/L
No 3
A
116 Glen Ellyn 13.1 µg/L
No 0
A-
117 Carol Stream 13.1 µg/L
No 1
A-
118 Niles 13.1 µg/L
No 3
B
119 Washington 13.0 µg/L
No 5
C
120 Forest Park 13.0 µg/L
No 2
A-
121 Evergreen Park 12.9 µg/L
No 0
B+
122 Villa Park 12.9 µg/L
No 2
A
123 River Grove 12.5 µg/L
No 3
A-
124 Worth 12.5 µg/L
No 3
A
125 Burbank (South Stickney) 12.5 µg/L
No 7
B+
126 Streamwood 12.5 µg/L
No 2
A-
127 Evanston 12.4 µg/L
No 1
A+
128 Arlington Heights 12.4 µg/L
No 1
B-
129 Blue Island 12.3 µg/L
No 19
C
130 Bridgeview 12.3 µg/L
No 0
A-
131 Markham 12.3 µg/L
No 7
B
132 Oak Lawn 12.2 µg/L
No 2
B
133 Pontiac 12.1 µg/L
No 10
C
134 Schiller Park 12.0 µg/L
No 7
A-
135 Chicago 11.9 µg/L
No 68
F
136 Lincoln 11.9 µg/L
No 8
F
137 La Grange Park 11.8 µg/L
No 2
A
138 River Forest 11.8 µg/L
No 1
B+
139 Skokie 11.8 µg/L
No 9
C-
140 Summit 11.3 µg/L
No 1
B+
141 Oak Brook 11.3 µg/L
No 8
D
142 Mchenry 11.3 µg/L
No 57
F
143 Freeport 11.3 µg/L
No 19
B-
144 Dolton 11.2 µg/L
No 2
C
145 Elgin 11.1 µg/L
No 9
C-
146 Lisle 11.1 µg/L
No 2
A-
147 Des Plaines 11.0 µg/L
No 0
B+
148 Brookfield 10.8 µg/L
No 0
A-
149 North Lake 10.8 µg/L
No 1
B+
150 Park Ridge 10.7 µg/L
No 1
B
151 Maywood 10.6 µg/L
No 3
C+
152 Bartlett 10.4 µg/L
No 49
B-
153 Cicero 9.7 µg/L
No 3
B
154 Peoria 9.6 µg/L
No 5
D+
155 Harvey 9.6 µg/L
No 1
B
156 Melrose Park 9.3 µg/L
No 6
C
157 Crystal Lake 9.1 µg/L
No 4
A-
158 Winnetka 9.1 µg/L
No 0
A
159 Lyons 8.7 µg/L
No 7
A-
160 Norridge 8.6 µg/L
No 0
A-
161 Wilmette 8.5 µg/L
No 0
A
162 Morton 8.2 µg/L
No 13
B-
163 Normal 8.1 µg/L
No 3
D+
164 Rantoul 7.5 µg/L
No 54
D
165 Round Lake Beach 7.3 µg/L
No 3
B+
166 Beardstown 7.1 µg/L
No 1
A
167 Lindenhurst 6.9 µg/L
No 0
B+
168 Wauconda 6.9 µg/L
No 3
A
169 Canton 6.8 µg/L
No 7
B+
170 East Peoria 6.7 µg/L
No 133
F
171 Dixon 6.7 µg/L
No 57
C
172 Calumet City 6.6 µg/L
No 3
C-
173 Lake In The Hills 6.6 µg/L
No 4
A-
174 Troy 6.6 µg/L
No 3
A-
175 Chicago Heights 6.6 µg/L
No 0
B+
176 Charleston 6.3 µg/L
No 10
C+
177 Plano 6.3 µg/L
No 0
B+
178 Lansing 6.3 µg/L
No 2
B
179 Loves Park 6.3 µg/L
No 35
B
180 Round Lake 6.3 µg/L
No 3
A-
181 South Elgin 6.3 µg/L
No 28
C
182 Mundelein 5.9 µg/L
No 22
F
183 Saint Charles 5.8 µg/L
No 3
B+
184 Glen Carbon 5.7 µg/L
No 0
B
185 Carpentersville 5.7 µg/L
No 0
B+
186 Edwardsville 5.6 µg/L
No 18
D+
187 Warrenville 5.4 µg/L
No 0
B+
188 Batavia 5.4 µg/L
No 33
B+
189 Yorkville 5.3 µg/L
No 83
C+
190 Cary 5.2 µg/L
No 11
A-
191 Robinson 5.2 µg/L
No 0
A-
192 Grays Lake 5.0 µg/L
No 6
A
193 Bethalto 4.8 µg/L
No 0
A-
194 Dallas City 4.7 µg/L
No 1
B+
195 Lockport 4.6 µg/L
No 20
F
196 Morris 4.6 µg/L
No 74
F
197 Libertyville 4.3 µg/L
No 14
C
198 Gurnee 4.3 µg/L
No 4
A
199 Barry 4.2 µg/L
No 3
B+
200 Collinsville 3.9 µg/L
No 12
C-
201 Machesney Park 3.9 µg/L
No 4
B
202 Vernon Hills 3.9 µg/L
No 4
B+
203 Park Forest 3.8 µg/L
No 2
A
204 Rockford 3.5 µg/L
No 43
F
205 Huntley 3.5 µg/L
No 15
A
206 Lake Zurich 3.5 µg/L
No 35
B+
207 Romeoville 3.3 µg/L
No 17
A-
208 West Chicago 3.2 µg/L
No 22
A
209 Crest Hill 3.1 µg/L
No 12
F
210 Sycamore 3.0 µg/L
No 31
A-
211 De Kalb 2.9 µg/L
No 7
B+
212 Coal Valley 2.9 µg/L
No 12
F
213 Geneva 2.8 µg/L
No 67
B-
214 South Beloit 2.8 µg/L
No 3
A-
215 Odell 2.7 µg/L
No 14
A
216 Polo 2.7 µg/L
No 2
A
217 Pekin 2.5 µg/L
No 1
D+
218 Barrington 2.5 µg/L
No 3
B+
219 Poplar Grove 2.4 µg/L
No 8
C+
220 Peru 2.1 µg/L
No 92
F
221 Coleta 2.0 µg/L
No 1
A-
222 Pecatonica 1.8 µg/L
No 1
A-
223 Sugar Grove 1.6 µg/L
No 7
A-
224 Antioch 1.6 µg/L
No 6
C-
225 Ottawa 1.4 µg/L
No 62
F
226 Byron 1.3 µg/L
No 1
C+
227 Aledo 1.1 µg/L
No 6
A+
228 Kewanee 1.0 µg/L
No 34
B
229 Carbon Cliff 0.9 µg/L
No 12
B+
230 Minooka 0.9 µg/L
No 6
A-
231 Chillicothe 0.8 µg/L
No 11
D+
232 Shorewood 0.7 µg/L
No 4
A-
233 Warren 0.6 µg/L
No 0
B+
234 Richton Park 0.5 µg/L
No 5
F
235 Prairie Du Rochr 0.4 µg/L
No 1
B-
236 Lemont 0.1 µg/L
No 26
D
237 Joliet 0.0 µg/L
No 131
F
238 Oswego 0.0 µg/L
No 24
A-
239 North Aurora 0.0 µg/L
No 27
A-

Frequently asked questions about haa5 in Illinois

What is HAA5 and why does it appear in Illinois tap water?

HAA5 (haloacetic acids) are disinfection byproducts that form when chlorine reacts with naturally occurring organic matter in source water. They are a normal byproduct of the disinfection process that makes water safe to drink. 1 cities in Illinois exceed the EPA MCL of 60 µg/L. The state average is 12.7 µg/L.

How can I reduce HAA5 exposure from Illinois drinking water?

Activated carbon filters (granular or block) effectively reduce HAA5. Refrigerator filters and under-sink carbon systems are convenient options. Unlike lead or PFAS, HAA5 levels can also be reduced by letting water stand in an open container, as some species evaporate. Boiling does NOT remove HAA5 and can concentrate them by reducing water volume.

Which Illinois cities have the highest HAA5 levels?

The cities with the highest average HAA5 concentrations in Illinois are: Caseyville (90.0 µg/L), Dieterich (55.3 µg/L), Sparta (42.0 µg/L), O Fallon (41.2 µg/L), Essex (37.9 µg/L). Note: this data is from UCMR 4 testing (2018–2020) and may not reflect current levels.