Water hardness in Minnesota
Minnesota has a median ambient water hardness of 140 mg/L, which is 8.2 grains per gallon and classes as hard. That is the middle of 63,339 samples across 87 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 Minnesota
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 |
|---|---|---|---|---|---|
| Lyon County | 567 | 33.1 | Very hard | 479 to 698 | 157 |
| Redwood County | 558 | 32.6 | Very hard | 480 to 680 | 426 |
| Grant County | 540 | 31.5 | Very hard | 370 to 720 | 57 |
| Lac qui Parle County | 540 | 31.5 | Very hard | 460 to 640 | 200 |
| Nobles County | 501 | 29.3 | Very hard | 380 to 700 | 82 |
| Yellow Medicine County | 500 | 29.2 | Very hard | 410 to 640 | 445 |
| Renville County | 490 | 28.6 | Very hard | 430 to 537 | 282 |
| Lincoln County | 487 | 28.4 | Very hard | 380 to 705 | 98 |
| Brown County | 480 | 28 | Very hard | 410 to 550 | 317 |
| Nicollet County | 440 | 25.7 | Very hard | 380 to 490 | 278 |
| Traverse County | 435 | 25.4 | Very hard | 290 to 680 | 56 |
| Big Stone County | 430 | 25.1 | Very hard | 360 to 550 | 167 |
| Swift County | 430 | 25.1 | Very hard | 360 to 493 | 199 |
| Jackson County | 420 | 24.5 | Very hard | 350 to 519 | 327 |
| Stevens County | 420 | 24.5 | Very hard | 340 to 610 | 33 |
| Chippewa County | 410 | 24 | Very hard | 360 to 470 | 285 |
| Carver County | 400 | 23.4 | Very hard | 330 to 458 | 454 |
| McLeod County | 400 | 23.4 | Very hard | 270 to 490 | 143 |
| Sibley County | 390 | 22.8 | Very hard | 336 to 450 | 140 |
| Murray County | 388 | 22.7 | Very hard | 330 to 487 | 80 |
| Le Sueur County | 380 | 22.2 | Very hard | 320 to 440 | 258 |
| Pipestone County | 375 | 21.9 | Very hard | 310 to 424 | 369 |
| Scott County | 370 | 21.6 | Very hard | 290 to 440 | 306 |
| Cottonwood County | 365 | 21.3 | Very hard | 290 to 478 | 116 |
| Faribault County | 364 | 21.3 | Very hard | 319 to 420 | 653 |
| Blue Earth County | 360 | 21 | Very hard | 308 to 440 | 932 |
| Martin County | 352 | 20.6 | Very hard | 290 to 420 | 247 |
| Rock County | 351 | 20.5 | Very hard | 300 to 416 | 134 |
| Clay County | 350 | 20.4 | Very hard | 270 to 420 | 455 |
| Steele County | 340 | 19.9 | Very hard | 310 to 364 | 79 |
| Waseca County | 335 | 19.6 | Very hard | 286 to 385 | 62 |
| Rice County | 325 | 19 | Very hard | 230 to 354 | 110 |
| Meeker County | 320 | 18.7 | Very hard | 253 to 385 | 428 |
| Pope County | 313 | 18.3 | Very hard | 274 to 360 | 135 |
| Watonwan County | 310 | 18.1 | Very hard | 240 to 420 | 76 |
| Olmsted County | 304 | 17.8 | Very hard | 280 to 325 | 284 |
| Dodge County | 300 | 17.5 | Very hard | 260 to 360 | 17 |
| Norman County | 300 | 17.5 | Very hard | 251 to 360 | 467 |
| Fillmore County | 293 | 17.1 | Very hard | 270 to 320 | 167 |
| Red Lake County | 289 | 16.9 | Very hard | 240 to 319 | 92 |
| Freeborn County | 280 | 16.4 | Very hard | 240 to 330 | 328 |
| Houston County | 280 | 16.4 | Very hard | 250 to 298 | 328 |
| Marshall County | 280 | 16.4 | Very hard | 220 to 370 | 376 |
| Wabasha County | 270 | 15.8 | Very hard | 200 to 295 | 191 |
| Mower County | 268 | 15.7 | Very hard | 240 to 290 | 425 |
| Kittson County | 260 | 15.2 | Very hard | 209 to 340 | 415 |
| Dakota County | 259 | 15.1 | Very hard | 201 to 297 | 1,321 |
| Kandiyohi County | 250 | 14.6 | Very hard | 210 to 328 | 156 |
| Stearns County | 250 | 14.6 | Very hard | 204 to 300 | 703 |
| Wadena County | 250 | 14.6 | Very hard | 200 to 280 | 185 |
| Goodhue County | 243 | 14.2 | Very hard | 198 to 300 | 518 |
| Polk County | 241 | 14.1 | Very hard | 197 to 312 | 695 |
| Wilkin County | 240 | 14 | Very hard | 217 to 340 | 334 |
| Wright County | 240 | 14 | Very hard | 184 to 308 | 1,025 |
| Mahnomen County | 235 | 13.7 | Very hard | 202 to 270 | 102 |
| Otter Tail County | 233 | 13.6 | Very hard | 199 to 300 | 457 |
| Winona County | 231 | 13.5 | Very hard | 160 to 290 | 772 |
| Roseau County | 230 | 13.4 | Very hard | 190 to 280 | 157 |
| Pennington County | 229 | 13.4 | Very hard | 172 to 306 | 27 |
| Hennepin County | 221 | 12.9 | Very hard | 142 to 350 | 2,843 |
| Todd County | 220 | 12.9 | Very hard | 170 to 270 | 123 |
| Becker County | 215 | 12.6 | Very hard | 180 to 295 | 224 |
| Douglas County | 207 | 12.1 | Very hard | 185 to 270 | 132 |
| Anoka County | 187 | 10.9 | Very hard | 156 to 218 | 2,331 |
| Beltrami County | 182 | 10.6 | Very hard | 160 to 230 | 369 |
| Clearwater County | 170 | 9.9 | Hard | 150 to 223 | 263 |
| Sherburne County | 170 | 9.9 | Hard | 150 to 240 | 471 |
| Chisago County | 160 | 9.3 | Hard | 120 to 190 | 290 |
| Isanti County | 150 | 8.8 | Hard | 127 to 200 | 90 |
| Morrison County | 150 | 8.8 | Hard | 110 to 174 | 968 |
| Benton County | 146 | 8.5 | Hard | 130 to 170 | 175 |
| Cass County | 134 | 7.8 | Hard | 100 to 180 | 477 |
| Ramsey County | 123 | 7.2 | Hard | 94 to 148 | 16,064 |
| Itasca County | 120 | 7 | Moderately hard | 13 to 147 | 907 |
| Aitkin County | 110 | 6.4 | Moderately hard | 79 to 140 | 437 |
| Crow Wing County | 105 | 6.1 | Moderately hard | 78 to 120 | 425 |
| Washington County | 105 | 6.1 | Moderately hard | 98 to 130 | 2,120 |
| Hubbard County | 102 | 6 | Moderately hard | 90 to 192 | 699 |
| Mille Lacs County | 100 | 5.8 | Moderately hard | 89 to 182 | 117 |
| Kanabec County | 78 | 4.6 | Moderately hard | 9 to 130 | 92 |
| Pine County | 64 | 3.7 | Moderately hard | 30 to 85 | 677 |
| St. Louis County | 62 | 3.6 | Moderately hard | 38 to 97 | 6,615 |
| Carlton County | 59 | 3.4 | Soft | 37 to 76 | 3,498 |
| Lake of the Woods County | 48 | 2.8 | Soft | 37 to 92 | 301 |
| Koochiching County | 43 | 2.5 | Soft | 27 to 87 | 944 |
| Lake County | 21 | 1.2 | Soft | 14 to 40 | 2,371 |
| Cook County | 19 | 1.1 | Soft | 12 to 34 | 1,188 |
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 Minnesota
At 8.2 grains per gallon, a family of four would need a softener of about 24,000 grains to regenerate roughly weekly, using around 338 lb of salt a year. Size it for your own household.
87 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.