Iowa Water Quality Report (2026)

By Echo Water Research Team 21 min read
Iowa Water Quality Report (2026)

Iowa Tap Water Quality Report

612 cities analyzed • 2,332,665 people served

Updated March 2026 • Data from EWG & EPA SDWIS

612
Cities Analyzed
8.9
Avg Above Guidelines
2,332,665
Total Population Served
Best Water Quality
Stacyville (0 above guidelines)
Most Concerns
Elk Run Heights (19 above guidelines)

Most Common Contaminants in Iowa

Contaminant Found In % of Cities
Chloroform carcinogen 533 of 612 87%
Total trihalomethanes (TTHMs) carcinogen 516 of 612 84%
Bromodichloromethane carcinogen 494 of 612 81%
Dichloroacetic acid carcinogen 466 of 612 76%
Dibromochloromethane carcinogen 464 of 612 76%
Trichloroacetic acid carcinogen 428 of 612 70%
Haloacetic acids (HAA5) carcinogen 416 of 612 68%
Nitrate carcinogen 407 of 612 67%
Dibromoacetic acid 384 of 612 63%
Fluoride 380 of 612 62%

City-by-City Water Quality Rankings

Ranked by number of contaminants above EWG health guidelines (most to fewest).

# City Detected Above Guidelines Above Legal People Served
1 Waterloo 33 19 0 69,504
2 Elk Run Heights 33 19 0 1,069
3 Sioux City 40 18 1 85,791
4 Hudson 37 18 0 2,546
5 Davenport 23 15 0 147,720
6 Ankeny 33 15 0 68,090
7 Waukee 32 15 0 23,940
8 Muscatine 29 15 0 23,797
9 Tama 25 15 0 13,920
10 Keokuk 28 15 0 9,900
11 Rock Valley 21 15 0 4,059
12 Carter Lake 30 15 0 3,796
13 West Burlington 33 15 0 3,728
14 Brooklyn 26 15 0 1,505
15 Dysart 25 15 0 1,281
16 Malcom 26 15 0 270
17 Deep River 29 15 0 249
18 Chelsea 25 15 0 229
19 Clutier 25 15 0 213
20 Millersburg 25 15 0 135
21 Barnes City 26 15 0 0
22 West Des Moines 37 14 0 68,723
23 Dubuque 23 14 0 59,667
24 Burlington 28 14 1 26,015
25 Altoona 23 14 0 19,565
26 Oskaloosa 30 14 0 11,558
27 May City 26 14 0 6,940
28 Orange City 24 14 0 6,267
29 Harlan 18 14 0 5,067
30 Osage 16 14 0 3,637
31 Sibley 27 14 0 2,860
32 Lamoni 28 14 0 2,104
33 Sioux Rapids 20 14 0 920
34 Denver 25 14 0 548
35 Scranton 25 14 0 504
36 Little Rock 26 14 0 439
37 Ashton 26 14 0 436
38 Oto 22 14 0 72
39 Colfax 26 14 0 0
40 Buffalo 20 14 0 0
41 Baxter 28 14 0 0
42 Lake Park 29 14 0 0
43 Alton 24 14 0 0
44 Cedar Falls 26 13 0 40,713
45 Ottumwa 29 13 0 25,529
46 Bondurant 31 13 0 7,690
47 Red Oak 24 13 0 5,596
48 Carlisle 21 13 0 4,160
49 Epworth 23 13 0 2,023
50 Slater 22 13 0 1,548
51 Fairbank 25 13 0 1,111
52 Tabor 17 13 0 1,014
53 Adel 17 13 0 960
54 Readlyn 20 13 0 845
55 Mcgregor 20 13 0 747
56 Hedrick 26 13 0 728
57 Boyden 25 13 0 701
58 South English 26 13 0 252
59 Maharishi Vedic City 26 13 0 68
60 Ida Grove 23 13 0 0
61 Nashua 20 13 0 0
62 Shenandoah 20 13 0 0
63 Agency 27 13 0 0
64 Sutherland 20 13 0 0
65 Des Moines 29 12 0 245,123
66 Iowa City 22 12 0 68,753
67 Urbandale 29 12 0 45,600
68 Newton 24 12 0 37,820
69 Johnston 30 12 0 24,064
70 Coralville 18 12 0 22,318
71 Indianola 31 12 0 20,095
72 Clive 30 12 0 18,601
73 Norwalk 29 12 0 12,799
74 Boone 23 12 0 12,460
75 Lemars 23 12 0 10,571
76 Waverly 22 12 0 10,394
77 Hiawatha 18 12 0 7,183
78 Independence 18 12 0 6,064
79 Polk City 35 12 0 5,543
80 Vinton 23 12 0 4,938
81 Camanche 23 12 0 4,570
82 Jefferson 23 12 0 4,182
83 Manning 21 12 0 3,573
84 Hospers 25 12 0 3,400
85 Cherokee 20 12 0 3,315
86 Madrid 20 12 0 2,802
87 Jesup 22 12 0 2,508
88 Monroe 24 12 0 2,007
89 Sigourney 13 12 0 2,004
90 Montezuma 26 12 0 1,700
91 Remsen 18 12 0 1,678
92 State Center 18 12 0 1,411
93 Sanborn 18 12 0 1,392
94 Aplington 20 12 0 1,126
95 Odebolt 20 12 0 994
96 Larchwood 17 12 0 926
97 Neola 20 12 0 918
98 Sully 24 12 0 881
99 Melbourne 24 12 0 786
100 Gilman 24 12 0 542
101 Spillville 19 12 0 385
102 Lynnville 24 12 0 380
103 Pleasant Hill 30 12 0 350
104 Brandon 20 12 0 341
105 Williams 19 12 0 315
106 Ridgeway 23 12 0 275
107 Rhodes 24 12 0 271
108 Mallard 15 12 1 257
109 Riverton 14 12 0 250
110 Luxemburg 20 12 0 245
111 Halbur 21 12 0 243
112 Laurel 24 12 0 220
113 Pilot Mound 16 12 0 163
114 Gilbertville 23 12 0 0
115 Galva 20 12 0 0
116 Colo 25 12 0 0
117 Pocahontas 20 12 0 0
118 Hawarden 17 12 0 0
119 Castana 21 12 0 0
120 Linn Grove 15 12 0 0
121 Conrad 24 12 0 0
122 Pomeroy 17 12 0 0
123 Dedham 22 12 0 0
124 Irwin 22 12 0 0
125 Clemons 25 12 0 0
126 Denison 24 12 0 0
127 Paullina 23 12 0 0
128 Ute 17 12 0 0
129 Beaman 25 12 0 0
130 Collins 24 12 0 0
131 Granville 25 12 0 0
132 Maxwell 21 12 0 0
133 Montour 24 12 0 0
134 Council Bluffs 21 11 0 64,447
135 Spencer 20 11 0 11,325
136 Pella 23 11 0 11,052
137 Carroll 24 11 0 10,321
138 Grinnell 23 11 0 9,564
139 Sioux Center 19 11 0 8,231
140 Perry 21 11 0 7,836
141 Estherville 12 11 0 5,904
142 Winterset 17 11 0 5,428
143 Iowa Falls 14 11 0 5,106
144 Dyersville 23 11 0 4,477
145 Avoca 15 11 0 4,250
146 Huxley 19 11 0 4,244
147 Clarinda 12 11 0 3,225
148 Rock Rapids 19 11 0 2,611
149 West Branch 14 11 0 2,509
150 Marengo 13 11 0 2,435
151 Toledo 21 11 0 2,369
152 Dallas Center 13 11 0 1,901
153 Leon 19 11 0 1,822
154 Corning 23 11 0 1,735
155 Mediapolis 21 11 0 1,688
156 Hartley 19 11 0 1,605
157 Guthrie Center 19 11 0 1,593
158 Traer 19 11 0 1,583
159 Corydon 24 11 0 1,526
160 Monona 21 11 0 1,471
161 Earlham 22 11 0 1,420
162 Shellsburg 19 11 0 1,407
163 Logan 14 11 0 1,397
164 Nora Springs 21 11 0 1,369
165 Lake View 19 11 0 1,133
166 Sloan 15 11 0 1,042
167 Janesville 24 11 0 1,034
168 Lansing 20 11 0 983
169 Legrand 25 11 0 905
170 Gladbrook 25 11 0 799
171 West Bend 24 11 0 791
172 Milo 22 11 0 788
173 Wheatland 13 11 0 775
174 Decorah 19 11 0 775
175 Wall Lake 17 11 0 755
176 Grand Junction 13 11 0 725
177 Oxford 15 11 0 722
178 Wellsburg 24 11 0 720
179 Elgin 12 11 0 685
180 Moravia 23 11 0 637
181 Seymour 23 11 0 637
182 Kellogg 21 11 0 617
183 Moulton 23 11 0 607
184 Elk Horn 15 11 0 601
185 Everly 16 11 0 575
186 Zearing 25 11 0 528
187 Truro 22 11 0 525
188 Humeston 23 11 0 522
189 New Virginia 22 11 0 498
190 Garwin 25 11 0 481
191 Russell 23 11 0 477
192 Batavia 22 11 0 430
193 Martensdale 21 11 0 421
194 Earling 15 11 0 397
195 Washinginton 24 11 0 390
196 Livermore 16 11 0 383
197 New Vienna 20 11 0 382
198 Massena 14 11 0 364
199 Pierson 20 11 0 337
200 Mystic 22 11 0 322
201 Rockwell City 18 11 0 300
202 Milton 23 11 0 264
203 Defiance 19 11 0 250
204 Lineville 22 11 0 243
205 Panama 15 11 0 235
206 Allerton 24 11 0 179
207 Wallingford 12 11 0 165
208 Bristow 19 11 0 145
209 Superior 17 11 0 132
210 Saint Charles 21 11 0 108
211 Clayton 19 11 0 45
212 Chariton 23 11 0 0
213 Blakesburg 22 11 0 0
214 Grundy Center 24 11 0 0
215 Kingsley 18 11 0 0
216 Albia 24 11 0 0
217 Elma 12 11 0 0
218 Preston 20 11 0 0
219 Inwood 23 11 0 0
220 Gilmore City 18 11 0 0
221 Akron 20 11 0 0
222 Cincinnati 22 11 0 0
223 Cantril 23 11 0 0
224 Dike 24 11 0 0
225 Hanlontown 20 11 0 0
226 Onawa 19 11 0 0
227 Atlantic 17 11 0 0
228 Templeton 21 11 0 0
229 Lester 18 11 0 0
230 Keosauqua 24 11 0 0
231 Doon 23 11 0 0
232 Brayton 15 11 0 0
233 Exira 15 11 0 0
234 Lovilia 23 11 0 0
235 Alvord 23 11 0 0
236 Holstein 12 11 0 0
237 Bloomfield 22 11 0 0
238 Bancroft 14 11 0 0
239 Centerville 21 10 0 32,000
240 Mason City 19 10 0 27,338
241 Spirit Lake 18 10 0 6,167
242 Sheldon 14 10 0 5,512
243 Osceola 17 10 0 5,503
244 Sergeant Bluff 14 10 0 5,015
245 Monticello 12 10 0 4,040
246 Eldora 11 10 0 2,663
247 West Union 13 10 0 2,540
248 Mitchellville 17 10 0 2,515
249 Ogden 13 10 0 2,419
250 Bellevue 22 10 0 2,363
251 Greenfield 16 10 0 2,227
252 Alta 18 10 0 2,087
253 Sumner 14 10 0 2,030
254 Parkersburg 19 10 0 2,019
255 New London 20 10 0 1,910
256 Stuart 14 10 0 1,814
257 Prairie City 13 10 0 1,703
258 Woodbine 15 10 0 1,622
259 Woodward 13 10 0 1,346
260 Shell Rock 19 10 0 1,268
261 Fayette 19 10 0 1,256
262 Glidden 12 10 0 1,151
263 Villisca 21 10 0 1,132
264 Sheffield 16 10 0 1,130
265 George 11 10 0 1,077
266 Allison 18 10 0 966
267 Primghar 18 10 0 896
268 Whittemore 13 10 0 875
269 Victor 18 10 0 875
270 Cambridge 14 10 0 827
271 Fontanelle 17 10 0 676
272 Goldfield 11 10 0 622
273 Clermont 11 10 0 586
274 New Hartford 13 10 0 570
275 Ocheyedan 11 10 0 439
276 Delhi 20 10 0 420
277 Worthington 19 10 0 382
278 Churdan 17 10 0 375
279 Kelley 18 10 0 304
280 Amana 12 10 0 300
281 Salem 21 10 0 272
282 Harvey 17 10 0 236
283 Renwick 12 10 0 234
284 Randolph 11 10 0 189
285 Randall 13 10 0 154
286 Geneva 11 10 0 136
287 Somers 11 10 0 128
288 Battle Creek 15 10 0 0
289 Lenox 21 10 0 0
290 Rolfe 24 10 0 0
291 Tripoli 18 10 0 0
292 Central City 17 10 0 0
293 Blairstown 18 10 0 0
294 Floyd 22 10 0 0
295 Algona 13 10 0 0
296 Fonda 18 10 0 0
297 Early 16 10 0 0
298 Wapello 17 10 0 0
299 Birmingham 21 10 0 0
300 Audubon 16 10 0 0
301 Farragut 13 10 0 0
302 Charter Oak 13 10 0 0
303 Garnavillo 18 10 0 0
304 Donnellson 16 10 0 0
305 Northwood 13 10 0 0
306 Fort Dodge 18 9 0 25,874
307 Creston 21 9 0 19,488
308 Storm Lake 23 9 0 11,431
309 Bouton 13 9 0 9,447
310 Ireton 19 9 0 5,170
311 Manchester 11 9 0 5,065
312 Humboldt 12 9 0 4,792
313 Hampton 15 9 0 4,337
314 Waukon 12 9 0 3,827
315 Emmetsburg 17 9 0 3,706
316 Williamsburg 12 9 0 3,345
317 Milford 16 9 0 3,321
318 Solon 11 9 0 3,018
319 Hull 11 9 0 2,384
320 Peosta 16 9 0 2,278
321 Guttenberg 20 9 0 1,817
322 Mount Ayr 22 9 0 1,683
323 Granger 11 9 0 1,654
324 Walcott 9 9 0 1,551
325 Winfield 11 9 0 1,035
326 Lawton 11 9 0 943
327 Van Horne 17 9 0 881
328 Dunkerton 21 9 0 842
329 Schleswig 11 9 0 830
330 Glenwood 12 9 0 823
331 Rockford 15 9 0 758
332 Redfield 13 9 0 744
333 Shelby 12 9 0 727
334 Murray 21 9 0 684
335 Radcliffe 11 9 0 561
336 Thompson 12 9 0 499
337 Marquette 17 9 0 429
338 Oxford Junction 11 9 0 424
339 Vail 21 9 0 396
340 Plainfield 15 9 0 393
341 Diagonal 21 9 0 344
342 Westside 20 9 0 285
343 Macedonia 9 9 0 275
344 Auburn 18 9 0 265
345 Maurice 19 9 0 265
346 Lu Verne 10 9 0 258
347 Cumberland 13 9 0 256
348 Leland 13 9 0 255
349 Quimby 17 9 0 249
350 Hancock 12 9 0 200
351 Lidderdale 20 9 0 166
352 Woolstock 11 9 0 144
353 Monmouth 11 9 0 129
354 Craig 20 9 0 79
355 Swan 12 9 0 76
356 Mapleton 11 9 0 0
357 Correctionville 17 9 0 0
358 Bedford 23 9 0 0
359 Roland 13 9 0 0
360 Hamburg 11 9 0 0
361 Manilla 14 9 0 0
362 Deloit 9 9 0 0
363 Dakota City 14 9 0 0
364 Nevada 11 9 0 0
365 Swea City 10 9 0 0
366 Kanawha 11 9 0 0
367 Fenton 12 9 0 0
368 Marathon 12 9 0 0
369 Elkader 13 9 0 0
370 Lakota 10 9 0 0
371 Carson 12 9 0 0
372 Wilton 12 9 0 0
373 Alden 13 9 0 0
374 Pacific Junction 11 9 0 0
375 Anita 10 9 0 0
376 Essex 13 9 0 0
377 Kiron 11 9 0 0
378 Lytton 11 9 0 0
379 Merrill 14 9 0 0
380 Anthon 12 9 0 0
381 Story City 11 9 0 0
382 Cedar Rapids 21 8 0 141,420
383 Fort Madison 14 8 0 11,087
384 Maquoketa 11 8 0 6,128
385 Asbury 9 8 0 5,943
386 Knoxville 12 8 0 5,687
387 Evansdale 20 8 0 4,561
388 Mount Vernon 14 8 0 4,527
389 Eagle Grove 9 8 0 3,601
390 Belmond 9 8 0 2,463
391 Eldridge 11 8 0 2,389
392 Columbus Junction 10 8 0 1,830
393 Urbana 18 8 0 1,554
394 Oakland 11 8 0 1,524
395 St. Ansgar 10 8 0 1,161
396 Riverside 11 8 0 1,060
397 Aurelia 17 8 0 968
398 Gowrie 9 8 0 952
399 West Point 15 8 0 921
400 Ossian 16 8 0 802
401 Okoboji 15 8 0 768
402 Montrose 13 8 0 738
403 Stanton 11 8 0 683
404 Olin 12 8 0 651
405 Dexter 12 8 0 640
406 Farmington 14 8 0 579
407 Wyoming 11 8 0 523
408 Dows 12 8 0 521
409 Dow City 8 8 0 485
410 Casey 12 8 0 387
411 New Market 11 8 0 385
412 Duncombe 9 8 0 384
413 Plymouth 10 8 0 378
414 Orient 9 8 0 368
415 Lacona 14 8 0 361
416 Middletown 12 8 0 336
417 Peterson 14 8 0 322
418 Sheldahl 12 8 0 307
419 Newell 10 8 0 295
420 Yale 12 8 0 267
421 Oakville 12 8 0 200
422 Stout 8 8 0 191
423 Shambaugh 12 8 1 159
424 Swaledale 10 8 0 144
425 Ft Dodge 12 8 0 136
426 Kansas City 11 8 0 100
427 Morley 16 8 0 98
428 Alta Vista 8 8 0 55
429 St. Olaf 13 8 0 27
430 Corwith 8 8 0 0
431 Dunlap 9 8 0 0
432 Washta 16 8 0 0
433 Center Point 20 8 0 0
434 Danbury 8 8 0 0
435 Whiting 12 8 0 0
436 Calmar 13 8 0 0
437 Lost Nation 10 8 0 0
438 Grafton 13 8 0 0
439 Laurens 14 8 0 0
440 Emerson 12 8 0 0
441 Wayland 9 8 0 0
442 Adair 17 8 0 0
443 Arnolds Park 13 8 0 0
444 Mount Pleasant 16 8 1 0
445 Melcher Dallas 16 8 0 0
446 Pleasantville 17 8 0 0
447 Coon Rapids 14 8 0 0
448 Hinton 8 8 0 0
449 Arlington 16 8 0 0
450 Garner 11 8 0 0
451 Klemme 13 8 0 0
452 Van Meter 11 8 0 0
453 Webster City 11 7 0 7,825
454 Postville 12 7 0 2,503
455 Moville 7 7 0 1,687
456 North English 10 7 0 1,065
457 Treynor 9 7 0 1,049
458 Eddyville 7 7 0 1,029
459 Griswold 11 7 0 1,017
460 Greene 16 7 0 990
461 Princeton 10 7 0 923
462 Winthrop 15 7 0 840
463 Riceville 17 7 0 816
464 Ruthven 10 7 0 779
465 Schaller 18 7 0 729
466 Earlville 7 7 0 724
467 Badger 11 7 0 561
468 Ainsworth 12 7 0 511
469 Maynard 15 7 0 476
470 Hawkeye 14 7 0 438
471 New Albin 14 7 0 432
472 Lewis 7 7 0 357
473 Elliott 8 7 0 345
474 Terril 9 7 0 334
475 Marble Rock 12 7 0 271
476 Protivin 17 7 0 269
477 Wadena 12 7 0 209
478 Jamaica 10 7 0 195
479 Westgate 9 7 0 192
480 Mechanicsville 9 7 0 0
481 Durant 11 7 0 0
482 Fertile 7 7 0 0
483 New Hampton 11 7 0 0
484 Lime Springs 9 7 0 0
485 Atkins 12 7 0 0
486 Palmer 10 7 0 0
487 Kensett 10 7 0 0
488 Alburnett 18 7 0 0
489 Little Sioux 11 7 0 0
490 Soldier 7 7 0 0
491 Jewell 10 7 0 0
492 Ames 14 6 0 55,177
493 West Liberty 8 6 0 3,858
494 Clarion 10 6 0 2,810
495 Laporte City 7 6 0 2,284
496 Reinbeck 14 6 0 1,662
497 Sidney 10 6 0 1,070
498 Graettinger 7 6 0 897
499 Keota 7 6 0 897
500 Walnut 8 6 0 747
501 Ventura 11 6 0 716
502 Grand Mound 7 6 0 615
503 Norway 8 6 0 466
504 Grandview 9 6 0 437
505 Holy Cross 9 6 0 356
506 Manly 9 6 0 222
507 Smithland 10 6 0 181
508 Keystone 16 6 0 0
509 Moorhead 9 6 0 0
510 Hornick 9 6 0 0
511 Clarence 8 6 0 0
512 Pisgah 13 6 0 0
513 Ellsworth 8 6 0 0
514 North Liberty 10 5 0 20,491
515 Clear Lake 8 5 0 7,777
516 Panora 7 5 0 2,900
517 Ely 8 5 0 2,328
518 Sac City 17 5 0 2,063
519 Wellman 9 5 0 1,524
520 Volga 7 5 0 203
521 Vincent 7 5 0 181
522 Rowan 10 5 0 121
523 Miles 6 5 0 109
524 Springville 13 5 0 85
525 Forest City 6 5 0 0
526 Britt 8 5 0 0
527 Blencoe 7 5 0 0
528 Sabula 9 5 0 0
529 Bode 8 5 0 0
530 Charles City 14 4 0 7,448
531 Washington 7 4 0 7,352
532 Lake Mills 8 4 0 2,158
533 Farley 15 4 0 1,766
534 Dumont 8 4 0 1,269
535 Anamosa 5 4 0 1,230
536 Edgewood 13 4 0 909
537 Hubbard 7 4 0 860
538 Calamus 6 4 0 156
539 Varina 9 4 0 68
540 Breda 5 4 0 0
541 Cresco 5 4 0 0
542 Manson 6 4 0 0
543 Olds 5 4 0 0
544 Marcus 11 4 0 0
545 Marion 12 3 0 41,623
546 Marshalltown 9 3 0 27,591
547 Grimes 9 3 0 15,392
548 Strawberry Point 6 3 0 1,155
549 Lawler 4 3 0 406
550 Fort Atkinson 14 3 0 365
551 Rudd 9 3 0 358
552 Ryan 6 3 0 350
553 Kimballton 5 3 0 287
554 Springbrook 10 3 0 143
555 Hazleton 6 3 0 90
556 Goodell 7 3 0 0
557 Titonka 6 3 0 0
558 Ringsted 6 3 0 0
559 Dewitt 5 2 0 5,514
560 Leclaire 4 2 0 860
561 Morning Sun 7 2 0 752
562 Stratford 3 2 0 707
563 Coggon 2 2 0 701
564 Walker 2 2 0 688
565 Hopkinton 10 2 0 622
566 Walford 2 2 0 413
567 Colesburg 2 2 0 386
568 Tipton 2 2 0 340
569 Luana 10 2 0 301
570 Coulter 5 2 0 219
571 West Chester 7 2 0 144
572 Wiota 3 2 0 95
573 Fredericksburg 10 2 0 78
574 Belle Plaine 3 2 0 28
575 Vermillion 4 2 0 25
576 Fairfax 4 2 0 25
577 Stanwood 4 2 0 0
578 Burt 5 2 0 0
579 Woden 6 2 0 0
580 Bronson 7 2 0 0
581 Lowden 6 2 0 0
582 Fairfield 2 1 0 9,416
583 Oelwein 4 1 0 5,920
584 Tiffin 4 1 0 4,512
585 Rockwell 4 1 0 1,071
586 Brighton 2 1 0 584
587 Lamont 2 1 0 429
588 Harcourt 4 1 0 265
589 Goose Lake 2 1 0 239
590 Blue Grass 3 1 0 209
591 Missouri Valley 1 1 0 190
592 Prairieburg 3 1 0 160
593 Swisher 3 1 0 134
594 New Providence 3 1 0 100
595 Long Grove 1 1 0 83
596 Bettendorf 4 1 0 80
597 Oviedo 3 1 0 72
598 Kalona 3 1 0 67
599 Lisbon 3 1 0 60
600 Seattle 3 1 0 60
601 Le Claire 1 1 0 57
602 New Liberty 2 1 0 48
603 De Witt 3 1 0 25
604 Wesley 2 1 0 0
605 Hills 2 1 0 0
606 Magnolia 1 1 0 0
607 Cascade 2 1 0 0
608 Bernard 2 1 0 0
609 Stacyville 2 0 0 465
610 Stanhope 4 0 0 364
611 Low Moor 7 0 0 250
612 Los Angeles 2 0 0 245

