Iowa Water Quality Report
436 cities tested · Average grade: A- · 2.9M people served
Live Water Alerts for Iowa →Latest water news in Iowa
Recent reporting on Iowa drinking water — boil-water advisories, regulatory action, and infrastructure events.
Iowa water quality overview
Iowa's drinking water quality is excellent overall, with an average score of 87.5 out of 100 across 436 cities tested. The median score is 89.6, serving a total population of 2,925,132 residents. 96% of cities earned an A or B grade, indicating broadly strong water quality infrastructure across the state. PFAS "forever chemicals" were detected in 112 of 436 cities tested (26%). 7 cities exceed the 2024 EPA maximum contaminant levels. 2 cities have lead levels exceeding the EPA action level of 15 ppb, often indicating aging infrastructure with lead service lines or lead solder. The state relies on a mix of water sources: 369 cities use groundwater while 63 draw from surface water such as rivers, lakes, and reservoirs.
Issues to watch in Iowa
Explore contaminants in Iowa
More contaminants tested in Iowa
Private-well water in Iowa
Based on USGS Powell Domestic-Well Database — 1,550 private wells sampled across Iowa. These wells are not regulated by the EPA; if you draw your tap from a private well, the public-system grade above does not apply to you.
Top industrial water polluters in Iowa
Industrial polluters nearby
The 10 facilities reporting the most pounds released to surface water in Iowa, 2023.
Total reported releases to surface water: 5,377,629 lbs
| Facility | Top chemical | To surface water (lbs/yr) |
|---|---|---|
TYSON FRESH MEATS INC-LOUISA COUNTY COLUMBUS JUNCTION, IA52738 | Nitrate compounds (water dissociable; reportable only when in aqueous solution) | 1,339,654 |
CF INDUSTRIES NITROGEN LLC-PORT NEAL NITROGEN COMPLEX SERGEANT BLUFF, IA51054 | Nitrate compounds (water dissociable; reportable only when in aqueous solution) | 876,722 |
AJINOMOTO HEALTH & NUTRITION N.A. INC. EDDYVILLE, IA52553 | Nitrate compounds (water dissociable; reportable only when in aqueous solution) | 768,487 |
AGRI STAR MEAT & POULTRY LLC. POSTVILLE, IA52162 | Nitrate compounds (water dissociable; reportable only when in aqueous solution) | 577,258 |
JBS PORK OTTUMWA, IA52501 | Nitrate compounds (water dissociable; reportable only when in aqueous solution) | 442,519 |
+ 5 more facilities
Source: EPA Toxic Release Inventory (TRI) 2023
How Iowa cities scored
Best Cities
Worst Cities
Water quality across Iowa
Each dot is a city, colored by its water quality grade. Size reflects population served. Click any city to view its full water report.
436 cities in Iowa
| # | City | Grade | Score | Population | Violations |
|---|---|---|---|---|---|
| 1 | Asbury | A+ | 97.8 | 6K | 0 |
| 2 | Cresco | A+ | 97 | 4K | 15 |
| 3 | Rockford | A+ | 95.9 | 762 | 5 |
| 4 | Gilman | A+ | 95.9 | 582 | 8 |
| 5 | Brooklyn | A+ | 95.8 | 15K | 13 |
| 6 | Bancroft | A+ | 95.7 | 711 | 8 |
| 7 | Evansdale | A+ | 95.4 | 5K | 5 |
| 8 | Glenwood | A+ | 95.2 | 5K | 27 |
| 9 | West Bend | A+ | 95.2 | 791 | 9 |
| 10 | Brooks | A+ | 95.1 | 3K | 6 |
| 11 | Sumner | A+ | 95.1 | 2K | 38 |
| 12 | Hartley | A+ | 95 | 2K | 0 |
| 13 | Rolfe | A+ | 95 | 509 | 35 |
| 14 | Charter Oak | A | 94.8 | 522 | 24 |
| 15 | Lenox | A | 94.7 | 1K | 6 |
| 16 | Winfield | A | 94.7 | 1K | 5 |
| 17 | Fairbank | A | 94.5 | 1K | 11 |
| 18 | Dakota City | A | 94.5 | 769 | 6 |
| 19 | Montrose | A | 94.5 | 738 | 7 |
| 20 | Strawberry Point | A | 94.4 | 1K | 6 |
| 21 | Villisca | A | 94.4 | 1K | 6 |
| 22 | Redfield | A | 94.4 | 744 | 8 |
| 23 | Eagle Grove | A | 94.3 | 4K | 5 |
| 24 | Monroe | A | 94.3 | 2K | 6 |
| 25 | Dexter | A | 94.3 | 693 | 9 |
| 26 | Hopkinton | A | 94.3 | 622 | 9 |
| 27 | Melcher-Dallas | A | 94.2 | 1K | 8 |
| 28 | Colo | A | 94.2 | 853 | 7 |
| 29 | Ainsworth | A | 94.2 | 511 | 6 |
| 30 | Cascade | A | 94.1 | 2K | 13 |
| 31 | Prairie City | A | 94.1 | 2K | 8 |
| 32 | Dows | A | 94 | 526 | 7 |
| 33 | Pocahontas | A | 93.9 | 2K | 7 |
| 34 | Central City | A | 93.9 | 1K | 12 |
| 35 | North English | A | 93.9 | 1K | 16 |
| 36 | Lansing | A | 93.9 | 983 | 6 |
| 37 | Riceville | A | 93.9 | 816 | 43 |
| 38 | Jesup | A | 93.8 | 3K | 19 |
| 39 | New Hartford | A | 93.8 | 570 | 6 |
| 40 | Collins | A | 93.8 | 505 | 13 |
| 41 | Elma | A | 93.8 | 505 | 20 |
| 42 | Keota | A | 93.7 | 897 | 11 |
| 43 | Northwood | A | 93.6 | 2K | 10 |
| 44 | Carson | A | 93.6 | 766 | 7 |
| 45 | Murray | A | 93.6 | 684 | 20 |
| 46 | Huxley | A | 93.5 | 5K | 4 |
| 47 | Logan | A | 93.5 | 1K | 7 |
| 48 | New Sharon | A | 93.5 | 1K | 12 |
| 49 | Saint Ansgar | A | 93.5 | 1K | 12 |
| 50 | Hamburg | A | 93.5 | 890 | 25 |
| 51 | What Cheer | A | 93.5 | 607 | 10 |
| 52 | Story City | A | 93.4 | 3K | 7 |
| 53 | Hubbard | A | 93.4 | 860 | 10 |
| 54 | Manilla | A | 93.4 | 758 | 9 |
| 55 | Badger | A | 93.4 | 561 | 13 |
| 56 | Milford | A | 93.3 | 3K | 9 |
| 57 | Walcott | A | 93.3 | 2K | 6 |
| 58 | Inwood | A | 93.3 | 928 | 10 |
| 59 | Norwalk | A | 93.2 | 15K | 10 |
| 60 | Denison | A | 93.2 | 12K | 8 |
| 61 | Graettinger | A | 93.2 | 9K | 9 |
| 62 | Spirit Lake | A | 93.2 | 6K | 5 |
| 63 | Vinton | A | 93.2 | 5K | 8 |
| 64 | Belmond | A | 93.2 | 2K | 16 |
| 65 | Farley | A | 93.2 | 2K | 9 |
| 66 | State Center | A | 93.2 | 1K | 13 |
| 67 | Clarence | A | 93.2 | 1K | 20 |
| 68 | Sabula | A | 93.2 | 506 | 12 |
| 69 | Durant | A | 93.1 | 2K | 4 |
| 70 | Van Horne | A | 93.1 | 779 | 11 |
| 71 | Shenandoah | A | 93 | 5K | 17 |
| 72 | West Liberty | A | 93 | 4K | 15 |
| 73 | New London | A | 93 | 2K | 12 |
| 74 | Stuart | A | 93 | 2K | 22 |
| 75 | Coon Rapids | A | 93 | 1K | 1 |
| 76 | Odebolt | A | 93 | 994 | 14 |
| 77 | Walnut | A | 93 | 768 | 16 |
| 78 | Breda | A | 93 | 500 | 15 |
| 79 | Eldora | A | 92.9 | 3K | 3 |
| 80 | Grand Junction | A | 92.9 | 725 | 7 |
| 81 | Radcliffe | A | 92.9 | 561 | 28 |
| 82 | Marcus | A | 92.8 | 1K | 15 |
| 83 | Clive | A | 92.7 | 19K | 6 |
| 84 | Toledo | A | 92.7 | 2K | 19 |
| 85 | Rockwell | A | 92.6 | 1K | 12 |
| 86 | Sully | A | 92.6 | 881 | 26 |
| 87 | Richland | A | 92.6 | 542 | 17 |
| 88 | Anita | A | 92.5 | 972 | 7 |
| 89 | Conrad | A | 92.4 | 1K | 5 |
| 90 | Melbourne | A | 92.4 | 765 | 5 |
| 91 | Alburnett | A | 92.4 | 675 | 25 |
| 92 | Ely | A | 92.3 | 2K | 7 |
| 93 | Epworth | A | 92.3 | 2K | 5 |
| 94 | Walker | A | 92.3 | 688 | 8 |
| 95 | Bondurant | A | 92.2 | 9K | 6 |
| 96 | Nevada | A | 92.2 | 7K | 22 |
| 97 | Mount Vernon | A | 92.2 | 5K | 9 |
| 98 | New Hampton | A | 92.2 | 3K | 6 |
| 99 | Hawarden | A | 92.2 | 3K | 31 |
| 100 | Winthrop | A | 92.2 | 840 | 10 |
| 101 | Lake View | A | 92.1 | 1K | 11 |
| 102 | Gladbrook | A | 92.1 | 799 | 10 |
| 103 | Dayton | A | 92.1 | 772 | 14 |
| 104 | Brighton | A | 92.1 | 600 | 11 |
| 105 | Palo | A | 92 | 2K | 14 |
| 106 | Calmar | A | 92 | 1K | 8 |
| 107 | Wayland | A | 92 | 966 | 19 |
| 108 | Olin | A | 92 | 651 | 12 |
| 109 | Lake Park | A | 91.9 | 1K | 11 |
| 110 | Sloan | A | 91.9 | 1K | 8 |
| 111 | Wellsburg | A | 91.9 | 721 | 25 |
| 112 | Sheldon | A | 91.8 | 6K | 5 |
| 113 | Sergeant Bluff | A | 91.8 | 5K | 5 |
| 114 | Larchwood | A | 91.8 | 926 | 19 |
| 115 | Janesville | A | 91.7 | 1K | 12 |
| 116 | Jefferson | A | 91.6 | 4K | 9 |
| 117 | Albia | A | 91.6 | 4K | 24 |
| 118 | Garner | A | 91.6 | 3K | 3 |
| 119 | Sac City | A | 91.6 | 2K | 3 |
| 120 | Sigourney | A | 91.6 | 2K | 3 |
| 121 | Oakland | A | 91.6 | 2K | 3 |
| 122 | Aurelia | A | 91.6 | 968 | 3 |
| 123 | Garnavillo | A | 91.6 | 763 | 4 |
| 124 | Schaller | A | 91.6 | 729 | 9 |
| 125 | Whiting | A | 91.6 | 727 | 4 |
| 126 | Lakeside | A | 91.6 | 700 | 3 |
| 127 | Goldfield | A | 91.6 | 634 | 3 |
| 128 | Grundy Center | A | 91.5 | 3K | 3 |
| 129 | Traer | A | 91.5 | 2K | 12 |
| 130 | Buffalo Center | A | 91.5 | 857 | 4 |
| 131 | Correctionville | A | 91.5 | 766 | 4 |
| 132 | Morning Sun | A | 91.5 | 752 | 4 |
| 133 | Audubon | A | 91.4 | 2K | 4 |
| 134 | Earlham | A | 91.4 | 1K | 23 |
| 135 | Schleswig | A | 91.4 | 803 | 36 |
| 136 | Mount Pleasant | A | 91.3 | 11K | 27 |
| 137 | Perry | A | 91.3 | 8K | 17 |
| 138 | Oelwein | A | 91.3 | 6K | 9 |
| 139 | West Union | A | 91.3 | 3K | 4 |
| 140 | Elk Run Heights | A | 91.3 | 1K | 6 |
| 141 | Keosauqua | A | 91.3 | 961 | 11 |
| 142 | Adair | A | 91.3 | 809 | 41 |
| 143 | Anthon | A | 91.3 | 545 | 7 |
| 144 | Newton | A | 91.2 | 17K | 8 |
| 145 | Humboldt | A | 91.2 | 5K | 3 |
| 146 | Mount Ayr | A | 91.2 | 2K | 63 |
| 147 | Crescent | A | 91.2 | 778 | 14 |
| 148 | Grand Mound | A | 91.2 | 615 | 6 |
| 149 | Delmar | A | 91.2 | 542 | 3 |
| 150 | Lake Mills | A | 91.1 | 2K | 7 |
| 151 | Lake City | A | 91.1 | 2K | 48 |
| 152 | Sanborn | A | 91.1 | 1K | 33 |
| 153 | Fredericksburg | A | 91.1 | 987 | 7 |
| 154 | Le Grand | A | 91.1 | 910 | 9 |
| 155 | Merrill | A | 91.1 | 717 | 58 |
| 156 | Wyoming | A | 91.1 | 523 | 8 |
| 157 | Estherville | A | 91 | 6K | 2 |
| 158 | Pleasantville | A | 91 | 2K | 4 |
| 159 | Laurens | A | 91 | 1K | 3 |
| 160 | Mapleton | A | 91 | 1K | 23 |
| 161 | Lawton | A | 91 | 943 | 10 |
| 162 | Kellogg | A | 91 | 617 | 7 |
| 163 | Adel | A | 90.9 | 6K | 13 |
| 164 | Preston | A | 90.9 | 949 | 3 |
| 165 | Independence | A | 90.8 | 6K | 11 |
| 166 | Long Grove | A | 90.8 | 988 | 61 |
| 167 | Okoboji | A | 90.7 | 793 | 18 |
| 168 | Hinton | A | 90.6 | 935 | 13 |
| 169 | Le Mars | A | 90.5 | 11K | 17 |
| 170 | Manchester | A | 90.5 | 5K | 3 |
| 171 | Camanche | A | 90.5 | 5K | 17 |
| 172 | Waukon | A | 90.5 | 4K | 4 |
| 173 | Denver | A | 90.5 | 2K | 14 |
| 174 | Dallas Center | A | 90.5 | 2K | 2 |
| 175 | Clarksville | A | 90.5 | 1K | 8 |
| 176 | Arcadia | A | 90.5 | 525 | 6 |
| 177 | Mitchellville | A | 90.4 | 3K | 11 |
| 178 | Guttenberg | A | 90.4 | 2K | 8 |
| 179 | Dike | A | 90.4 | 1K | 5 |
| 180 | Paullina | A | 90.4 | 996 | 6 |
| 181 | Milo | A | 90.4 | 788 | 25 |
| 182 | Greenfield | A | 90.3 | 4K | 23 |
| 183 | La Porte City | A | 90.3 | 2K | 11 |
| 184 | Truro | A | 90.3 | 525 | 18 |
| 185 | Spencer | A | 90.2 | 18K | 16 |
| 186 | Dyersville | A | 90.2 | 4K | 43 |
| 187 | Decatur City | A | 90.2 | 1K | 5 |
| 188 | Newell | A | 90.2 | 906 | 10 |
| 189 | Farmington | A | 90.2 | 601 | 30 |
| 190 | Roland | A | 90.1 | 1K | 6 |
| 191 | Alden | A | 90.1 | 763 | 11 |
| 192 | Albert City | A | 90.1 | 677 | 12 |
| 193 | Webster City | A | 90 | 8K | 8 |
| 194 | Avoca | A | 90 | 6K | 15 |
| 195 | Luther | A | 90 | 5K | 20 |
| 196 | Onawa | A- | 90 | 3K | 2 |
| 197 | Springville | A | 90 | 1K | 18 |
| 198 | Alton | A | 90 | 1K | 12 |
| 199 | Kingsley | A- | 89.9 | 1K | 11 |
| 200 | Gowrie | A- | 89.9 | 954 | 7 |
| 201 | Newhall | A- | 89.9 | 881 | 15 |
| 202 | Exira | A- | 89.9 | 764 | 7 |
| 203 | Hedrick | A- | 89.9 | 728 | 9 |
| 204 | Moulton | A- | 89.9 | 607 | 2 |
| 205 | Waukee | A- | 89.8 | 33K | 26 |
| 206 | Fort Madison | A- | 89.8 | 23K | 37 |
| 207 | Clear Lake | A- | 89.8 | 8K | 22 |
| 208 | May City | A- | 89.8 | 7K | 3 |
| 209 | South Amana | A- | 89.8 | 3K | 15 |
| 210 | Wall Lake | A- | 89.8 | 2K | 30 |
| 211 | Ogden | A- | 89.8 | 2K | 14 |
| 212 | Van Meter | A- | 89.8 | 2K | 46 |
| 213 | Essex | A- | 89.8 | 722 | 27 |
| 214 | Battle Creek | A- | 89.8 | 700 | 33 |
| 215 | Harlan | A- | 89.7 | 5K | 1 |
| 216 | Ida Grove | A- | 89.7 | 2K | 18 |
| 217 | Wheatland | A- | 89.7 | 775 | 12 |
| 218 | Kanawha | A- | 89.7 | 658 | 2 |
| 219 | Storm Lake | A- | 89.6 | 12K | 8 |
| 220 | Tipton | A- | 89.6 | 3K | 2 |
| 221 | Wilton | A- | 89.6 | 3K | 4 |
| 222 | Hudson | A- | 89.6 | 3K | 4 |
| 223 | Alta | A- | 89.6 | 2K | 2 |
| 224 | Manly | A- | 89.6 | 1K | 2 |
| 225 | George | A- | 89.6 | 1K | 26 |
| 226 | Mechanicsville | A- | 89.6 | 1K | 13 |
| 227 | Eldon | A- | 89.6 | 927 | 28 |
| 228 | West Point | A- | 89.6 | 921 | 37 |
| 229 | Earlville | A- | 89.6 | 724 | 31 |
| 230 | Nashua | A- | 89.5 | 2K | 21 |
| 231 | Holstein | A- | 89.5 | 2K | 12 |
| 232 | Greene | A- | 89.5 | 994 | 3 |
| 233 | Edgewood | A- | 89.5 | 939 | 3 |
| 234 | Cambridge | A- | 89.5 | 832 | 10 |
| 235 | Lowden | A- | 89.4 | 807 | 4 |
| 236 | Ossian | A- | 89.4 | 802 | 3 |
| 237 | Fairfax | A- | 89.3 | 3K | 12 |
| 238 | Gilbertville | A- | 89.3 | 794 | 20 |
| 239 | Wellman | A- | 89.2 | 2K | 45 |
| 240 | Bedford | A- | 89.2 | 2K | 39 |
| 241 | Winterset | A- | 89.1 | 5K | 31 |
| 242 | Danville | A- | 89.1 | 923 | 26 |
| 243 | Cedar Falls | A- | 89 | 41K | 14 |
| 244 | Manning | A- | 89 | 5K | 38 |
| 245 | Clarion | A- | 89 | 3K | 4 |
| 246 | Bellevue | A- | 89 | 3K | 36 |
| 247 | Coggon | A- | 89 | 701 | 41 |
| 248 | Indianola | A- | 88.9 | 36K | 18 |
| 249 | Charles City | A- | 88.9 | 7K | 4 |
| 250 | Columbus Junction | A- | 88.9 | 2K | 7 |
| 251 | Remsen | A- | 88.9 | 2K | 12 |
| 252 | Shellsburg | A- | 88.9 | 1K | 53 |
| 253 | Primghar | A- | 88.9 | 896 | 4 |
| 254 | Peosta | A- | 88.8 | 3K | 65 |
| 255 | Atkins | A- | 88.7 | 2K | 32 |
| 256 | Tabor | A- | 88.7 | 1K | 6 |
| 257 | Elkhart | A- | 88.7 | 882 | 12 |
| 258 | Fontanelle | A- | 88.7 | 670 | 2 |
| 259 | Seymour | A- | 88.6 | 637 | 4 |
| 260 | Red Oak | A- | 88.5 | 9K | 79 |
| 261 | Shelby | A- | 88.5 | 727 | 18 |
| 262 | Everly | A- | 88.5 | 575 | 66 |
| 263 | Marshalltown | A- | 88.4 | 29K | 45 |
| 264 | Emmetsburg | A- | 88.3 | 4K | 3 |
| 265 | Akron | A- | 88.3 | 2K | 15 |
| 266 | Maquoketa | A- | 88.2 | 6K | 38 |
| 267 | Ackley | A- | 88.2 | 2K | 8 |
| 268 | Dysart | A- | 88.2 | 1K | 4 |
| 269 | Fayette | A- | 88.2 | 1K | 2 |
| 270 | Blairstown | A- | 88.1 | 738 | 9 |
| 271 | Williamsburg | A- | 88 | 3K | 15 |
| 272 | Dumont | A- | 88 | 635 | 4 |
| 273 | Sutherland | A- | 87.9 | 3K | 21 |
| 274 | Colfax | A- | 87.9 | 2K | 12 |
| 275 | Baxter | A- | 87.9 | 1K | 8 |
| 276 | Montezuma | A- | 87.8 | 3K | 14 |
| 277 | Aplington | A- | 87.8 | 1K | 11 |
| 278 | Minden | A- | 87.8 | 598 | 10 |
| 279 | Ireton | A- | 87.7 | 6K | 19 |
| 280 | Shell Rock | A- | 87.7 | 1K | 2 |
| 281 | Glidden | A- | 87.7 | 1K | 7 |
| 282 | Waterloo | A- | 87.6 | 70K | 23 |
| 283 | Sibley | A- | 87.6 | 3K | 4 |
| 284 | Minburn | A- | 87.5 | 13K | 14 |
| 285 | Cherokee | A- | 87.5 | 10K | 45 |
| 286 | Hampton | A- | 87.5 | 4K | 36 |
| 287 | Hull | A- | 87.5 | 2K | 3 |
| 288 | Monona | A- | 87.5 | 1K | 4 |
| 289 | Treynor | A- | 87.5 | 1K | 7 |
| 290 | Allison | A- | 87.5 | 966 | 4 |
| 291 | Boyden | A- | 87.5 | 701 | 5 |
| 292 | Keokuk | A- | 87.4 | 10K | 8 |
| 293 | Sioux Center | A- | 87.4 | 8K | 4 |
| 294 | Corydon | A- | 87.4 | 2K | 149 |
| 295 | Hazleton | A- | 87.4 | 803 | 37 |
| 296 | Elgin | A- | 87.4 | 685 | 7 |
| 297 | Atlantic | A- | 87.3 | 7K | 2 |
| 298 | Stratford | A- | 87.3 | 7K | 13 |
| 299 | Ventura | A- | 87.3 | 716 | 3 |
| 300 | Keystone | A- | 87.3 | 599 | 33 |
| 301 | Pella | A- | 87.2 | 11K | 85 |
| 302 | Corning | A- | 87.2 | 2K | 129 |
| 303 | Dunkerton | A- | 87.2 | 1K | 30 |
| 304 | Sheffield | A- | 87.1 | 1K | 8 |
| 305 | Maxwell | A- | 87.1 | 859 | 10 |
| 306 | Whittemore | A- | 87.1 | 522 | 10 |
| 307 | Grimes | A- | 87 | 17K | 24 |
| 308 | Orange City | A- | 87 | 6K | 5 |
| 309 | Carlisle | A- | 87 | 4K | 11 |
| 310 | Titonka | A- | 87 | 511 | 4 |
| 311 | Panora | A- | 86.9 | 4K | 100 |
| 312 | Norway | A- | 86.9 | 2K | 20 |
| 313 | Manson | A- | 86.9 | 2K | 33 |
| 314 | Urbana | A- | 86.7 | 2K | 1 |
| 315 | Griswold | A- | 86.7 | 1K | 13 |
| 316 | Readlyn | A- | 86.7 | 845 | 1 |
| 317 | Agency | A- | 86.7 | 620 | 1 |
| 318 | Swea City | A- | 86.7 | 584 | 1 |
| 319 | Postville | A- | 86.6 | 3K | 8 |
| 320 | Dunlap | A- | 86.6 | 1K | 16 |
| 321 | Carter Lake | A- | 86.5 | 5K | 20 |
| 322 | Bloomfield | A- | 86.4 | 3K | 88 |
| 323 | Leon | A- | 86.4 | 2K | 27 |
| 324 | Hills | A- | 86.4 | 863 | 2 |
| 325 | Ellsworth | A- | 86.3 | 514 | 14 |
| 326 | Buffalo | A- | 86.2 | 1K | 74 |
| 327 | Oskaloosa | A- | 86 | 23K | 37 |
| 328 | Tama | A- | 86 | 8K | 44 |
| 329 | Mediapolis | A- | 86 | 2K | 15 |
| 330 | Marion | A- | 85.9 | 44K | 98 |
| 331 | Zearing | A- | 85.9 | 528 | 28 |
| 332 | Granger | A- | 85.8 | 2K | 7 |
| 333 | Arnolds Park | A- | 85.7 | 1K | 1 |
| 334 | Moville | A- | 85.6 | 2K | 75 |
| 335 | Riverside | A- | 85.6 | 1K | 31 |
| 336 | Tripoli | A- | 85.6 | 1K | 2 |
| 337 | Guthrie Center | A- | 85.5 | 2K | 3 |
| 338 | Clinton | A- | 85.4 | 25K | 2 |
| 339 | Madrid | A- | 85.4 | 5K | 7 |
| 340 | Ruthven | A- | 85.4 | 779 | 1 |
| 341 | Mason City | A- | 85.3 | 27K | 143 |
| 342 | Fairfield | A- | 85.3 | 10K | 28 |
| 343 | Creston | A- | 85.1 | 28K | 27 |
| 344 | Des Moines | B+ | 85 | 250K | 35 |
| 345 | Pomeroy | A- | 85 | 671 | 9 |
| 346 | Middle Amana | B+ | 84.9 | 1K | 6 |
| 347 | Armstrong | B+ | 84.9 | 930 | 26 |
| 348 | Rock Valley | B+ | 84.8 | 6K | 34 |
| 349 | Gilbert | B+ | 84.8 | 1K | 40 |
| 350 | Mcgregor | B+ | 84.8 | 902 | 21 |
| 351 | Tiffin | B+ | 84.7 | 5K | 25 |
| 352 | Kalona | B+ | 84.7 | 3K | 26 |
| 353 | Elk Horn | B+ | 84.7 | 631 | 9 |
| 354 | Malvern | B+ | 84.6 | 1K | 17 |
| 355 | Centerville | B+ | 84.5 | 38K | 75 |
| 356 | Burlington | B+ | 84.5 | 35K | 26 |
| 357 | Polk City | B+ | 84.5 | 7K | 2 |
| 358 | Nora Springs | B+ | 84.5 | 1K | 3 |
| 359 | Lamoni | B+ | 84.4 | 2K | 27 |
| 360 | Fonda | B+ | 84.3 | 636 | 6 |
| 361 | Moravia | B+ | 84.1 | 637 | 15 |
| 362 | Ottumwa | B+ | 84 | 43K | 31 |
| 363 | Osage | B+ | 84 | 4K | 13 |
| 364 | Britt | B+ | 84 | 2K | 3 |
| 365 | Altoona | B+ | 83.9 | 27K | 37 |
| 366 | Waverly | B+ | 83.7 | 48K | 30 |
| 367 | West Burlington | B+ | 83.7 | 4K | 31 |
| 368 | Stanwood | B+ | 83.6 | 637 | 4 |
| 369 | Woodbine | B+ | 83.5 | 2K | 8 |
| 370 | Sioux Rapids | B+ | 83.4 | 920 | 25 |
| 371 | Eldridge | B+ | 83.2 | 9K | 51 |
| 372 | Doon | B+ | 83.1 | 2K | 69 |
| 373 | Clermont | B+ | 83.1 | 586 | 31 |
| 374 | Delhi | B+ | 83 | 509 | 110 |
| 375 | Council Bluffs | B+ | 82.9 | 66K | 45 |
| 376 | Donnellson | B+ | 82.7 | 885 | 48 |
| 377 | Elkader | B+ | 82.6 | 1K | 36 |
| 378 | Slater | B+ | 82.5 | 2K | 11 |
| 379 | Rockwell City | B+ | 82.4 | 3K | 22 |
| 380 | Washington | B+ | 82.2 | 7K | 96 |
| 381 | Rock Rapids | B+ | 82.2 | 6K | 36 |
| 382 | De Witt | B+ | 81.8 | 6K | 123 |
| 383 | Neola | B+ | 81.8 | 906 | 35 |
| 384 | West Des Moines | B+ | 81.6 | 70K | 31 |
| 385 | Parkersburg | B+ | 81.6 | 2K | 3 |
| 386 | Ames | B+ | 81.5 | 97K | 70 |
| 387 | Johnston | B+ | 80.9 | 25K | 45 |
| 388 | Hospers | B+ | 80.8 | 4K | 25 |
| 389 | Lisbon | B+ | 80.8 | 2K | 86 |
| 390 | Lone Tree | B+ | 80.6 | 1K | 17 |
| 391 | Decorah | B+ | 80.5 | 9K | 82 |
| 392 | Wapello | B+ | 80.5 | 2K | 94 |
| 393 | Early | B+ | 80.5 | 587 | 30 |
| 394 | Reinbeck | B+ | 80.4 | 2K | 8 |
| 395 | Urbandale | B+ | 80.2 | 46K | 8 |
| 396 | Belle Plaine | B+ | 80.1 | 2K | 10 |
| 397 | Carroll | B | 79.8 | 10K | 2 |
| 398 | Forest City | B | 79.8 | 4K | 94 |
| 399 | Center Point | B | 79.8 | 3K | 43 |
| 400 | Iowa Falls | B | 79.7 | 5K | 15 |
| 401 | West Branch | B | 79.3 | 3K | 18 |
| 402 | Knoxville | B | 79.2 | 15K | 8 |
| 403 | Jewell | B | 79.2 | 1K | 4 |
| 404 | Clarinda | B | 78.8 | 9K | 78 |
| 405 | Algona | B | 78.8 | 6K | 67 |
| 406 | Woodward | B | 78.8 | 6K | 46 |
| 407 | Princeton | B | 78.8 | 981 | 67 |
| 408 | Boone | B | 78.7 | 13K | 44 |
| 409 | Sidney | B | 78.4 | 1K | 21 |
| 410 | Osceola | B | 78.2 | 10K | 39 |
| 411 | De Soto | B | 78.2 | 960 | 25 |
| 412 | Ankeny | B | 77.7 | 78K | 99 |
| 413 | Sioux City | B | 77.3 | 86K | 35 |
| 414 | Coralville | B | 77.3 | 24K | 104 |
| 415 | Scranton | B | 76.2 | 504 | 21 |
| 416 | Anamosa | B- | 74.8 | 6K | 35 |
| 417 | Chariton | B- | 74.4 | 4K | 98 |
| 418 | Hiawatha | B- | 73.2 | 7K | 64 |
| 419 | Marengo | B- | 71.1 | 2K | 55 |
| 420 | North Liberty | B- | 70 | 21K | 120 |
| 421 | Victor | C+ | 68.7 | 875 | 19 |
| 422 | Missouri Valley | C+ | 66.3 | 3K | 79 |
| 423 | Bettendorf | C+ | 65.6 | 929 | 173 |
| 424 | Oxford | C+ | 65.2 | 1K | 114 |
| 425 | Blue Grass | C | 60.6 | 2K | 363 |
| 426 | Davenport | C- | 55 | 148K | 143 |
| 427 | Grinnell | D+ | 54.5 | 10K | 23 |
| 428 | Fort Dodge | D+ | 50.4 | 27K | 271 |
| 429 | Monticello | D | 46 | 4K | 265 |
| 430 | Cedar Rapids | D | 45.5 | 144K | 365 |
| 431 | Walford | D | 45 | 728 | 98 |
| 432 | Solon | F | 44 | 4K | 364 |
| 433 | Swisher | F | 43.1 | 724 | 119 |
| 434 | Dubuque | F | 42.5 | 63K | 354 |
| 435 | Iowa City | F | 42 | 101K | 691 |
| 436 | Muscatine | F | 36.9 | 28K | 320 |
Browse Iowa counties
Browse Iowa by ZIP code
Look up water quality by ZIP code to find the systems serving your area.
View all Iowa ZIP codes →Frequently asked questions about Iowa's water
Is Iowa's tap water safe to drink?
Iowa's water quality varies by city. The statewide average grade is A- (87.5/100). 96% of cities scored an A or B, while 2% received a D or F. Check your specific city for detailed results.
Which Iowa cities have the best water quality?
The top-rated cities are Asbury (A+), Cresco (A+), Rockford (A+). These cities scored highest based on violation history, lead levels, PFAS contamination, and regulatory compliance.
Which Iowa cities have the worst water quality?
The lowest-rated cities are Muscatine (F), Iowa City (F), Dubuque (F). We recommend residents in these areas consider water filtration and review their city's specific contaminant data.
How many Iowa cities have PFAS in their water?
112 out of 436 cities tested positive for PFAS "forever chemicals" (26%). 7 cities exceed the 2024 EPA maximum contaminant levels. Reverse osmosis or activated carbon filters can help reduce PFAS exposure.
Do any Iowa cities have dangerous lead levels?
2 cities exceed the EPA lead action level of 15 ppb. Lead contamination typically comes from aging pipes and lead service lines rather than the water source itself. An NSF 53-certified filter can effectively remove lead from tap water.