Skip to main content

Water Hardness in Wisconsin

Across 180 measured cities — with 247 more covered by labeled county-level estimates — Wisconsin's median tap water hardness is 218.5 mg/L (12.8 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 September 13, 2026. Sources: utility-reported water quality data and USGS/EPA Water Quality Portal samples.

State Median
218.5
mg/L (12.8 gpg), measured cities
Measured Range
28.4-485.0
mg/L across measured cities
Measured Cities
180
utility-reported or computed values
County Estimates
247
58% of covered cities

What it costs to soften Wisconsin water

Water softener cost in Wisconsin at 12.8 gpg prices the equipment and the installation labour against the plumber wages published for Wisconsin, and labels every range as modelled or measured rather than leaving you to guess which it is.

Wisconsin · 12.78 grains per gallon

$1,071–$1,423

installed, midpoint $1,227 — a 32,000-grain unit, the size 4 people at this hardness need.

Salt and drain water over 10 years: $1,073–$1,777 — the 13,994,100 grains of hardness this household removes, at the national salt price and water rate whose sources are named below. Filter changes and Service contract are omitted rather than assumed.

Sized for 4 people regenerating every 7 days: 26,838 grains of capacity needed, rounded up to the next common residential size. The median of 180 measured Wisconsin cities in our hardness dataset. Modelled: the standard build band published for that state at the size this hardness calls for, equipment priced 2026-10-04 against the May 2025 reference period (OEWS M2025). Salt: the median retailer price of 3 retailers, read 2026-10-04, at a declared salt dose per regeneration. Drain water: about 50 gallons per regeneration from a government extension estimate read 2026-10-04, at the 2024 national average water and sewer rate from a government source read 2026-10-04.

Deciding whether it is worth it at all? Start from how much a water softener costs nationally — the same equipment, installation and ten-year ownership breakdown before any state wage adjustment is applied.

Wisconsin Cities by Hardness Category

Measured cities only — labeled county estimates never enter the category counts or the median.

CategoryRangeMeasured citiesShare
Soft0-60 mg/L42.2%
Moderately hard60-120 mg/L3720.6%
Hard120-180 mg/L3519.4%
Very hard>180 mg/L10457.8%

Hardest and Softest Water in Wisconsin

Measured values only; labeled county estimates and values under active dispute never rank.

Hardest water in Wisconsin

  1. Slinger — 485.0 mg/L (28.4 gpg), very hard
  2. Hartford — 426.0 mg/L (24.9 gpg), very hard
  3. Waterloo — 424.0 mg/L (24.8 gpg), very hard
  4. Germantown — 422.0 mg/L (24.7 gpg), very hard
  5. Monona — 420.0 mg/L (24.6 gpg), very hard

Softest water in Wisconsin

  1. Bloomer — 43.4 mg/L (2.5 gpg), soft
  2. Augusta — 52.3 mg/L (3.1 gpg), soft
  3. Black River Falls — 60.8 mg/L (3.6 gpg), moderately hard
  4. Neenah — 67.3 mg/L (3.9 gpg), moderately hard
  5. Rhinelander — 76.2 mg/L (4.5 gpg), moderately hard

Every Covered City in Wisconsin

All 427 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.

