Water Hardness in Wisconsin
Across 211 measured cities — with 231 more covered by labeled county-level estimates — Wisconsin's median tap water hardness is 200.0 mg/L (11.7 gpg): very hard on the USGS scale. Below: every covered city, the state's hardest and softest water, and the geology that explains it.
Data updated July 6, 2026. Sources: utility-reported water quality data and USGS/EPA Water Quality Portal samples.
Wisconsin Cities by Hardness Category
Measured cities only — labeled county estimates never enter the category counts or the median.
| Category | Range | Measured cities | Share |
|---|---|---|---|
| Soft | 0-60 mg/L | 6 | 2.8% |
| Moderately hard | 60-120 mg/L | 39 | 18.5% |
| Hard | 120-180 mg/L | 53 | 25.1% |
| Very hard | >180 mg/L | 113 | 53.6% |
Hardest and Softest Water in Wisconsin
Measured values only; labeled county estimates and values under active dispute never rank.
Hardest water in Wisconsin
- Slinger — 485.0 mg/L (28.4 gpg), very hard
- Hartford — 426.0 mg/L (24.9 gpg), very hard
- Brookfield — 424.0 mg/L (24.8 gpg), very hard
- Waterloo — 424.0 mg/L (24.8 gpg), very hard
- Germantown — 422.0 mg/L (24.7 gpg), very hard
Softest water in Wisconsin
- Wausau — 32.5 mg/L (1.9 gpg), soft
- Bloomer — 43.4 mg/L (2.5 gpg), soft
- Chippewa Falls — 49.0 mg/L (2.9 gpg), soft
- Augusta — 52.3 mg/L (3.1 gpg), soft
- Black River Falls — 60.8 mg/L (3.6 gpg), moderately hard
Every Covered City in Wisconsin
All 442 covered Wisconsin cities, sorted by population served. "County estimate" rows are labeled context values from USGS/EPA Water Quality Portal county sampling — they never enter the median above. City names link to each city's full water quality page.
| City | Hardness (mg/L) | gpg | Category | Data |
|---|---|---|---|---|
| Wauwatosa | 133.6 | 7.8 | Hard | Utility-reported |
| Milwaukee | 134.9 | 7.9 | Hard | Utility-reported |
| Greenfield | 135.0 | 7.9 | Hard | Utility-reported |
| St. Francis | 135.0 | 7.9 | Hard | Utility-reported |
| West Milwaukee | 135.0 | 7.9 | Hard | Utility-reported |
| Madison | 341.0 | 19.9 | Very hard | Utility-reported |
| Appleton | 81.0 | 4.7 | Moderately hard | Utility-reported |
| Pleasant Prairie | 140.0 | 8.2 | Hard | Utility-reported |
| Sturtevant | 136.1 | 8.0 | Hard | Utility-reported |
| Racine | 136.0 | 8.0 | Hard | Utility-reported |
| Elmwood Park | 136.0 | 8.0 | Hard | Utility-reported |
| Mount Pleasant | 136.0 | 8.0 | Hard | Utility-reported |
| North Bay | 136.0 | 8.0 | Hard | Utility-reported |
| Green Bay | 137.0 | 8.0 | Hard | Utility-reported |
| Kenosha | 140.0 | 8.2 | Hard | Utility-reported |
| Altoona | 101.5 | 5.9 | Moderately hard | Utility-reported |
| Waukesha | 325.7 | 19.1 | Very hard | Utility-reported |
| Seymour | 110.4 | 6.5 | Moderately hard | Utility-reported |
| Oshkosh | 145.4 | 8.5 | Hard | Utility-reported |
| Eau Claire | 100.8 | 5.9 | Moderately hard | Utility-reported |
| Janesville | 298.0 | 17.4 | Very hard | Utility-reported |
| West Allis | 135.0 | 7.9 | Hard | Utility-reported |
| Butler | 297.6 | 17.4 | Very hard | Utility-reported |
| La Crosse | 290.0 | 17.0 | Very hard | Utility-reported |
| French Island | 290.0 | 17.0 | Very hard | Utility-reported |
| Sheboygan | 201.9 | 11.8 | Very hard | Utility-reported |
| Whitefish Bay | 128.8 | 7.5 | Hard | Utility-reported |
| Menasha | 166.0 | 9.7 | Hard | Utility-reported |
| Shorewood | 129.9 | 7.6 | Hard | Utility-reported |
| Glendale | 134.0 | 7.8 | Hard | Utility-reported |
| River Hills | 134.0 | 7.8 | Hard | Utility-reported |
| Fox Crossing | 166.0 | 9.7 | Hard | Utility-reported |
| Fox Point | 132.7 | 7.8 | Hard | Utility-reported |
| Greenville | 152.0 | 8.9 | Hard | Utility-reported |
| Wausau | 32.5 | 1.9 | Soft | Computed from Ca+Mg |
| Beloit | 333.0 | 19.5 | Very hard | Utility-reported |
| De Pere | 194.0 | 11.3 | Very hard | County estimate |
| Brookfield | 424.0 | 24.8 | Very hard | Utility-reported |
| Oregon | 283.1 | 16.6 | Very hard | Utility-reported |
| Manitowoc | 156.0 | 9.1 | Hard | Utility-reported |
| Sun Prairie | 337.0 | 19.7 | Very hard | Utility-reported |
| Oak Creek | 210.0 | 12.3 | Very hard | County estimate |
| Allouez | 136.0 | 8.0 | Hard | Utility-reported |
| Kaukauna | 302.0 | 17.7 | Very hard | County estimate |
| New Berlin | 330.0 | 19.3 | Very hard | County estimate |
| Stevens Point | 173.0 | 10.1 | Hard | Utility-reported |
| Park Ridge | 173.0 | 10.1 | Hard | Utility-reported |
| Menomonee Falls | 174.0 | 10.2 | Hard | Utility-reported |
| Neenah | 67.3 | 3.9 | Moderately hard | Utility-reported |
| Fitchburg | 270.5 | 15.8 | Very hard | Utility-reported |
| Watertown | 249.0 | 14.6 | Very hard | Utility-reported |
| Pewaukee | 381.6 | 22.3 | Very hard | Utility-reported |
| Hales Corners | 210.0 | 12.3 | Very hard | County estimate |
| Little Chute | 87.0 | 5.1 | Moderately hard | Utility-reported |
| Franklin | 210.0 | 12.3 | Very hard | County estimate |
| Combined Locks | 72.7 | 4.3 | Moderately hard | Utility-reported |
| Middleton | 337.0 | 19.7 | Very hard | Utility-reported |
| Caledonia | 300.0 | 17.5 | Very hard | County estimate |
| Grand Chute | 88.6 | 5.2 | Moderately hard | Utility-reported |
| South Milwaukee | 210.0 | 12.3 | Very hard | County estimate |
| Wisconsin Rapids | 62.2 | 3.6 | Moderately hard | Utility-reported |
| Germantown | 422.0 | 24.7 | Very hard | Utility-reported |
| Sussex | 332.3 | 19.4 | Very hard | Utility-reported |
| Lisbon | 332.3 | 19.4 | Very hard | Utility-reported |
| Marshfield | 249.0 | 14.6 | Very hard | Utility-reported |
| Cudahy | 142.0 | 8.3 | Hard | Utility-reported |
| Kimberly | 72.7 | 4.3 | Moderately hard | Utility-reported |
| Onalaska | 337.0 | 19.7 | Very hard | Utility-reported |
| Hudson | 210.0 | 12.3 | Very hard | Utility-reported |
| Oconomowoc | 310.0 | 18.1 | Very hard | Utility-reported |
| Beaver Dam | 334.0 | 19.5 | Very hard | County estimate |
| Menomonie | 150.0 | 8.8 | Hard | Utility-reported |
| Hartford | 426.0 | 24.9 | Very hard | Utility-reported |
| River Falls | 180.0 | 10.5 | Hard | Utility-reported |
| Whiting | 260.0 | 15.2 | Very hard | Utility-reported |
| Weston | 136.0 | 8.0 | Hard | Utility-reported |
| Waunakee | 282.0 | 16.5 | Very hard | Utility-reported |
| Mequon | 440.2 | 25.7 | Very hard | Utility-reported |
| Greendale | 210.0 | 12.3 | Very hard | County estimate |
| Whitewater | 322.6 | 18.9 | Very hard | Utility-reported |
| West Baraboo | 240.0 | 14.0 | Very hard | Utility-reported |
| Chippewa Falls | 49.0 | 2.9 | Soft | Utility-reported |
| Plover | 260.0 | 15.2 | Very hard | Utility-reported |
| Stoughton | 312.0 | 18.3 | Very hard | Utility-reported |
| Baraboo | 240.0 | 14.0 | Very hard | Utility-reported |
| Fort Atkinson | 278.0 | 16.3 | Very hard | Utility-reported |
| Platteville | 297.0 | 17.4 | Very hard | Utility-reported |
| Grafton | 370.0 | 21.6 | Very hard | Utility-reported |
| Port Washington | 330.0 | 19.3 | Very hard | County estimate |
| Cedarburg | 400.0 | 23.4 | Very hard | Utility-reported |
| Two Rivers | 136.0 | 8.0 | Hard | Utility-reported |
| Portage | 254.0 | 14.8 | Very hard | County estimate |
| Monroe | 260.8 | 15.3 | Very hard | Utility-reported |
| Marinette | 118.0 | 6.9 | Moderately hard | County estimate |
| Burlington | 248.0 | 14.5 | Very hard | Utility-reported |
| Verona | 360.0 | 21.1 | Very hard | Utility-reported |
| DeForest | 280.0 | 16.4 | Very hard | Utility-reported |
| Elkhorn | 87.9 | 5.1 | Moderately hard | Utility-reported |
| Holmen | 319.0 | 18.6 | Very hard | Utility-reported |
| Fort Mccoy | 99.5 | 5.8 | Moderately hard | Utility-reported |
| Sparta | 120.0 | 7.0 | Moderately hard | Utility-reported |
| Reedsburg | 162.0 | 9.5 | Hard | Utility-reported |
| Browns Lake | 248.0 | 14.5 | Very hard | Utility-reported |
| Merrill | 116.0 | 6.8 | Moderately hard | Utility-reported |
| Sturgeon Bay | 332.0 | 19.4 | Very hard | Utility-reported |
| McFarland | 364.0 | 21.3 | Very hard | Utility-reported |
| Waupun | 386.0 | 22.6 | Very hard | County estimate |
| New Richmond | 194.0 | 11.3 | Very hard | Utility-reported |
| Sherwood | 97.5 | 5.7 | Moderately hard | Utility-reported |
| Schofield | 118.9 | 7.0 | Moderately hard | Utility-reported |
| Delavan | 360.0 | 21.1 | Very hard | Utility-reported |
| Sheboygan Falls | 320.0 | 18.7 | Very hard | County estimate |
| Rice Lake | 95.5 | 5.6 | Moderately hard | Utility-reported |
| Jackson | 352.0 | 20.6 | Very hard | Utility-reported |
| Muskego | 276.0 | 16.1 | Very hard | Utility-reported |
| Jefferson | 280.0 | 16.4 | Very hard | Utility-reported |
| Monona | 420.0 | 24.6 | Very hard | Utility-reported |
| Ripon | 385.0 | 22.5 | Very hard | Utility-reported |
| Rhinelander | 76.2 | 4.5 | Moderately hard | Utility-reported |
| Lake Geneva | 250.0 | 14.6 | Very hard | County estimate |
| New London | 279.0 | 16.3 | Very hard | Utility-reported |
| Kronenwetter | 150.0 | 8.8 | Hard | Utility-reported |
| Kohler | 380.0 | 22.2 | Very hard | Utility-reported |
| Lake Hallie | 61.0 | 3.6 | Moderately hard | Utility-reported |
| Cottage Grove | 347.0 | 20.3 | Very hard | Utility-reported |
| Edgerton | 291.0 | 17.0 | Very hard | Utility-reported |
| Rib Mountain | 90.3 | 5.3 | Moderately hard | Utility-reported |
| Black River Falls | 60.8 | 3.6 | Moderately hard | Utility-reported |
| Lake Mills | 324.0 | 18.9 | Very hard | Utility-reported |
| King | 208.0 | 12.2 | Very hard | County estimate |
| Slinger | 485.0 | 28.4 | Very hard | Utility-reported |
| Hayward | 120.0 | 7.0 | Moderately hard | Utility-reported |
| Milton | 342.0 | 20.0 | Very hard | Utility-reported |
| Berlin | 204.0 | 11.9 | Very hard | Utility-reported |
| Columbus | 144.0 | 8.4 | Hard | Utility-reported |
| Evansville | 304.0 | 17.8 | Very hard | County estimate |
| West Salem | 244.0 | 14.3 | Very hard | Utility-reported |
| Mayville | 324.0 | 18.9 | Very hard | Utility-reported |
| Oconto | 138.5 | 8.1 | Hard | County estimate |
| Mosinee | 90.9 | 5.3 | Moderately hard | Utility-reported |
| Suamico | 196.0 | 11.5 | Very hard | Utility-reported |
| Saukville | 373.0 | 21.8 | Very hard | Utility-reported |
| East Troy | 315.0 | 18.4 | Very hard | Utility-reported |
| Prairie du Sac | 277.0 | 16.2 | Very hard | County estimate |
| Baldwin | 100.0 | 5.8 | Moderately hard | County estimate |
| Prescott | 337.0 | 19.7 | Very hard | Utility-reported |
| Chilton | 404.5 | 23.6 | Very hard | County estimate |
| Genoa City | 210.0 | 12.3 | Very hard | County estimate |
| Pell Lake | 250.0 | 14.6 | Very hard | County estimate |
| Lancaster | 290.0 | 17.0 | Very hard | Utility-reported |
| Kiel | 386.0 | 22.6 | Very hard | Utility-reported |
| Lodi | 303.0 | 17.7 | Very hard | Utility-reported |
| Marshall | 50.0 | 2.9 | Soft | County estimate |
| Arcadia | 197.0 | 11.5 | Very hard | Utility-reported |
| Pulaski | 286.0 | 16.7 | Very hard | Utility-reported |
| Oneida | 194.0 | 11.3 | Very hard | County estimate |
| Horicon | 210.0 | 12.3 | Very hard | Utility-reported |
| Bloomer | 43.4 | 2.5 | Soft | Utility-reported |
| Omro | 99.9 | 5.8 | Moderately hard | County estimate |
| Wisconsin Dells | 83.5 | 4.9 | Moderately hard | Utility-reported |
| Stanley | 106.0 | 6.2 | Moderately hard | Utility-reported |
| Peshtigo | 197.0 | 11.5 | Very hard | Utility-reported |
| Barron | 133.0 | 7.8 | Hard | Utility-reported |
| Sauk City | 276.0 | 16.1 | Very hard | Utility-reported |
| Waterloo | 424.0 | 24.8 | Very hard | Utility-reported |
| Johnson Creek | 254.0 | 14.8 | Very hard | Utility-reported |
| Ellsworth | 333.0 | 19.5 | Very hard | Utility-reported |
| Boscobel | 273.0 | 16.0 | Very hard | Utility-reported |
| Brodhead | 304.0 | 17.8 | Very hard | County estimate |
| New Holstein | 367.0 | 21.5 | Very hard | Utility-reported |
| Rothschild | 157.0 | 9.2 | Hard | Utility-reported |
| Ladysmith | 114.9 | 6.7 | Moderately hard | Computed from Ca+Mg |
| Tomahawk | 42.8 | 2.5 | Soft | County estimate |
| Lac du Flambeau | 44.7 | 2.6 | Soft | County estimate |
| Wrightstown | 194.0 | 11.3 | Very hard | County estimate |
| Brillion | 143.0 | 8.4 | Hard | Utility-reported |
| Oostburg | 403.0 | 23.6 | Very hard | Utility-reported |
| Windsor | 50.0 | 2.9 | Soft | County estimate |
| Algoma | 123.0 | 7.2 | Hard | Utility-reported |
| Park Falls | 117.0 | 6.8 | Moderately hard | Utility-reported |
| Lake Delton | 103.0 | 6.0 | Moderately hard | Utility-reported |
| Amery | 100.0 | 5.8 | Moderately hard | County estimate |
| Kewaunee | 400.0 | 23.4 | Very hard | Utility-reported |
| Oconto Falls | 217.0 | 12.7 | Very hard | Utility-reported |
| Somerset | 211.0 | 12.3 | Very hard | Utility-reported |
| Hortonville | 302.0 | 17.7 | Very hard | County estimate |
| Bowler | 140.0 | 8.2 | Hard | County estimate |
| Neillsville | 61.0 | 3.6 | Moderately hard | County estimate |
| Juneau | 288.0 | 16.8 | Very hard | Utility-reported |
| Mondovi | 220.0 | 12.9 | Very hard | County estimate |
| Spooner | 68.8 | 4.0 | Moderately hard | County estimate |
| Williams Bay | 110.0 | 6.4 | Moderately hard | Utility-reported |
| Luxemburg | 377.0 | 22.1 | Very hard | Utility-reported |
| Belleville | 50.0 | 2.9 | Soft | County estimate |
| Dousman | 330.0 | 19.3 | Very hard | County estimate |
| Nekoosa | 202.0 | 11.8 | Very hard | County estimate |
| Poynette | 254.0 | 14.8 | Very hard | County estimate |
| New Lisbon | 70.9 | 4.2 | Moderately hard | County estimate |
| Lomira | 334.0 | 19.5 | Very hard | County estimate |
| Fennimore | 415.0 | 24.3 | Very hard | County estimate |
| Abbotsford | 49.5 | 2.9 | Soft | County estimate |
| Winneconne | 99.9 | 5.8 | Moderately hard | County estimate |
| Mineral Point | 390.0 | 22.8 | Very hard | County estimate |
| Merrimac | 247.0 | 14.4 | Very hard | Utility-reported |
| Denmark | 398.0 | 23.3 | Very hard | Utility-reported |
| Pardeeville | 270.0 | 15.8 | Very hard | Utility-reported |
| Minocqua | 147.0 | 8.6 | Hard | Utility-reported |
| Woodruff | 147.0 | 8.6 | Hard | Utility-reported |
| Cumberland | 19.8 | 1.2 | Soft | County estimate |
| Walworth | 250.0 | 14.6 | Very hard | County estimate |
| Washburn | 63.0 | 3.7 | Moderately hard | County estimate |
| Wautoma | 187.1 | 10.9 | Very hard | County estimate |
| Fredonia | 330.0 | 19.3 | Very hard | County estimate |
| Belgium | 323.0 | 18.9 | Very hard | Utility-reported |
| Darlington | 414.0 | 24.2 | Very hard | County estimate |
| Cedar Grove | 355.0 | 20.8 | Very hard | Utility-reported |
| Deerfield | 135.3 | 7.9 | Hard | Computed from Ca+Mg |
| New Glarus | 304.0 | 17.8 | Very hard | Utility-reported |
| Cuba City | 415.0 | 24.3 | Very hard | County estimate |
| Clinton | 304.0 | 17.8 | Very hard | County estimate |
| North Prairie | 330.0 | 19.3 | Very hard | County estimate |
| St. Croix Falls | 168.0 | 9.8 | Hard | Utility-reported |
| St. Croix Falls | 100.0 | 5.8 | Moderately hard | County estimate |
| Redgranite | 187.1 | 10.9 | Very hard | County estimate |
| Crandon | 110.0 | 6.4 | Moderately hard | County estimate |
| Eagle | 330.0 | 19.3 | Very hard | County estimate |
| Spencer | 61.0 | 3.6 | Moderately hard | County estimate |
| Odanah | 62.0 | 3.6 | Moderately hard | County estimate |
| Cameron | 79.9 | 4.7 | Moderately hard | Computed from Ca+Mg |
| Chetek | 19.8 | 1.2 | Soft | County estimate |
| Hammond | 100.0 | 5.8 | Moderately hard | County estimate |
| New Franken | 194.0 | 11.3 | Very hard | County estimate |
| Roberts | 100.0 | 5.8 | Moderately hard | County estimate |
| Durand | 69.7 | 4.1 | Moderately hard | County estimate |
| Port Edwards | 68.1 | 4.0 | Moderately hard | County estimate |
| Weyauwega | 208.0 | 12.2 | Very hard | County estimate |
| Adams | 202.0 | 11.8 | Very hard | County estimate |
| Fontana | 250.0 | 14.6 | Very hard | County estimate |
| Colby | 183.0 | 10.7 | Very hard | Utility-reported |
| Campbellsport | 386.0 | 22.6 | Very hard | County estimate |
| Whitehall | 70.3 | 4.1 | Moderately hard | County estimate |
| Randolph | 254.0 | 14.8 | Very hard | County estimate |
| Fall River | 254.0 | 14.8 | Very hard | County estimate |
| Palmyra | 246.0 | 14.4 | Very hard | County estimate |
| Osseo | 70.3 | 4.1 | Moderately hard | County estimate |
| Marathon City | 49.5 | 2.9 | Soft | County estimate |
| Phillips | 92.7 | 5.4 | Moderately hard | Utility-reported |
| Darien | 250.0 | 14.6 | Very hard | County estimate |
| Cambridge | 50.0 | 2.9 | Soft | County estimate |
| Thorp | 175.0 | 10.2 | Hard | Utility-reported |
| Spring Green | 277.0 | 16.2 | Very hard | County estimate |
| Trempealeau | 70.3 | 4.1 | Moderately hard | County estimate |
| Fox Lake | 334.0 | 19.5 | Very hard | County estimate |
| Random Lake | 320.0 | 18.7 | Very hard | County estimate |
| Mazomanie | 50.0 | 2.9 | Soft | County estimate |
| Bangor | 272.0 | 15.9 | Very hard | County estimate |
| Oxford | 210.0 | 12.3 | Very hard | County estimate |
| Sharon | 250.0 | 14.6 | Very hard | County estimate |
| Eagle River | 44.7 | 2.6 | Soft | County estimate |
| Brooklyn | 158.5 | 9.3 | Hard | Computed from Ca+Mg |
| Hurley | 54.0 | 3.2 | Soft | County estimate |
| Stratford | 307.0 | 17.9 | Very hard | Utility-reported |
| Cleveland | 348.0 | 20.4 | Very hard | Utility-reported |
| Independence | 70.3 | 4.1 | Moderately hard | County estimate |
| Galesville | 113.0 | 6.6 | Moderately hard | Utility-reported |
| Markesan | 229.0 | 13.4 | Very hard | County estimate |
| Bonduel | 140.0 | 8.2 | Hard | County estimate |
| Orfordville | 304.0 | 17.8 | Very hard | County estimate |
| Grantsburg | 67.0 | 3.9 | Moderately hard | County estimate |
| Muscoda | 415.0 | 24.3 | Very hard | County estimate |
| Augusta | 52.3 | 3.1 | Soft | Utility-reported |
| Mishicot | 219.0 | 12.8 | Very hard | County estimate |
| Spring Valley | 240.0 | 14.0 | Very hard | County estimate |
| Cornell | 42.0 | 2.5 | Soft | County estimate |
| Gillett | 250.0 | 14.6 | Very hard | Utility-reported |
| Woodville | 100.0 | 5.8 | Moderately hard | County estimate |
| Black Earth | 50.0 | 2.9 | Soft | County estimate |
| Cadott | 89.0 | 5.2 | Moderately hard | Utility-reported |
| Elroy | 70.9 | 4.2 | Moderately hard | County estimate |
| Montello | 210.0 | 12.3 | Very hard | County estimate |
| Hillsboro | 210.0 | 12.3 | Very hard | County estimate |
| Black Creek | 302.0 | 17.7 | Very hard | County estimate |
| Loyal | 61.0 | 3.6 | Moderately hard | County estimate |
| Blair | 61.7 | 3.6 | Moderately hard | Utility-reported |
| Iola | 208.0 | 12.2 | Very hard | County estimate |
| Manawa | 208.0 | 12.2 | Very hard | County estimate |
| Marion | 208.0 | 12.2 | Very hard | County estimate |
| Fall Creek | 75.0 | 4.4 | Moderately hard | County estimate |
| Theresa | 334.0 | 19.5 | Very hard | County estimate |
| Barneveld | 390.0 | 22.8 | Very hard | County estimate |
| Florence | 97.0 | 5.7 | Moderately hard | County estimate |
| Shullsburg | 414.0 | 24.2 | Very hard | County estimate |
| Monticello | 325.0 | 19.0 | Very hard | County estimate |
| Niagara | 118.0 | 6.9 | Moderately hard | County estimate |
| Reedsville | 197.7 | 11.6 | Very hard | Computed from Ca+Mg |
| Wittenberg | 140.0 | 8.2 | Hard | County estimate |
| Hazel Green | 167.5 | 9.8 | Hard | Computed from Ca+Mg |
| Hilbert | 178.5 | 10.4 | Hard | Computed from Ca+Mg |
| Princeton | 229.0 | 13.4 | Very hard | County estimate |
| Dickeyville | 415.0 | 24.3 | Very hard | County estimate |
| Luck | 100.0 | 5.8 | Moderately hard | County estimate |
| Cashton | 175.5 | 10.3 | Hard | County estimate |
| Oakfield | 386.0 | 22.6 | Very hard | County estimate |
| Strum | 70.3 | 4.1 | Moderately hard | County estimate |
| Dane | 50.0 | 2.9 | Soft | County estimate |
| Rio | 254.0 | 14.8 | Very hard | County estimate |
| Greenwood | 61.0 | 3.6 | Moderately hard | County estimate |
| Turtle Lake | 100.0 | 5.8 | Moderately hard | County estimate |
| Hustisford | 334.0 | 19.5 | Very hard | County estimate |
| Clear Lake | 100.0 | 5.8 | Moderately hard | County estimate |
| Amherst | 267.0 | 15.6 | Very hard | Utility-reported |
| Boyceville | 105.0 | 6.1 | Moderately hard | County estimate |
| Balsam Lake | 143.0 | 8.4 | Hard | Utility-reported |
| Athens | 49.5 | 2.9 | Soft | County estimate |
| Elkhart Lake | 356.0 | 20.8 | Very hard | Utility-reported |
| Albany | 325.0 | 19.0 | Very hard | County estimate |
| Green Lake | 229.0 | 13.4 | Very hard | County estimate |
| Sister Bay | 327.0 | 19.1 | Very hard | Utility-reported |
| Crivitz | 118.0 | 6.9 | Moderately hard | County estimate |
| Belmont | 293.0 | 17.1 | Very hard | Utility-reported |
| Salem | 224.0 | 13.1 | Very hard | County estimate |
| Fond Du Lac | 170.0 | 9.9 | Hard | Utility-reported |
| Iron Ridge | 334.0 | 19.5 | Very hard | County estimate |
| Shiocton | 302.0 | 17.7 | Very hard | County estimate |
| Centuria | 100.0 | 5.8 | Moderately hard | County estimate |
| Plainfield | 187.1 | 10.9 | Very hard | County estimate |
| Allenton | 340.0 | 19.9 | Very hard | County estimate |
| Pittsville | 68.1 | 4.0 | Moderately hard | County estimate |
| Argyle | 303.0 | 17.7 | Very hard | Utility-reported |
| Arlington | 254.0 | 14.8 | Very hard | County estimate |
| Footville | 304.0 | 17.8 | Very hard | County estimate |
| St. Nazianz | 219.0 | 12.8 | Very hard | County estimate |
| Wyocena | 200.0 | 11.7 | Very hard | Utility-reported |
| Clayton | 19.8 | 1.2 | Soft | County estimate |
| Mercer | 54.0 | 3.2 | Soft | County estimate |
| Whitelaw | 219.0 | 12.8 | Very hard | County estimate |
| Merrillan | 37.0 | 2.2 | Soft | County estimate |
| Glidden | 62.0 | 3.6 | Moderately hard | County estimate |
| Potosi | 415.0 | 24.3 | Very hard | County estimate |
| Ixonia | 268.0 | 15.7 | Very hard | Utility-reported |
| Mellen | 62.0 | 3.6 | Moderately hard | County estimate |
| Coleman | 249.0 | 14.6 | Very hard | Utility-reported |
| Reeseville | 334.0 | 19.5 | Very hard | County estimate |
| Wauzeka | 263.0 | 15.4 | Very hard | County estimate |
| Bloomington | 415.0 | 24.3 | Very hard | County estimate |
| Almena | 19.8 | 1.2 | Soft | County estimate |
| Livingston | 415.0 | 24.3 | Very hard | County estimate |
| Prentice | 39.6 | 2.3 | Soft | County estimate |
| Ettrick | 70.3 | 4.1 | Moderately hard | County estimate |
| North Freedom | 95.1 | 5.6 | Moderately hard | Computed from Ca+Mg |
| Norwalk | 175.5 | 10.3 | Hard | County estimate |
| Delafield | 330.0 | 19.3 | Very hard | County estimate |
| Forest Junction | 404.5 | 23.6 | Very hard | County estimate |
| Greenleaf | 194.0 | 11.3 | Very hard | County estimate |
| Stockbridge | 404.5 | 23.6 | Very hard | County estimate |
| Rockland | 272.0 | 15.9 | Very hard | County estimate |
| Bruce | 26.7 | 1.6 | Soft | County estimate |
| Bristol | 270.0 | 15.8 | Very hard | Utility-reported |
| Wausaukee | 118.0 | 6.9 | Moderately hard | County estimate |
| Soldiers Grove | 263.0 | 15.4 | Very hard | County estimate |
| West Bend | 340.0 | 19.9 | Very hard | County estimate |
| Lena | 138.5 | 8.1 | Hard | County estimate |
| Vesper | 68.1 | 4.0 | Moderately hard | County estimate |
| Mount Calvary | 386.0 | 22.6 | Very hard | County estimate |
| Minong | 68.8 | 4.0 | Moderately hard | County estimate |
| Star Prairie | 100.0 | 5.8 | Moderately hard | County estimate |
| Bay City | 240.0 | 14.0 | Very hard | County estimate |
| New Auburn | 52.6 | 3.1 | Soft | Utility-reported |
| Boyd | 42.0 | 2.5 | Soft | County estimate |
| Melrose | 37.0 | 2.2 | Soft | County estimate |
| Adell | 320.0 | 18.7 | Very hard | County estimate |
| Withee | 61.0 | 3.6 | Moderately hard | County estimate |
| St. Cloud | 386.0 | 22.6 | Very hard | County estimate |
| Gays Mills | 263.0 | 15.4 | Very hard | County estimate |
| Alma Center | 37.0 | 2.2 | Soft | County estimate |
| South Wayne | 414.0 | 24.2 | Very hard | County estimate |
| Lyndon Station | 70.9 | 4.2 | Moderately hard | County estimate |
| Glenbeulah | 274.4 | 16.1 | Very hard | Computed from Ca+Mg |
| Knapp | 105.0 | 6.1 | Moderately hard | County estimate |
| Fairchild | 28.4 | 1.7 | Soft | Utility-reported |
| Nashotah | 330.0 | 19.3 | Very hard | County estimate |
| Fountain City | 220.0 | 12.9 | Very hard | County estimate |
| Birchwood | 139.0 | 8.1 | Hard | Utility-reported |
| Junction City | 261.5 | 15.3 | Very hard | County estimate |
| Blue River | 269.0 | 15.7 | Very hard | Utility-reported |
| Clyman | 403.0 | 23.6 | Very hard | Utility-reported |
| Colfax | 228.2 | 13.3 | Very hard | Computed from Ca+Mg |
| Union Grove | 313.0 | 18.3 | Very hard | Utility-reported |
| Yorkville | 313.0 | 18.3 | Very hard | Utility-reported |
| Pound | 138.5 | 8.1 | Hard | County estimate |
| Gilman | 21.0 | 1.2 | Soft | County estimate |
| Dallas | 19.8 | 1.2 | Soft | County estimate |
| La Valle | 277.0 | 16.2 | Very hard | County estimate |
| Kellnersville | 219.0 | 12.8 | Very hard | County estimate |
| Maribel | 219.0 | 12.8 | Very hard | County estimate |
| Cazenovia | 272.0 | 15.9 | Very hard | County estimate |
| Winter | 41.0 | 2.4 | Soft | County estimate |
| Lowell | 334.0 | 19.5 | Very hard | County estimate |
| Elm Grove | 330.0 | 19.3 | Very hard | County estimate |
| Wheeler | 105.0 | 6.1 | Moderately hard | County estimate |
| Irma | 42.8 | 2.5 | Soft | County estimate |
| Fifield | 126.0 | 7.4 | Hard | Utility-reported |
| Loganville | 277.0 | 16.2 | Very hard | County estimate |
| Rock Springs | 102.0 | 6.0 | Moderately hard | Utility-reported |
| Rewey | 390.0 | 22.8 | Very hard | County estimate |
| Butternut | 78.7 | 4.6 | Moderately hard | Computed from Ca+Mg |
| Thiensville | 330.0 | 19.3 | Very hard | County estimate |
| Milladore | 68.1 | 4.0 | Moderately hard | County estimate |
| Maine | 117.0 | 6.8 | Moderately hard | Utility-reported |
| Dodge | 70.3 | 4.1 | Moderately hard | County estimate |
| Egg Harbor | 293.0 | 17.1 | Very hard | Utility-reported |
| Sheldon | 220.0 | 12.9 | Very hard | Utility-reported |
| Browntown | 325.0 | 19.0 | Very hard | County estimate |
| Kansasville | 300.0 | 17.5 | Very hard | County estimate |
| Radisson | 140.0 | 8.2 | Hard | Utility-reported |
| Weyerhaeuser | 26.7 | 1.6 | Soft | County estimate |
| Richland Center | 272.0 | 15.9 | Very hard | County estimate |
| Iron Belt | 54.0 | 3.2 | Soft | County estimate |
| Mount Sterling | 263.0 | 15.4 | Very hard | County estimate |
| Exeland | 41.0 | 2.4 | Soft | County estimate |
| Mount Hope | 415.0 | 24.3 | Very hard | County estimate |
| Stone Lake | 41.0 | 2.4 | Soft | County estimate |
| Lannon | 442.0 | 25.9 | Very hard | Utility-reported |
| Richfield | 340.0 | 19.9 | Very hard | County estimate |
| Stitzer | 415.0 | 24.3 | Very hard | County estimate |
| Twin Lakes | 224.0 | 13.1 | Very hard | County estimate |
| Lake Tomahawk | 61.0 | 3.6 | Moderately hard | Utility-reported |
| Maiden Rock | 240.0 | 14.0 | Very hard | County estimate |
| Tony | 26.7 | 1.6 | Soft | County estimate |
| Osceola | 199.0 | 11.6 | Very hard | Utility-reported |
| Glen Flora | 26.7 | 1.6 | Soft | County estimate |
| Bancroft | 261.5 | 15.3 | Very hard | County estimate |
| Colgate | 340.0 | 19.9 | Very hard | County estimate |
| Okauchee | 330.0 | 19.3 | Very hard | County estimate |
| Westby | 210.0 | 12.3 | Very hard | County estimate |
| Auburndale | 68.1 | 4.0 | Moderately hard | County estimate |
| Rochester | 300.0 | 17.5 | Very hard | County estimate |
| Waterford | 300.0 | 17.5 | Very hard | County estimate |
| Abrams | 138.5 | 8.1 | Hard | County estimate |
| Unity | 61.0 | 3.6 | Moderately hard | County estimate |
| Bayfield | 63.0 | 3.7 | Moderately hard | County estimate |
| Webster | 67.0 | 3.9 | Moderately hard | County estimate |
Above 120 mg/L (7 gpg), scale is usually worth treating — see our water softener guide, or size a system with the hardness calculator & converter.
The Geology Behind Wisconsin's Water Hardness
Wisconsin sits in the Midwestern glacial-drift and carbonate bedrock region.
Ice-age glaciers ground up limestone and dolomite bedrock and spread it across the Midwest as thick, carbonate-rich drift. Groundwater percolating through that drift - and through the shallow carbonate bedrock beneath it - dissolves calcium and magnesium readily, which is why the USGS maps the region hard to very hard almost everywhere. Cities drawing Great Lakes surface water tend to run somewhat softer than their groundwater-supplied neighbors.
Wisconsin Water Hardness FAQ
Does Wisconsin have hard water?
Yes — across Wisconsin's measured cities, typical tap water is hard. The median is 200.0 mg/L (11.7 gpg) — very hard on the USGS scale, where anything above 120 mg/L (7 gpg) counts as hard. 166 of Wisconsin's 211 measured cities fall in the hard or very hard bands (79%), so check your own city rather than the state average.
How hard is tap water in Wisconsin?
Across the 211 Wisconsin cities with measured values in our index, the median hardness is 200.0 mg/L (11.7 gpg) — very hard on the USGS scale. Individual cities range from 28.4 to 485.0 mg/L, so check your own city rather than assuming the state number.
Which city in Wisconsin has the hardest water?
Slinger has the hardest measured tap water in our Wisconsin index at 485.0 mg/L (28.4 gpg) — very hard on the USGS scale. Rankings use measured utility values only; labeled county estimates and values under active dispute are excluded.
Do I need a water softener in Wisconsin?
166 of Wisconsin's 211 measured cities (79%) fall in the hard or very hard bands — above 120 mg/L (7 gpg), the level where most water treatment professionals suggest considering an ion-exchange softener. Hardness varies utility to utility, so look up your own city's value before sizing equipment.
How do I find my city's exact water hardness?
Enter your ZIP code in our free lookup at tapwaterdata.com/zip to see the value we hold for your Wisconsin city from utility-reported water quality data, check your water utility's annual Consumer Confidence Report (CCR), or use a home test-strip kit.
Stay Informed About Your Water Quality
Get EPA reports, filter recommendations, and safety alerts for your area.
Join 10,000+ people protecting their families. Unsubscribe anytime.