Skip to main content
💧 TapWaterData

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.

State Median
200.0
mg/L (11.7 gpg), measured cities
Measured Range
28.4-485.0
mg/L across measured cities
Measured Cities
211
utility-reported or computed values
County Estimates
231
52% of covered cities

Wisconsin Cities by Hardness Category

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

CategoryRangeMeasured citiesShare
Soft0-60 mg/L62.8%
Moderately hard60-120 mg/L3918.5%
Hard120-180 mg/L5325.1%
Very hard>180 mg/L11353.6%

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. Brookfield 424.0 mg/L (24.8 gpg), very hard
  4. Waterloo 424.0 mg/L (24.8 gpg), very hard
  5. Germantown 422.0 mg/L (24.7 gpg), very hard

Softest water in Wisconsin

  1. Wausau 32.5 mg/L (1.9 gpg), soft
  2. Bloomer 43.4 mg/L (2.5 gpg), soft
  3. Chippewa Falls 49.0 mg/L (2.9 gpg), soft
  4. Augusta 52.3 mg/L (3.1 gpg), soft
  5. 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.

CityHardness (mg/L)gpgCategoryData
Wauwatosa133.67.8HardUtility-reported
Milwaukee134.97.9HardUtility-reported
Greenfield135.07.9HardUtility-reported
St. Francis135.07.9HardUtility-reported
West Milwaukee135.07.9HardUtility-reported
Madison341.019.9Very hardUtility-reported
Appleton81.04.7Moderately hardUtility-reported
Pleasant Prairie140.08.2HardUtility-reported
Sturtevant136.18.0HardUtility-reported
Racine136.08.0HardUtility-reported
Elmwood Park136.08.0HardUtility-reported
Mount Pleasant136.08.0HardUtility-reported
North Bay136.08.0HardUtility-reported
Green Bay137.08.0HardUtility-reported
Kenosha140.08.2HardUtility-reported
Altoona101.55.9Moderately hardUtility-reported
Waukesha325.719.1Very hardUtility-reported
Seymour110.46.5Moderately hardUtility-reported
Oshkosh145.48.5HardUtility-reported
Eau Claire100.85.9Moderately hardUtility-reported
Janesville298.017.4Very hardUtility-reported
West Allis135.07.9HardUtility-reported
Butler297.617.4Very hardUtility-reported
La Crosse290.017.0Very hardUtility-reported
French Island290.017.0Very hardUtility-reported
Sheboygan201.911.8Very hardUtility-reported
Whitefish Bay128.87.5HardUtility-reported
Menasha166.09.7HardUtility-reported
Shorewood129.97.6HardUtility-reported
Glendale134.07.8HardUtility-reported
River Hills134.07.8HardUtility-reported
Fox Crossing166.09.7HardUtility-reported
Fox Point132.77.8HardUtility-reported
Greenville152.08.9HardUtility-reported
Wausau32.51.9SoftComputed from Ca+Mg
Beloit333.019.5Very hardUtility-reported
De Pere194.011.3Very hardCounty estimate
Brookfield424.024.8Very hardUtility-reported
Oregon283.116.6Very hardUtility-reported
Manitowoc156.09.1HardUtility-reported
Sun Prairie337.019.7Very hardUtility-reported
Oak Creek210.012.3Very hardCounty estimate
Allouez136.08.0HardUtility-reported
Kaukauna302.017.7Very hardCounty estimate
New Berlin330.019.3Very hardCounty estimate
Stevens Point173.010.1HardUtility-reported
Park Ridge173.010.1HardUtility-reported
Menomonee Falls174.010.2HardUtility-reported
Neenah67.33.9Moderately hardUtility-reported
Fitchburg270.515.8Very hardUtility-reported
Watertown249.014.6Very hardUtility-reported
Pewaukee381.622.3Very hardUtility-reported
Hales Corners210.012.3Very hardCounty estimate
Little Chute87.05.1Moderately hardUtility-reported
Franklin210.012.3Very hardCounty estimate
Combined Locks72.74.3Moderately hardUtility-reported
Middleton337.019.7Very hardUtility-reported
Caledonia300.017.5Very hardCounty estimate
Grand Chute88.65.2Moderately hardUtility-reported
South Milwaukee210.012.3Very hardCounty estimate
Wisconsin Rapids62.23.6Moderately hardUtility-reported
Germantown422.024.7Very hardUtility-reported
Sussex332.319.4Very hardUtility-reported
Lisbon332.319.4Very hardUtility-reported
Marshfield249.014.6Very hardUtility-reported
Cudahy142.08.3HardUtility-reported
Kimberly72.74.3Moderately hardUtility-reported
Onalaska337.019.7Very hardUtility-reported
Hudson210.012.3Very hardUtility-reported
Oconomowoc310.018.1Very hardUtility-reported
Beaver Dam334.019.5Very hardCounty estimate
Menomonie150.08.8HardUtility-reported
Hartford426.024.9Very hardUtility-reported
River Falls180.010.5HardUtility-reported
Whiting260.015.2Very hardUtility-reported
Weston136.08.0HardUtility-reported
Waunakee282.016.5Very hardUtility-reported
Mequon440.225.7Very hardUtility-reported
Greendale210.012.3Very hardCounty estimate
Whitewater322.618.9Very hardUtility-reported
West Baraboo240.014.0Very hardUtility-reported
Chippewa Falls49.02.9SoftUtility-reported
Plover260.015.2Very 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
Portage254.014.8Very hardCounty estimate
Monroe260.815.3Very hardUtility-reported
Marinette118.06.9Moderately hardCounty estimate
Burlington248.014.5Very hardUtility-reported
Verona360.021.1Very hardUtility-reported
DeForest280.016.4Very hardUtility-reported
Elkhorn87.95.1Moderately hardUtility-reported
Holmen319.018.6Very hardUtility-reported
Fort Mccoy99.55.8Moderately hardUtility-reported
Sparta120.07.0Moderately hardUtility-reported
Reedsburg162.09.5HardUtility-reported
Browns Lake248.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
Sherwood97.55.7Moderately hardUtility-reported
Schofield118.97.0Moderately 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
Lake Geneva250.014.6Very hardCounty estimate
New London279.016.3Very hardUtility-reported
Kronenwetter150.08.8HardUtility-reported
Kohler380.022.2Very hardUtility-reported
Lake Hallie61.03.6Moderately hardUtility-reported
Cottage Grove347.020.3Very hardUtility-reported
Edgerton291.017.0Very hardUtility-reported
Rib Mountain90.35.3Moderately hardUtility-reported
Black River Falls60.83.6Moderately hardUtility-reported
Lake Mills324.018.9Very hardUtility-reported
King208.012.2Very hardCounty estimate
Slinger485.028.4Very hardUtility-reported
Hayward120.07.0Moderately hardUtility-reported
Milton342.020.0Very hardUtility-reported
Berlin204.011.9Very hardUtility-reported
Columbus144.08.4HardUtility-reported
Evansville304.017.8Very hardCounty estimate
West Salem244.014.3Very hardUtility-reported
Mayville324.018.9Very hardUtility-reported
Oconto138.58.1HardCounty estimate
Mosinee90.95.3Moderately hardUtility-reported
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
Lancaster290.017.0Very hardUtility-reported
Kiel386.022.6Very hardUtility-reported
Lodi303.017.7Very 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
Bloomer43.42.5SoftUtility-reported
Omro99.95.8Moderately hardCounty estimate
Wisconsin Dells83.54.9Moderately hardUtility-reported
Stanley106.06.2Moderately hardUtility-reported
Peshtigo197.011.5Very hardUtility-reported
Barron133.07.8HardUtility-reported
Sauk City276.016.1Very hardUtility-reported
Waterloo424.024.8Very hardUtility-reported
Johnson Creek254.014.8Very hardUtility-reported
Ellsworth333.019.5Very hardUtility-reported
Boscobel273.016.0Very 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
Oostburg403.023.6Very hardUtility-reported
Windsor50.02.9SoftCounty estimate
Algoma123.07.2HardUtility-reported
Park Falls117.06.8Moderately hardUtility-reported
Lake Delton103.06.0Moderately hardUtility-reported
Amery100.05.8Moderately hardCounty estimate
Kewaunee400.023.4Very 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
Juneau288.016.8Very hardUtility-reported
Mondovi220.012.9Very hardCounty estimate
Spooner68.84.0Moderately hardCounty estimate
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
Merrimac247.014.4Very hardUtility-reported
Denmark398.023.3Very hardUtility-reported
Pardeeville270.015.8Very hardUtility-reported
Minocqua147.08.6HardUtility-reported
Woodruff147.08.6HardUtility-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
New Glarus304.017.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
St. Croix Falls100.05.8Moderately hardCounty estimate
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
Cameron79.94.7Moderately hardComputed from Ca+Mg
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
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
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
Fond Du Lac170.09.9HardUtility-reported
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
Ixonia268.015.7Very hardUtility-reported
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
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
Blue River269.015.7Very hardUtility-reported
Clyman403.023.6Very hardUtility-reported
Colfax228.213.3Very hardComputed from Ca+Mg
Union Grove313.018.3Very hardUtility-reported
Yorkville313.018.3Very 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
Egg Harbor293.017.1Very hardUtility-reported
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
Lake Tomahawk61.03.6Moderately hardUtility-reported
Maiden Rock240.014.0Very hardCounty estimate
Tony26.71.6SoftCounty estimate
Osceola199.011.6Very hardUtility-reported
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
Webster67.03.9Moderately hardCounty 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 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.