Live in Iowa?

Get a free personalized water quality report for your address.

Check Your Water

Recommended Filtration for Iowa

Based on the most common contaminants found across Iowa (Chloroform, Total trihalomethanes (TTHMs), Bromodichloromethane), we recommend a reverse osmosis system or high-quality carbon block filter to remove disinfection byproducts and their precursors.

Echo RO System

Removes up to 99.9% of contaminants. The gold standard for drinking water in Iowa homes.

View RO Systems

Echo Whole-Home Filter

Protect every tap in your home from chlorine, VOCs, and disinfection byproducts.

View Whole-Home Filters

Echo Hydrogen Water Flask

Once your water is clean, supercharge it with molecular hydrogen for antioxidant and anti-inflammatory benefits.

Shop Hydrogen Flask

Frequently Asked Questions

Is Iowa tap water safe to drink?

Water quality varies significantly across Iowa. Of the 612 cities analyzed, the average city has 8.9 contaminants above EWG health guidelines. The best water quality was found in Stacyville. We recommend checking your specific city's report for detailed information.

What city has the best water in Iowa?

Based on our analysis, Stacyville has the fewest contaminants above EWG health guidelines in Iowa, with 0 above guideline levels.

What city has the worst water in Iowa?

Based on our analysis, Elk Run Heights has the most contaminants above EWG health guidelines in Iowa, with 19 above guideline levels.

What's the best water filter for Iowa residents?

For most Iowa households, we recommend a reverse osmosis (RO) system for drinking water and a whole-home filter for showers and baths. The specific recommendation depends on your city's contaminant profile — check your city's report for personalized guidance.

Data sources: Environmental Working Group (EWG) Tap Water Database, U.S. EPA Safe Drinking Water Information System (SDWIS)

Last updated: March 2026

Methodology: Contaminant levels are compared against both EPA legal limits (Maximum Contaminant Levels) and EWG health guidelines, which are often stricter and based on the latest scientific research.

Share
Leave a comment

This site is protected by hCaptcha and the hCaptcha Privacy Policy and Terms of Service apply.