Water hardness in Iowa
Iowa has a median ambient water hardness of 310 mg/L, which is 18.1 grains per gallon and classes as very hard. That is the middle of 22,933 samples across 99 counties.
This is ambient water, not tap water. These figures come from samples taken from wells, streams and springs by USGS, EPA and state agencies. Municipal utilities treat, blend and sometimes soften water before it reaches a tap, so a city supply can be considerably softer than the ground beneath it. Treat this as a good guide for a private well and an approximate one for city water. Your utility's annual water quality report gives the real number for a municipal tap, and a test strip gives it for yours.
Every monitored county in Iowa
Ranked hardest first. The middle 50% column shows how much the samples within a county vary, which matters more than the median where a county spans two geologies.
| County | mg/L | gpg | Class | Middle 50% | Samples |
|---|---|---|---|---|---|
| Osceola County | 1,300 | 75.9 | Very hard | 609 to 1,500 | 77 |
| Emmet County | 760 | 44.4 | Very hard | 590 to 865 | 108 |
| Pocahontas County | 714 | 41.7 | Very hard | 600 to 800 | 82 |
| Palo Alto County | 695 | 40.6 | Very hard | 412 to 800 | 92 |
| Buena Vista County | 580 | 33.9 | Very hard | 485 to 740 | 207 |
| Calhoun County | 580 | 33.9 | Very hard | 210 to 750 | 101 |
| Cherokee County | 520 | 30.4 | Very hard | 350 to 710 | 169 |
| Clay County | 515 | 30.1 | Very hard | 350 to 910 | 110 |
| Sac County | 490 | 28.6 | Very hard | 410 to 770 | 187 |
| Sioux County | 490 | 28.6 | Very hard | 416 to 580 | 490 |
| Webster County | 480 | 28 | Very hard | 430 to 550 | 335 |
| O'Brien County | 470 | 27.5 | Very hard | 410 to 1,100 | 193 |
| Keokuk County | 460 | 26.9 | Very hard | 340 to 530 | 122 |
| Poweshiek County | 460 | 26.9 | Very hard | 380 to 620 | 111 |
| Crawford County | 440 | 25.7 | Very hard | 390 to 560 | 248 |
| Kossuth County | 440 | 25.7 | Very hard | 380 to 530 | 180 |
| Lyon County | 440 | 25.7 | Very hard | 360 to 508 | 451 |
| Woodbury County | 430 | 25.1 | Very hard | 350 to 500 | 337 |
| Plymouth County | 428 | 25 | Very hard | 340 to 520 | 514 |
| Monona County | 427 | 24.9 | Very hard | 331 to 480 | 218 |
| Ida County | 420 | 24.5 | Very hard | 370 to 520 | 155 |
| Greene County | 410 | 24 | Very hard | 310 to 480 | 144 |
| Harrison County | 410 | 24 | Very hard | 340 to 520 | 218 |
| Shelby County | 410 | 24 | Very hard | 340 to 510 | 110 |
| Henry County | 400 | 23.4 | Very hard | 310 to 450 | 180 |
| Humboldt County | 400 | 23.4 | Very hard | 370 to 450 | 153 |
| Washington County | 400 | 23.4 | Very hard | 300 to 460 | 200 |
| Audubon County | 380 | 22.2 | Very hard | 320 to 430 | 94 |
| Marshall County | 380 | 22.2 | Very hard | 350 to 600 | 163 |
| Hancock County | 370 | 21.6 | Very hard | 340 to 400 | 132 |
| Story County | 370 | 21.6 | Very hard | 329 to 460 | 213 |
| Winnebago County | 370 | 21.6 | Very hard | 330 to 384 | 69 |
| Boone County | 360 | 21 | Very hard | 296 to 420 | 159 |
| Carroll County | 360 | 21 | Very hard | 320 to 450 | 272 |
| Grundy County | 360 | 21 | Very hard | 308 to 635 | 156 |
| Hamilton County | 360 | 21 | Very hard | 273 to 437 | 539 |
| Jasper County | 360 | 21 | Very hard | 320 to 410 | 123 |
| Wright County | 360 | 21 | Very hard | 335 to 390 | 218 |
| Hardin County | 351 | 20.5 | Very hard | 306 to 388 | 768 |
| Franklin County | 350 | 20.4 | Very hard | 300 to 370 | 115 |
| Mills County | 350 | 20.4 | Very hard | 290 to 450 | 94 |
| Dallas County | 347 | 20.3 | Very hard | 278 to 419 | 258 |
| Benton County | 340 | 19.9 | Very hard | 280 to 441 | 228 |
| Cerro Gordo County | 340 | 19.9 | Very hard | 270 to 360 | 202 |
| Mahaska County | 340 | 19.9 | Very hard | 290 to 430 | 122 |
| Tama County | 340 | 19.9 | Very hard | 270 to 520 | 469 |
| Worth County | 324 | 18.9 | Very hard | 260 to 383 | 70 |
| Cedar County | 320 | 18.7 | Very hard | 280 to 400 | 134 |
| Fayette County | 320 | 18.7 | Very hard | 250 to 360 | 161 |
| Iowa County | 320 | 18.7 | Very hard | 255 to 386 | 521 |
| Allamakee County | 311 | 18.2 | Very hard | 280 to 340 | 122 |
| Jackson County | 310 | 18.1 | Very hard | 280 to 350 | 162 |
| Jones County | 310 | 18.1 | Very hard | 272 to 340 | 134 |
| Winneshiek County | 307 | 17.9 | Very hard | 276 to 350 | 111 |
| Polk County | 303 | 17.7 | Very hard | 264 to 341 | 708 |
| Clayton County | 302 | 17.6 | Very hard | 250 to 360 | 339 |
| Guthrie County | 300 | 17.5 | Very hard | 250 to 330 | 176 |
| Pottawattamie County | 300 | 17.5 | Very hard | 210 to 390 | 174 |
| Jefferson County | 293 | 17.1 | Very hard | 150 to 410 | 92 |
| Monroe County | 290 | 16.9 | Very hard | 240 to 470 | 84 |
| Van Buren County | 283 | 16.5 | Very hard | 228 to 336 | 366 |
| Mitchell County | 281 | 16.4 | Very hard | 260 to 312 | 204 |
| Adams County | 280 | 16.4 | Very hard | 240 to 315 | 39 |
| Buchanan County | 280 | 16.4 | Very hard | 250 to 316 | 137 |
| Marion County | 280 | 16.4 | Very hard | 240 to 330 | 501 |
| Fremont County | 275 | 16.1 | Very hard | 245 to 310 | 193 |
| Wapello County | 272 | 15.9 | Very hard | 150 to 390 | 267 |
| Howard County | 270 | 15.8 | Very hard | 230 to 310 | 105 |
| Johnson County | 270 | 15.8 | Very hard | 212 to 428 | 387 |
| Black Hawk County | 260 | 15.2 | Very hard | 240 to 300 | 375 |
| Delaware County | 260 | 15.2 | Very hard | 230 to 305 | 132 |
| Dubuque County | 260 | 15.2 | Very hard | 188 to 320 | 288 |
| Linn County | 260 | 15.2 | Very hard | 224 to 290 | 1,847 |
| Warren County | 260 | 15.2 | Very hard | 200 to 310 | 178 |
| Decatur County | 258 | 15.1 | Very hard | 210 to 298 | 248 |
| Floyd County | 255 | 14.9 | Very hard | 232 to 286 | 210 |
| Chickasaw County | 250 | 14.6 | Very hard | 230 to 300 | 57 |
| Lucas County | 250 | 14.6 | Very hard | 170 to 380 | 156 |
| Bremer County | 240 | 14 | Very hard | 189 to 290 | 228 |
| Butler County | 240 | 14 | Very hard | 230 to 282 | 161 |
| Page County | 240 | 14 | Very hard | 200 to 300 | 59 |
| Louisa County | 238 | 13.9 | Very hard | 194 to 280 | 638 |
| Des Moines County | 232 | 13.6 | Very hard | 170 to 311 | 348 |
| Montgomery County | 230 | 13.4 | Very hard | 190 to 260 | 77 |
| Appanoose County | 220 | 12.9 | Very hard | 160 to 300 | 102 |
| Dickinson County | 220 | 12.9 | Very hard | 210 to 343 | 131 |
| Scott County | 201 | 11.7 | Very hard | 177 to 246 | 226 |
| Cass County | 200 | 11.7 | Very hard | 173 to 264 | 83 |
| Lee County | 200 | 11.7 | Very hard | 170 to 260 | 373 |
| Madison County | 200 | 11.7 | Very hard | 160 to 250 | 70 |
| Clinton County | 190 | 11.1 | Very hard | 166 to 233 | 762 |
| Adair County | 180 | 10.5 | Hard | 150 to 230 | 132 |
| Muscatine County | 180 | 10.5 | Hard | 142 to 238 | 361 |
| Ringgold County | 170 | 9.9 | Hard | 140 to 230 | 68 |
| Clarke County | 160 | 9.3 | Hard | 130 to 270 | 107 |
| Union County | 150 | 8.8 | Hard | 120 to 180 | 127 |
| Davis County | 140 | 8.2 | Hard | 120 to 350 | 53 |
| Taylor County | 140 | 8.2 | Hard | 120 to 210 | 98 |
| Wayne County | 140 | 8.2 | Hard | 110 to 190 | 165 |
Source: Water Quality Portal (USGS, EPA and state agencies), waterqualitydata.us, retrieved 2026-09-19. 2,904,346 samples across 3,110 counties.
What this means for a household in Iowa
At 18.1 grains per gallon, a family of four would need a softener of about 40,000 grains to regenerate roughly weekly, using around 744 lb of salt a year. Size it for your own household.
99 of these counties include well samples, so the figures are a reasonable guide for private well water there. Municipal supplies in the same counties may be softer, because utilities often blend or treat.
Hardness follows geology rather than borders. Where a county sits on limestone or dolomite the water is hard; on granite, basalt or sandstone it is soft. That is why neighbouring counties in this table can differ by a factor of several.