CityHardness (mg/L)gpgCategoryData
Milwaukee135.07.9HardUtility-reported
Madison341.019.9Very hardUtility-reported
Racine136.08.0HardUtility-reported
Green Bay137.08.0HardUtility-reported
Kenosha140.08.2HardUtility-reported
Appleton78.74.6Moderately hardUtility-reported
Waukesha325.019.0Very hardUtility-reported
Eau Claire101.05.9Moderately hardUtility-reported
Janesville298.017.4Very hardUtility-reported
West Allis135.07.9HardUtility-reported
Oshkosh134.07.8HardUtility-reported
La Crosse290.017.0Very hardUtility-reported
Lacrosse290.017.0Very hardUtility-reported
Wauwatosa117.06.8Moderately hardUtility-reported
Sheboygan185.010.8Very hardUtility-reported
Fond Du Lac386.022.6Very hardCounty estimate
Wausau49.52.9SoftCounty estimate
Beloit333.019.5Very hardUtility-reported
De Pere194.011.3Very hardCounty estimate
Manitowoc156.09.1HardUtility-reported
Sun Prairie337.019.7Very hardUtility-reported
Oak Creek210.012.3Very hardCounty estimate
Kaukauna302.017.7Very hardCounty estimate
Brookfield399.023.3Very hardUtility-reported
New Berlin330.019.3Very hardCounty estimate
Stevens Point173.010.1HardUtility-reported
Neenah67.33.9Moderately hardUtility-reported
Fitchburg270.015.8Very hardUtility-reported
Watertown249.014.6Very hardUtility-reported
Menomonee Falls174.010.2HardUtility-reported
Hales Corners210.012.3Very hardCounty estimate
Franklin210.012.3Very hardCounty estimate
Middleton337.019.7Very hardUtility-reported
Caledonia300.017.5Very hardCounty estimate
Grand Chute88.65.2Moderately hardUtility-reported
South Milwaukee210.012.3Very hardCounty estimate
Germantown422.024.7Very hardUtility-reported
Wisconsin Rapids62.23.6Moderately hardUtility-reported
Marshfield249.014.6Very hardUtility-reported
Cudahy142.08.3HardUtility-reported
Onalaska337.019.7Very hardUtility-reported
Hudson210.012.3Very hardUtility-reported
Beaver Dam334.019.5Very hardCounty estimate
Hartford426.024.9Very hardUtility-reported
Menomonie150.08.8HardUtility-reported
Oconomowoc310.018.1Very hardUtility-reported
River Falls180.010.5HardUtility-reported
Weston136.08.0HardUtility-reported
Menasha166.09.7HardUtility-reported
Greendale210.012.3Very hardCounty estimate
Whitefish Bay116.06.8Moderately hardUtility-reported
Allouez136.08.0HardUtility-reported
Whitewater322.018.8Very hardUtility-reported
Waunakee282.016.5Very hardUtility-reported
Plover260.015.2Very hardUtility-reported
Chippewa Falls42.02.5SoftCounty estimate
Shorewood119.07.0Moderately hardUtility-reported
Stoughton312.018.3Very hardUtility-reported
Baraboo240.014.0Very hardUtility-reported
Fort Atkinson278.016.3Very hardUtility-reported
Platteville297.017.4Very hardUtility-reported
Grafton370.021.6Very hardUtility-reported
Port Washington330.019.3Very hardCounty estimate
Cedarburg400.023.4Very hardUtility-reported
Two Rivers136.08.0HardUtility-reported
Mequon443.025.9Very hardUtility-reported
Portage254.014.8Very hardCounty estimate
Little Chute87.05.1Moderately hardUtility-reported
Marinette118.06.9Moderately hardCounty estimate
Monroe260.015.2Very hardUtility-reported
Pleasant Prairie224.013.1Very hardCounty estimate
Verona360.021.1Very hardUtility-reported
Sussex330.019.3Very hardUtility-reported
DeForest280.016.4Very hardUtility-reported
Elkhorn86.85.1Moderately hardUtility-reported
Holmen319.018.6Very hardUtility-reported
Oregon315.018.4Very hardUtility-reported
Sparta120.07.0Moderately hardUtility-reported
Fort Mccoy99.55.8Moderately hardUtility-reported
Reedsburg162.09.5HardUtility-reported
Burlington248.014.5Very hardUtility-reported
Merrill116.06.8Moderately hardUtility-reported
Sturgeon Bay332.019.4Very hardUtility-reported
McFarland364.021.3Very hardUtility-reported
Waupun386.022.6Very hardCounty estimate
New Richmond194.011.3Very hardUtility-reported
Pewaukee335.019.6Very hardUtility-reported
Greenville313.018.3Very hardUtility-reported
Delavan360.021.1Very hardUtility-reported
Sheboygan Falls320.018.7Very hardCounty estimate
Rice Lake95.55.6Moderately hardUtility-reported
Jackson352.020.6Very hardUtility-reported
Muskego276.016.1Very hardUtility-reported
Jefferson280.016.4Very hardUtility-reported
Monona420.024.6Very hardUtility-reported
Ripon385.022.5Very hardUtility-reported
Rhinelander76.24.5Moderately hardUtility-reported
Altoona106.06.2Moderately hardUtility-reported
Lake Geneva250.014.6Very hardCounty estimate
New London279.016.3Very hardUtility-reported
Kronenwetter150.08.8HardUtility-reported
Fox Point126.07.4HardUtility-reported
Lake Hallie61.03.6Moderately hardUtility-reported
Cottage Grove347.020.3Very hardUtility-reported
Kimberly72.74.3Moderately hardUtility-reported
Rib Mountain90.35.3Moderately hardUtility-reported
Lake Mills324.018.9Very hardUtility-reported
King208.012.2Very hardCounty estimate
Milton342.020.0Very hardUtility-reported
Berlin204.011.9Very hardUtility-reported
Edgerton291.017.0Very hardUtility-reported
Slinger485.028.4Very hardUtility-reported
Columbus144.08.4HardUtility-reported
Evansville304.017.8Very hardCounty estimate
Mayville324.018.9Very hardUtility-reported
West Salem244.014.3Very hardUtility-reported
Union Grove300.017.5Very hardCounty estimate
Oconto138.58.1HardCounty estimate
Suamico196.011.5Very hardUtility-reported
Saukville373.021.8Very hardUtility-reported
East Troy315.018.4Very hardUtility-reported
Prairie du Sac277.016.2Very hardCounty estimate
Baldwin100.05.8Moderately hardCounty estimate
Prescott337.019.7Very hardUtility-reported
Chilton404.523.6Very hardCounty estimate
Genoa City210.012.3Very hardCounty estimate
Pell Lake250.014.6Very hardCounty estimate
Kiel386.022.6Very hardUtility-reported
Lancaster290.017.0Very hardUtility-reported
Marshall50.02.9SoftCounty estimate
Arcadia197.011.5Very hardUtility-reported
Pulaski286.016.7Very hardUtility-reported
Oneida194.011.3Very hardCounty estimate
Horicon210.012.3Very hardUtility-reported
Black River Falls60.83.6Moderately hardUtility-reported
Combined Locks302.017.7Very hardCounty estimate
Bloomer43.42.5SoftUtility-reported
Omro99.95.8Moderately hardCounty estimate
Stanley106.06.2Moderately hardUtility-reported
Seymour288.016.8Very hardUtility-reported
Peshtigo197.011.5Very hardUtility-reported
Sauk City276.016.1Very hardUtility-reported
Barron133.07.8HardUtility-reported
Mosinee86.65.1Moderately hardUtility-reported
Waterloo424.024.8Very hardUtility-reported
Johnson Creek254.014.8Very hardUtility-reported
Ellsworth333.019.5Very hardUtility-reported
Boscobel273.016.0Very hardUtility-reported
Wisconsin Dells89.25.2Moderately hardUtility-reported
Brodhead304.017.8Very hardCounty estimate
New Holstein367.021.5Very hardUtility-reported
Rothschild157.09.2HardUtility-reported
Ladysmith114.96.7Moderately hardComputed from Ca+Mg
Tomahawk42.82.5SoftCounty estimate
Lac du Flambeau44.72.6SoftCounty estimate
Wrightstown194.011.3Very hardCounty estimate
Brillion143.08.4HardUtility-reported
Lodi303.017.7Very hardUtility-reported
Sherwood97.55.7Moderately hardUtility-reported
Oostburg403.023.6Very hardUtility-reported
Windsor50.02.9SoftCounty estimate
Algoma123.07.2HardUtility-reported
Park Falls117.06.8Moderately hardUtility-reported
Amery100.05.8Moderately hardCounty estimate
Kewaunee400.023.4Very hardUtility-reported
Lake Delton103.06.0Moderately hardUtility-reported
Oconto Falls217.012.7Very hardUtility-reported
Somerset211.012.3Very hardUtility-reported
Hortonville302.017.7Very hardCounty estimate
Bowler140.08.2HardCounty estimate
Neillsville61.03.6Moderately hardCounty estimate
Osceola100.05.8Moderately hardCounty estimate
Mondovi220.012.9Very hardCounty estimate
Spooner68.84.0Moderately hardCounty estimate
Juneau288.016.8Very hardUtility-reported
Williams Bay110.06.4Moderately hardUtility-reported
Luxemburg377.022.1Very hardUtility-reported
Belleville50.02.9SoftCounty estimate
Dousman330.019.3Very hardCounty estimate
Nekoosa202.011.8Very hardCounty estimate
Poynette254.014.8Very hardCounty estimate
New Lisbon70.94.2Moderately hardCounty estimate
Lomira334.019.5Very hardCounty estimate
Fennimore415.024.3Very hardCounty estimate
Abbotsford49.52.9SoftCounty estimate
Winneconne99.95.8Moderately hardCounty estimate
Mineral Point390.022.8Very hardCounty estimate
Denmark398.023.3Very hardUtility-reported
Minocqua147.08.6HardUtility-reported
Hayward120.07.0Moderately hardUtility-reported
Cumberland19.81.2SoftCounty estimate
Walworth250.014.6Very hardCounty estimate
Washburn63.03.7Moderately hardCounty estimate
Wautoma187.110.9Very hardCounty estimate
Fredonia330.019.3Very hardCounty estimate
Belgium323.018.9Very hardUtility-reported
Darlington414.024.2Very hardCounty estimate
Cedar Grove355.020.8Very hardUtility-reported
Deerfield135.37.9HardComputed from Ca+Mg
Schofield202.011.8Very hardUtility-reported
Kohler320.018.7Very hardCounty estimate
Butler330.019.3Very hardCounty estimate
New Glarus304.017.8Very hardUtility-reported
Pardeeville270.015.8Very hardUtility-reported
Cuba City415.024.3Very hardCounty estimate
Clinton304.017.8Very hardCounty estimate
North Prairie330.019.3Very hardCounty estimate
St. Croix Falls168.09.8HardUtility-reported
Redgranite187.110.9Very hardCounty estimate
Crandon110.06.4Moderately hardCounty estimate
Eagle330.019.3Very hardCounty estimate
Spencer61.03.6Moderately hardCounty estimate
Odanah62.03.6Moderately hardCounty estimate
Chetek19.81.2SoftCounty estimate
Hammond100.05.8Moderately hardCounty estimate
New Franken194.011.3Very hardCounty estimate
Roberts100.05.8Moderately hardCounty estimate
Durand69.74.1Moderately hardCounty estimate
Port Edwards68.14.0Moderately hardCounty estimate
Weyauwega208.012.2Very hardCounty estimate
Adams202.011.8Very hardCounty estimate
Fontana250.014.6Very hardCounty estimate
Colby183.010.7Very hardUtility-reported
Campbellsport386.022.6Very hardCounty estimate
Whitehall70.34.1Moderately hardCounty estimate
Randolph254.014.8Very hardCounty estimate
Fall River254.014.8Very hardCounty estimate
Cameron19.81.2SoftCounty estimate
Palmyra246.014.4Very hardCounty estimate
Osseo70.34.1Moderately hardCounty estimate
Marathon City49.52.9SoftCounty estimate
Phillips92.75.4Moderately hardUtility-reported
Darien250.014.6Very hardCounty estimate
Cambridge50.02.9SoftCounty estimate
Thorp175.010.2HardUtility-reported
Spring Green277.016.2Very hardCounty estimate
Trempealeau70.34.1Moderately hardCounty estimate
Fox Lake334.019.5Very hardCounty estimate
Random Lake320.018.7Very hardCounty estimate
Mazomanie50.02.9SoftCounty estimate
Bangor272.015.9Very hardCounty estimate
Oxford210.012.3Very hardCounty estimate
Sharon250.014.6Very hardCounty estimate
Eagle River44.72.6SoftCounty estimate
Brooklyn158.59.3HardComputed from Ca+Mg
Hurley54.03.2SoftCounty estimate
Stratford307.017.9Very hardUtility-reported
Cleveland348.020.4Very hardUtility-reported
Independence70.34.1Moderately hardCounty estimate
Galesville113.06.6Moderately hardUtility-reported
Markesan229.013.4Very hardCounty estimate
Bonduel140.08.2HardCounty estimate
Orfordville304.017.8Very hardCounty estimate
Grantsburg67.03.9Moderately hardCounty estimate
Muscoda415.024.3Very hardCounty estimate
Augusta52.33.1SoftUtility-reported
Mishicot219.012.8Very hardCounty estimate
Spring Valley240.014.0Very hardCounty estimate
Cornell42.02.5SoftCounty estimate
Gillett250.014.6Very hardUtility-reported
Woodville100.05.8Moderately hardCounty estimate
Black Earth50.02.9SoftCounty estimate
Cadott89.05.2Moderately hardUtility-reported
Elroy70.94.2Moderately hardCounty estimate
Montello210.012.3Very hardCounty estimate
Hillsboro210.012.3Very hardCounty estimate
Black Creek302.017.7Very hardCounty estimate
Loyal61.03.6Moderately hardCounty estimate
Blair61.73.6Moderately hardUtility-reported
Iola208.012.2Very hardCounty estimate
Manawa208.012.2Very hardCounty estimate
Marion208.012.2Very hardCounty estimate
Fall Creek75.04.4Moderately hardCounty estimate
Theresa334.019.5Very hardCounty estimate
Barneveld390.022.8Very hardCounty estimate
Florence97.05.7Moderately hardCounty estimate
Shullsburg414.024.2Very hardCounty estimate
Monticello325.019.0Very hardCounty estimate
Niagara118.06.9Moderately hardCounty estimate
Reedsville197.711.6Very hardComputed from Ca+Mg
Wittenberg140.08.2HardCounty estimate
Hazel Green167.59.8HardComputed from Ca+Mg
Hilbert178.510.4HardComputed from Ca+Mg
Princeton229.013.4Very hardCounty estimate
Dickeyville415.024.3Very hardCounty estimate
Luck100.05.8Moderately hardCounty estimate
Cashton175.510.3HardCounty estimate
Colfax105.06.1Moderately hardCounty estimate
Oakfield386.022.6Very hardCounty estimate
Strum70.34.1Moderately hardCounty estimate
Dane50.02.9SoftCounty estimate
Rio254.014.8Very hardCounty estimate
Greenwood61.03.6Moderately hardCounty estimate
Turtle Lake100.05.8Moderately hardCounty estimate
Hustisford334.019.5Very hardCounty estimate
Clear Lake100.05.8Moderately hardCounty estimate
Amherst267.015.6Very hardUtility-reported
Boyceville105.06.1Moderately hardCounty estimate
Balsam Lake143.08.4HardUtility-reported
Athens49.52.9SoftCounty estimate
Elkhart Lake356.020.8Very hardUtility-reported
Albany325.019.0Very hardCounty estimate
Green Lake229.013.4Very hardCounty estimate
Sister Bay327.019.1Very hardUtility-reported
Crivitz118.06.9Moderately hardCounty estimate
Belmont293.017.1Very hardUtility-reported
Salem224.013.1Very hardCounty estimate
Iron Ridge334.019.5Very hardCounty estimate
Shiocton302.017.7Very hardCounty estimate
Centuria100.05.8Moderately hardCounty estimate
Plainfield187.110.9Very hardCounty estimate
Allenton340.019.9Very hardCounty estimate
Pittsville68.14.0Moderately hardCounty estimate
Argyle303.017.7Very hardUtility-reported
Arlington254.014.8Very hardCounty estimate
Footville304.017.8Very hardCounty estimate
St. Nazianz219.012.8Very hardCounty estimate
Wyocena200.011.7Very hardUtility-reported
Clayton19.81.2SoftCounty estimate
Mercer54.03.2SoftCounty estimate
Whitelaw219.012.8Very hardCounty estimate
Merrillan37.02.2SoftCounty estimate
Glidden62.03.6Moderately hardCounty estimate
Potosi415.024.3Very hardCounty estimate
Mellen62.03.6Moderately hardCounty estimate
Coleman249.014.6Very hardUtility-reported
Reeseville334.019.5Very hardCounty estimate
Wauzeka263.015.4Very hardCounty estimate
Bloomington415.024.3Very hardCounty estimate
Almena19.81.2SoftCounty estimate
Livingston415.024.3Very hardCounty estimate
Prentice39.62.3SoftCounty estimate
Ettrick70.34.1Moderately hardCounty estimate
North Freedom95.15.6Moderately hardComputed from Ca+Mg
Norwalk175.510.3HardCounty estimate
Delafield330.019.3Very hardCounty estimate
Forest Junction404.523.6Very hardCounty estimate
Greenleaf194.011.3Very hardCounty estimate
Stockbridge404.523.6Very hardCounty estimate
Rockland272.015.9Very hardCounty estimate
Bruce26.71.6SoftCounty estimate
Bristol270.015.8Very hardUtility-reported
Wausaukee118.06.9Moderately hardCounty estimate
Soldiers Grove263.015.4Very hardCounty estimate
West Bend340.019.9Very hardCounty estimate
Lena138.58.1HardCounty estimate
Ixonia246.014.4Very hardCounty estimate
Vesper68.14.0Moderately hardCounty estimate
Mount Calvary386.022.6Very hardCounty estimate
Minong68.84.0Moderately hardCounty estimate
Star Prairie100.05.8Moderately hardCounty estimate
Bay City240.014.0Very hardCounty estimate
New Auburn52.63.1SoftUtility-reported
Boyd42.02.5SoftCounty estimate
Melrose37.02.2SoftCounty estimate
Adell320.018.7Very hardCounty estimate
Withee61.03.6Moderately hardCounty estimate
St. Cloud386.022.6Very hardCounty estimate
Gays Mills263.015.4Very hardCounty estimate
Alma Center37.02.2SoftCounty estimate
South Wayne414.024.2Very hardCounty estimate
Lyndon Station70.94.2Moderately hardCounty estimate
Glenbeulah274.416.1Very hardComputed from Ca+Mg
Knapp105.06.1Moderately hardCounty estimate
Fairchild28.41.7SoftUtility-reported
Nashotah330.019.3Very hardCounty estimate
Fountain City220.012.9Very hardCounty estimate
Birchwood139.08.1HardUtility-reported
Junction City261.515.3Very hardCounty estimate
Merrimac247.014.4Very hardUtility-reported
Blue River269.015.7Very hardUtility-reported
Clyman403.023.6Very hardUtility-reported
Pound138.58.1HardCounty estimate
Gilman21.01.2SoftCounty estimate
Dallas19.81.2SoftCounty estimate
La Valle277.016.2Very hardCounty estimate
Kellnersville219.012.8Very hardCounty estimate
Maribel219.012.8Very hardCounty estimate
Cazenovia272.015.9Very hardCounty estimate
Winter41.02.4SoftCounty estimate
Lowell334.019.5Very hardCounty estimate
Elm Grove330.019.3Very hardCounty estimate
Wheeler105.06.1Moderately hardCounty estimate
Irma42.82.5SoftCounty estimate
Fifield126.07.4HardUtility-reported
Loganville277.016.2Very hardCounty estimate
Rock Springs102.06.0Moderately hardUtility-reported
Rewey390.022.8Very hardCounty estimate
Butternut78.74.6Moderately hardComputed from Ca+Mg
Thiensville330.019.3Very hardCounty estimate
Milladore68.14.0Moderately hardCounty estimate
Maine117.06.8Moderately hardUtility-reported
Dodge70.34.1Moderately hardCounty estimate
Sheldon220.012.9Very hardUtility-reported
Browntown325.019.0Very hardCounty estimate
Kansasville300.017.5Very hardCounty estimate
Radisson140.08.2HardUtility-reported
Weyerhaeuser26.71.6SoftCounty estimate
Richland Center272.015.9Very hardCounty estimate
Iron Belt54.03.2SoftCounty estimate
Mount Sterling263.015.4Very hardCounty estimate
Exeland41.02.4SoftCounty estimate
Mount Hope415.024.3Very hardCounty estimate
Stone Lake41.02.4SoftCounty estimate
Lannon442.025.9Very hardUtility-reported
Richfield340.019.9Very hardCounty estimate
Stitzer415.024.3Very hardCounty estimate
Twin Lakes224.013.1Very hardCounty estimate
Egg Harbor132.97.8HardCounty estimate
Maiden Rock240.014.0Very hardCounty estimate
Tony26.71.6SoftCounty estimate
Glen Flora26.71.6SoftCounty estimate
Bancroft261.515.3Very hardCounty estimate
Colgate340.019.9Very hardCounty estimate
Okauchee330.019.3Very hardCounty estimate
Westby210.012.3Very hardCounty estimate
Auburndale68.14.0Moderately hardCounty estimate
Rochester300.017.5Very hardCounty estimate
Waterford300.017.5Very hardCounty estimate
Abrams138.58.1HardCounty estimate
Unity61.03.6Moderately hardCounty estimate
Bayfield63.03.7Moderately hardCounty estimate
Lake Tomahawk47.22.8SoftCounty estimate
St. Francis210.012.3Very hardCounty estimate
Sturtevant300.017.5Very hardCounty estimate
Webster67.03.9Moderately hardCounty estimate
Woodruff44.72.6SoftCounty 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.

Source: USGS Water Science School - Hardness of Water

Wisconsin Water Hardness FAQ

Does Wisconsin have hard water?

Yes — across Wisconsin's measured cities, typical tap water is hard. The median is 218.5 mg/L (12.8 gpg) — very hard on the USGS scale, where anything above 120 mg/L (7 gpg) counts as hard. 139 of Wisconsin's 180 measured cities fall in the hard or very hard bands (77%), so check your own city rather than the state average.

How hard is tap water in Wisconsin?

Across the 180 Wisconsin cities with measured values in our index, the median hardness is 218.5 mg/L (12.8 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?

139 of Wisconsin's 180 measured cities (77%) 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.

Need whole-house or professional water treatment?

For the problems a pitcher or under-sink filter cannot fix — scale, rust and black staining, sulfur smell, well contamination, or test results you cannot explain. Tell us what is happening and we will connect you with a local water-treatment professional.

TapWaterData may be compensated when you are connected with a water-treatment professional.

Get the Weekly Water Brief

One email a week on water testing, treatment, and what water-quality data means for your home.

One email a week. Unsubscribe anytime.