Nitrate in Iowa Drinking Water
Ranked by nitrate violation count · Data from EPA SDWIS & UCMR
Nitrate in Iowa: what the data shows
Iowa has 286 cities with nitrate-related violations. The EPA MCL for nitrate is 10 mg/L (measured as nitrogen). The state has 286 cities with at least one nitrate violation. Nitrate is the most common groundwater contaminant in the United States. It enters water supplies primarily through agricultural fertilizer runoff, septic system leaching, and animal feedlot operations. Rural and agricultural communities face the highest risk. The primary acute health concern is methemoglobinemia ("blue baby syndrome") in infants under six months. Emerging research also links chronic nitrate exposure to thyroid disease, certain cancers, and adverse birth outcomes. Reverse osmosis, ion exchange, and distillation can remove nitrate from drinking water — standard carbon filters do not.
Cities exceeding 10 mg/L EPA MCL
Nitrate data across Iowa
Each dot is a city with nitrate violation data. Cities with at least one nitrate-related violation are highlighted. Size reflects population served.
Top 10 cities by nitrate level in Iowa
Highest Nitrate levels (violations)
All Iowa cities ranked by nitrate level
| # | City | Level | Level | Violations? | Violations | Grade |
|---|---|---|---|---|---|---|
| 1 | Monticello | 70 violations | Yes | 22 | D | |
| 2 | Blue Grass | 39 violations | Yes | 43 | C | |
| 3 | Doon | 35 violations | Yes | 32 | B+ | |
| 4 | Iowa City | 33 violations | Yes | 171 | F | |
| 5 | Muscatine | 32 violations | Yes | 46 | F | |
| 6 | Everly | 30 violations | Yes | 26 | A- | |
| 7 | Dubuque | 28 violations | Yes | 30 | F | |
| 8 | Moville | 27 violations | Yes | 11 | A- | |
| 9 | Early | 26 violations | Yes | 23 | B+ | |
| 10 | Cedar Rapids | 24 violations | Yes | 31 | D | |
| 11 | Wellman | 24 violations | Yes | 24 | A- | |
| 12 | Essex | 22 violations | Yes | 15 | A- | |
| 13 | Fort Dodge | 21 violations | Yes | 19 | D+ | |
| 14 | Schleswig | 20 violations | Yes | 14 | A | |
| 15 | Farmington | 20 violations | Yes | 20 | A | |
| 16 | Shellsburg | 19 violations | Yes | 12 | A- | |
| 17 | George | 19 violations | Yes | 19 | A- | |
| 18 | Earlville | 19 violations | Yes | 15 | A- | |
| 19 | Rock Rapids | 18 violations | Yes | 12 | B+ | |
| 20 | De Witt | 18 violations | Yes | 26 | B+ | |
| 21 | Keystone | 17 violations | Yes | 7 | A- | |
| 22 | Winterset | 16 violations | Yes | 20 | A- | |
| 23 | Panora | 16 violations | Yes | 26 | A- | |
| 24 | Marengo | 16 violations | Yes | 12 | B- | |
| 25 | Sioux Rapids | 16 violations | Yes | 13 | B+ | |
| 26 | Battle Creek | 14 violations | Yes | 13 | A- | |
| 27 | Waverly | 13 violations | Yes | 2 | B+ | |
| 28 | Rock Valley | 13 violations | Yes | 13 | B+ | |
| 29 | Jesup | 13 violations | Yes | 0 | A | |
| 30 | Atkins | 13 violations | Yes | 6 | A- | |
| 31 | Mapleton | 13 violations | Yes | 12 | A | |
| 32 | Clarinda | 12 violations | Yes | 48 | B | |
| 33 | Dyersville | 12 violations | Yes | 23 | A | |
| 34 | Solon | 12 violations | Yes | 157 | F | |
| 35 | Peosta | 12 violations | Yes | 7 | A- | |
| 36 | Bettendorf | 12 violations | Yes | 11 | C+ | |
| 37 | North Liberty | 11 violations | Yes | 29 | B- | |
| 38 | Holstein | 11 violations | Yes | 7 | A- | |
| 39 | Walford | 11 violations | Yes | 7 | D | |
| 40 | Marion | 10 violations | Yes | 6 | A- | |
| 41 | Algona | 10 violations | Yes | 14 | B | |
| 42 | Rockwell City | 10 violations | Yes | 6 | B+ | |
| 43 | Wapello | 10 violations | Yes | 12 | B+ | |
| 44 | Swisher | 10 violations | Yes | 37 | F | |
| 45 | Delhi | 10 violations | Yes | 0 | B+ | |
| 46 | Davenport | 9 violations | Yes | 2 | C- | |
| 47 | Ames | 9 violations | Yes | 15 | B+ | |
| 48 | Cherokee | 9 violations | Yes | 2 | A- | |
| 49 | Princeton | 9 violations | Yes | 18 | B | |
| 50 | Coralville | 8 violations | Yes | 15 | B | |
| 51 | Williamsburg | 8 violations | Yes | 3 | A- | |
| 52 | Missouri Valley | 7 violations | Yes | 6 | C+ | |
| 53 | Wall Lake | 7 violations | Yes | 4 | A- | |
| 54 | Lake City | 7 violations | Yes | 0 | A | |
| 55 | Janesville | 7 violations | Yes | 5 | A | |
| 56 | Newhall | 7 violations | Yes | 2 | A- | |
| 57 | Schaller | 7 violations | Yes | 8 | A | |
| 58 | Ankeny | 6 violations | Yes | 15 | B | |
| 59 | Marshalltown | 6 violations | Yes | 4 | A- | |
| 60 | Boone | 6 violations | Yes | 9 | B | |
| 61 | Lisbon | 6 violations | Yes | 21 | B+ | |
| 62 | Oxford | 6 violations | Yes | 24 | C+ | |
| 63 | Griswold | 6 violations | Yes | 2 | A- | |
| 64 | Wheatland | 6 violations | Yes | 5 | A- | |
| 65 | Merrill | 6 violations | Yes | 4 | A | |
| 66 | Gilman | 6 violations | Yes | 7 | A+ | |
| 67 | Eldridge | 5 violations | Yes | 9 | B+ | |
| 68 | Hiawatha | 5 violations | Yes | 12 | B- | |
| 69 | Hospers | 5 violations | Yes | 5 | B+ | |
| 70 | Belle Plaine | 5 violations | Yes | 2 | B+ | |
| 71 | Buffalo | 5 violations | Yes | 12 | A- | |
| 72 | Kingsley | 5 violations | Yes | 3 | A- | |
| 73 | Riverside | 5 violations | Yes | 6 | A- | |
| 74 | Saint Ansgar | 5 violations | Yes | 2 | A | |
| 75 | Dunkerton | 5 violations | Yes | 6 | A- | |
| 76 | Malvern | 5 violations | Yes | 2 | B+ | |
| 77 | Shelby | 5 violations | Yes | 3 | A- | |
| 78 | Alburnett | 5 violations | Yes | 3 | A | |
| 79 | Minden | 5 violations | Yes | 3 | A- | |
| 80 | Des Moines | 4 violations | Yes | 7 | B+ | |
| 81 | Waterloo | 4 violations | Yes | 3 | A- | |
| 82 | Council Bluffs | 4 violations | Yes | 8 | B+ | |
| 83 | Grimes | 4 violations | Yes | 13 | A- | |
| 84 | Red Oak | 4 violations | Yes | 9 | A- | |
| 85 | Maquoketa | 4 violations | Yes | 18 | A- | |
| 86 | Woodward | 4 violations | Yes | 17 | B | |
| 87 | Manning | 4 violations | Yes | 4 | A- | |
| 88 | Forest City | 4 violations | Yes | 8 | B | |
| 89 | Prairie City | 4 violations | Yes | 3 | A | |
| 90 | Slater | 4 violations | Yes | 2 | B+ | |
| 91 | Akron | 4 violations | Yes | 4 | A- | |
| 92 | Van Meter | 4 violations | Yes | 6 | A- | |
| 93 | Strawberry Point | 4 violations | Yes | 1 | A | |
| 94 | Lake View | 4 violations | Yes | 1 | A | |
| 95 | Inwood | 4 violations | Yes | 2 | A | |
| 96 | Keota | 4 violations | Yes | 4 | A | |
| 97 | Elkhart | 4 violations | Yes | 0 | A- | |
| 98 | Gilbertville | 4 violations | Yes | 0 | A- | |
| 99 | Dayton | 4 violations | Yes | 7 | A | |
| 100 | Fonda | 4 violations | Yes | 1 | B+ | |
| 101 | Brighton | 4 violations | Yes | 0 | A | |
| 102 | Elma | 4 violations | Yes | 0 | A | |
| 103 | Altoona | 3 violations | Yes | 20 | B+ | |
| 104 | Bondurant | 3 violations | Yes | 1 | A | |
| 105 | Washington | 3 violations | Yes | 13 | B+ | |
| 106 | Camanche | 3 violations | Yes | 0 | A | |
| 107 | Carlisle | 3 violations | Yes | 0 | A- | |
| 108 | Fairfax | 3 violations | Yes | 2 | A- | |
| 109 | Kalona | 3 violations | Yes | 3 | B+ | |
| 110 | Sutherland | 3 violations | Yes | 3 | A- | |
| 111 | West Union | 3 violations | Yes | 3 | A | |
| 112 | Lamoni | 3 violations | Yes | 5 | B+ | |
| 113 | Corning | 3 violations | Yes | 2 | A- | |
| 114 | Granger | 3 violations | Yes | 1 | A- | |
| 115 | Traer | 3 violations | Yes | 0 | A | |
| 116 | Bedford | 3 violations | Yes | 19 | A- | |
| 117 | Gilbert | 3 violations | Yes | 1 | B+ | |
| 118 | Sheffield | 3 violations | Yes | 2 | A- | |
| 119 | Aplington | 3 violations | Yes | 1 | A- | |
| 120 | Conrad | 3 violations | Yes | 1 | A | |
| 121 | Dunlap | 3 violations | Yes | 3 | A- | |
| 122 | Paullina | 3 violations | Yes | 3 | A | |
| 123 | Fredericksburg | 3 violations | Yes | 0 | A | |
| 124 | Armstrong | 3 violations | Yes | 1 | B+ | |
| 125 | Neola | 3 violations | Yes | 8 | B+ | |
| 126 | Donnellson | 3 violations | Yes | 20 | B+ | |
| 127 | Okoboji | 3 violations | Yes | 1 | A | |
| 128 | Blairstown | 3 violations | Yes | 3 | A- | |
| 129 | Montrose | 3 violations | Yes | 1 | A | |
| 130 | Coggon | 3 violations | Yes | 0 | A- | |
| 131 | Pomeroy | 3 violations | Yes | 1 | A- | |
| 132 | Olin | 3 violations | Yes | 2 | A | |
| 133 | Badger | 3 violations | Yes | 6 | A | |
| 134 | Anthon | 3 violations | Yes | 0 | A | |
| 135 | Charter Oak | 3 violations | Yes | 3 | A | |
| 136 | Ottumwa | 2 violations | Yes | 6 | B+ | |
| 137 | Cedar Falls | 2 violations | Yes | 4 | A- | |
| 138 | Burlington | 2 violations | Yes | 7 | B+ | |
| 139 | Creston | 2 violations | Yes | 9 | A- | |
| 140 | Mason City | 2 violations | Yes | 18 | A- | |
| 141 | Johnston | 2 violations | Yes | 6 | B+ | |
| 142 | Fort Madison | 2 violations | Yes | 6 | A- | |
| 143 | Denison | 2 violations | Yes | 0 | A | |
| 144 | Storm Lake | 2 violations | Yes | 1 | A- | |
| 145 | Mount Pleasant | 2 violations | Yes | 2 | A | |
| 146 | Decorah | 2 violations | Yes | 11 | B+ | |
| 147 | Sioux Center | 2 violations | Yes | 0 | A- | |
| 148 | Perry | 2 violations | Yes | 3 | A | |
| 149 | Independence | 2 violations | Yes | 4 | A | |
| 150 | Oelwein | 2 violations | Yes | 2 | A | |
| 151 | Avoca | 2 violations | Yes | 6 | A | |
| 152 | Anamosa | 2 violations | Yes | 5 | B- | |
| 153 | Manchester | 2 violations | Yes | 1 | A | |
| 154 | Shenandoah | 2 violations | Yes | 2 | A | |
| 155 | Story City | 2 violations | Yes | 0 | A | |
| 156 | South Amana | 2 violations | Yes | 1 | A- | |
| 157 | Center Point | 2 violations | Yes | 3 | B | |
| 158 | Hawarden | 2 violations | Yes | 4 | A | |
| 159 | Mitchellville | 2 violations | Yes | 1 | A | |
| 160 | Ely | 2 violations | Yes | 0 | A | |
| 161 | Colfax | 2 violations | Yes | 2 | A- | |
| 162 | Lake Mills | 2 violations | Yes | 3 | A | |
| 163 | Ida Grove | 2 violations | Yes | 2 | A- | |
| 164 | Sumner | 2 violations | Yes | 0 | A+ | |
| 165 | Epworth | 2 violations | Yes | 0 | A | |
| 166 | Durant | 2 violations | Yes | 2 | A | |
| 167 | Columbus Junction | 2 violations | Yes | 0 | A- | |
| 168 | Remsen | 2 violations | Yes | 2 | A- | |
| 169 | Reinbeck | 2 violations | Yes | 1 | B+ | |
| 170 | Woodbine | 2 violations | Yes | 3 | B+ | |
| 171 | Ackley | 2 violations | Yes | 1 | A- | |
| 172 | Palo | 2 violations | Yes | 4 | A | |
| 173 | Dike | 2 violations | Yes | 2 | A | |
| 174 | Clarksville | 2 violations | Yes | 1 | A | |
| 175 | Middle Amana | 2 violations | Yes | 1 | B+ | |
| 176 | Jewell | 2 violations | Yes | 0 | B | |
| 177 | Glidden | 2 violations | Yes | 0 | A- | |
| 178 | Fairbank | 2 violations | Yes | 7 | A | |
| 179 | Sidney | 2 violations | Yes | 1 | B | |
| 180 | North English | 2 violations | Yes | 0 | A | |
| 181 | Treynor | 2 violations | Yes | 0 | A- | |
| 182 | Mechanicsville | 2 violations | Yes | 0 | A- | |
| 183 | Tabor | 2 violations | Yes | 0 | A- | |
| 184 | Larchwood | 2 violations | Yes | 1 | A | |
| 185 | Mcgregor | 2 violations | Yes | 6 | B+ | |
| 186 | Primghar | 2 violations | Yes | 0 | A- | |
| 187 | Hamburg | 2 violations | Yes | 0 | A | |
| 188 | Victor | 2 violations | Yes | 1 | C+ | |
| 189 | Cambridge | 2 violations | Yes | 1 | A- | |
| 190 | Correctionville | 2 violations | Yes | 1 | A | |
| 191 | Morning Sun | 2 violations | Yes | 1 | A | |
| 192 | Elgin | 2 violations | Yes | 0 | A- | |
| 193 | Hopkinton | 2 violations | Yes | 0 | A | |
| 194 | Clermont | 2 violations | Yes | 4 | B+ | |
| 195 | Richland | 2 violations | Yes | 5 | A | |
| 196 | Zearing | 2 violations | Yes | 2 | A- | |
| 197 | Whittemore | 2 violations | Yes | 0 | A- | |
| 198 | Breda | 2 violations | Yes | 0 | A | |
| 199 | Sioux City | 1 violations | Yes | 14 | B | |
| 200 | Centerville | 1 violations | Yes | 4 | B+ | |
| 201 | Waukee | 1 violations | Yes | 13 | A- | |
| 202 | Oskaloosa | 1 violations | Yes | 11 | A- | |
| 203 | Knoxville | 1 violations | Yes | 2 | B | |
| 204 | Fairfield | 1 violations | Yes | 15 | A- | |
| 205 | Keokuk | 1 violations | Yes | 0 | A- | |
| 206 | Osceola | 1 violations | Yes | 21 | B | |
| 207 | Graettinger | 1 violations | Yes | 4 | A | |
| 208 | Tama | 1 violations | Yes | 1 | A- | |
| 209 | Clear Lake | 1 violations | Yes | 2 | A- | |
| 210 | May City | 1 violations | Yes | 0 | A- | |
| 211 | Stratford | 1 violations | Yes | 6 | A- | |
| 212 | Ireton | 1 violations | Yes | 4 | A- | |
| 213 | Luther | 1 violations | Yes | 8 | A | |
| 214 | Carter Lake | 1 violations | Yes | 6 | A- | |
| 215 | Evansdale | 1 violations | Yes | 0 | A+ | |
| 216 | Huxley | 1 violations | Yes | 1 | A | |
| 217 | Hampton | 1 violations | Yes | 10 | A- | |
| 218 | West Burlington | 1 violations | Yes | 17 | B+ | |
| 219 | Chariton | 1 violations | Yes | 64 | B- | |
| 220 | Jefferson | 1 violations | Yes | 2 | A | |
| 221 | West Liberty | 1 violations | Yes | 6 | A | |
| 222 | Osage | 1 violations | Yes | 9 | B+ | |
| 223 | Milford | 1 violations | Yes | 0 | A | |
| 224 | Montezuma | 1 violations | Yes | 0 | A- | |
| 225 | Wilton | 1 violations | Yes | 0 | A- | |
| 226 | West Branch | 1 violations | Yes | 0 | B | |
| 227 | Onawa | 1 violations | Yes | 0 | A- | |
| 228 | Sibley | 1 violations | Yes | 0 | A- | |
| 229 | Bellevue | 1 violations | Yes | 18 | A- | |
| 230 | Bloomfield | 1 violations | Yes | 41 | A- | |
| 231 | Postville | 1 violations | Yes | 0 | A- | |
| 232 | Belmond | 1 violations | Yes | 0 | A | |
| 233 | Ogden | 1 violations | Yes | 3 | A- | |
| 234 | Toledo | 1 violations | Yes | 8 | A | |
| 235 | Cascade | 1 violations | Yes | 0 | A | |
| 236 | Northwood | 1 violations | Yes | 3 | A | |
| 237 | Audubon | 1 violations | Yes | 2 | A | |
| 238 | Pocahontas | 1 violations | Yes | 5 | A | |
| 239 | Leon | 1 violations | Yes | 20 | A- | |
| 240 | Stuart | 1 violations | Yes | 17 | A | |
| 241 | Mount Ayr | 1 violations | Yes | 10 | A | |
| 242 | Corydon | 1 violations | Yes | 0 | A- | |
| 243 | Guthrie Center | 1 violations | Yes | 1 | A- | |
| 244 | Nashua | 1 violations | Yes | 0 | A- | |
| 245 | Walcott | 1 violations | Yes | 0 | A | |
| 246 | Logan | 1 violations | Yes | 0 | A | |
| 247 | Roland | 1 violations | Yes | 4 | A | |
| 248 | Sanborn | 1 violations | Yes | 0 | A | |
| 249 | New Sharon | 1 violations | Yes | 0 | A | |
| 250 | Laurens | 1 violations | Yes | 0 | A | |
| 251 | Central City | 1 violations | Yes | 3 | A | |
| 252 | Springville | 1 violations | Yes | 0 | A | |
| 253 | Alton | 1 violations | Yes | 1 | A | |
| 254 | Elkader | 1 violations | Yes | 0 | B+ | |
| 255 | Melcher-Dallas | 1 violations | Yes | 3 | A | |
| 256 | Marcus | 1 violations | Yes | 10 | A | |
| 257 | Rockwell | 1 violations | Yes | 4 | A | |
| 258 | Clarence | 1 violations | Yes | 3 | A | |
| 259 | Winfield | 1 violations | Yes | 0 | A | |
| 260 | Baxter | 1 violations | Yes | 0 | A- | |
| 261 | Long Grove | 1 violations | Yes | 6 | A | |
| 262 | Preston | 1 violations | Yes | 1 | A | |
| 263 | Lawton | 1 violations | Yes | 3 | A | |
| 264 | Eldon | 1 violations | Yes | 10 | A- | |
| 265 | Le Grand | 1 violations | Yes | 2 | A | |
| 266 | Newell | 1 violations | Yes | 0 | A | |
| 267 | Sully | 1 violations | Yes | 8 | A | |
| 268 | Buffalo Center | 1 violations | Yes | 0 | A | |
| 269 | Winthrop | 1 violations | Yes | 0 | A | |
| 270 | Riceville | 1 violations | Yes | 0 | A | |
| 271 | Gladbrook | 1 violations | Yes | 1 | A | |
| 272 | Milo | 1 violations | Yes | 4 | A | |
| 273 | Dakota City | 1 violations | Yes | 0 | A | |
| 274 | Garnavillo | 1 violations | Yes | 0 | A | |
| 275 | Whiting | 1 violations | Yes | 0 | A | |
| 276 | Grand Junction | 1 violations | Yes | 2 | A | |
| 277 | Wellsburg | 1 violations | Yes | 16 | A | |
| 278 | Albert City | 1 violations | Yes | 0 | A | |
| 279 | Kellogg | 1 violations | Yes | 1 | A | |
| 280 | Grand Mound | 1 violations | Yes | 0 | A | |
| 281 | Radcliffe | 1 violations | Yes | 3 | A | |
| 282 | Wyoming | 1 violations | Yes | 0 | A | |
| 283 | Ellsworth | 1 violations | Yes | 9 | A- | |
| 284 | Titonka | 1 violations | Yes | 0 | A- | |
| 285 | Rolfe | 1 violations | Yes | 0 | A+ | |
| 286 | Scranton | 1 violations | Yes | 6 | B |
Frequently asked questions about nitrate in Iowa
Is nitrate in Iowa tap water dangerous?
Yes — 286 cities in Iowa have nitrate-related violations. The EPA MCL is 10 mg/L. Nitrate is especially dangerous for infants under six months, where it can cause methemoglobinemia ("blue baby syndrome"). Adults face lower acute risk, but chronic exposure is linked to thyroid disease and certain cancers.
How can I remove nitrate from my drinking water?
Reverse osmosis, ion exchange, and distillation are effective at removing nitrate. Standard carbon filters (including most pitcher and faucet-mount filters) do NOT remove nitrate. If you rely on a private well in an agricultural area, have your water tested annually for nitrate.
What causes high nitrate levels in Iowa water?
Nitrate contamination comes primarily from agricultural fertilizer runoff, septic system leaching, and animal feedlot operations. Rural communities near intensive farming are most at risk. Shallow wells are particularly vulnerable. Heavy rainfall can spike nitrate levels as it washes fertilizer into groundwater and surface water supplies.