Skip to main content

Water Hardness in Michigan

Across 189 measured cities — with 265 more covered by labeled county-level estimates — Michigan's median tap water hardness is 216.0 mg/L (12.6 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
216.0
mg/L (12.6 gpg), measured cities
Measured Range
51.0-516.0
mg/L across measured cities
Measured Cities
189
utility-reported or computed values
County Estimates
265
58% of covered cities

What it costs to soften Michigan water

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

Michigan · 12.63 grains per gallon

$1,069–$1,416

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

Salt and drain water over 10 years: $1,064–$1,766 — the 13,829,850 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,523 grains of capacity needed, rounded up to the next common residential size. The median of 189 measured Michigan 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.

Michigan Cities by Hardness Category

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

CategoryRangeMeasured citiesShare
Soft0-60 mg/L31.6%
Moderately hard60-120 mg/L4624.3%
Hard120-180 mg/L2613.8%
Very hard>180 mg/L11460.3%

Hardest and Softest Water in Michigan

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

Hardest water in Michigan

  1. Romeo — 516.0 mg/L (30.2 gpg), very hard
  2. Perrinton — 511.0 mg/L (29.9 gpg), very hard
  3. Caledonia — 496.0 mg/L (29.0 gpg), very hard
  4. South Lyon — 464.0 mg/L (27.1 gpg), very hard
  5. Wacousta — 458.0 mg/L (26.8 gpg), very hard

Softest water in Michigan

  1. L'Anse — 51.0 mg/L (3.0 gpg), soft
  2. Sault Ste. Marie — 52.9 mg/L (3.1 gpg), soft
  3. Gwinn — 58.9 mg/L (3.4 gpg), soft
  4. K. I. Sawyer — 67.3 mg/L (3.9 gpg), moderately hard
  5. Livonia — 78.5 mg/L (4.6 gpg), moderately hard

Every Covered City in Michigan

All 454 covered Michigan 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
Detroit94.85.5Moderately hardUtility-reported
Grand Rapids138.08.1HardUtility-reported
Kalamazoo319.018.6Very hardUtility-reported
Lansing374.021.9Very hardCounty estimate
Warren89.85.3Moderately hardUtility-reported
Dewitt310.018.1Very hardCounty estimate
Sterling Heights266.015.6Very hardCounty estimate
Ann Arbor152.08.9HardUtility-reported
Dearborn104.06.1Moderately hardUtility-reported
Clinton Township101.05.9Moderately hardUtility-reported
Flint158.09.2HardUtility-reported
Livonia78.54.6Moderately hardUtility-reported
Canton90.65.3Moderately hardUtility-reported
Macomb151.08.8HardUtility-reported
Westland303.017.7Very hardCounty estimate
Troy99.65.8Moderately hardUtility-reported
Rochester Hills96.45.6Moderately hardUtility-reported
Shelby Township105.06.1Moderately hardUtility-reported
Three Rivers250.014.6Very hardCounty estimate
Southfield277.016.2Very hardCounty estimate
Beecher113.06.6Moderately hardUtility-reported
Taylor303.017.7Very hardCounty estimate
Pontiac277.016.2Very hardCounty estimate
St. Clair Shores101.05.9Moderately hardUtility-reported
Dearborn Heights82.84.8Moderately hardUtility-reported
Royal Oak96.25.6Moderately hardUtility-reported
Farmington Hills96.25.6Moderately hardUtility-reported
Ypsilanti103.06.0Moderately hardUtility-reported
Saginaw109.06.4Moderately hardUtility-reported
Franklin146.08.5HardUtility-reported
West Bloomfield146.08.5HardUtility-reported
Monroe300.017.5Very hardCounty estimate
Novi105.06.1Moderately hardUtility-reported
Roseville266.015.6Very hardCounty estimate
Portage304.017.8Very hardUtility-reported
Battle Creek250.014.6Very hardCounty estimate
Zeeland260.015.2Very hardCounty estimate
Midland106.06.2Moderately hardUtility-reported
Jenison260.015.2Very hardCounty estimate
Lincoln Park197.011.5Very hardUtility-reported
Byron Center230.013.4Very hardCounty estimate
Muskegon141.08.3HardUtility-reported
Holland141.08.3HardUtility-reported
Chelsea270.015.8Very hardCounty estimate
Port Huron300.017.5Very hardCounty estimate
Wixom277.016.2Very hardCounty estimate
Brownstown Township96.15.6Moderately hardUtility-reported
Jackson256.515.0Very hardCounty estimate
East Lansing105.06.1Moderately hardUtility-reported
Lake Orion277.016.2Very hardCounty estimate
Pleasant Ridge277.016.2Very hardCounty estimate
Eastpointe266.015.6Very hardCounty estimate
Ossineke180.010.5HardCounty estimate
Bay City128.07.5HardUtility-reported
Madison Heights277.016.2Very hardCounty estimate
Oak Park277.016.2Very hardCounty estimate
Allen Park303.017.7Very hardCounty estimate
Garden City120.07.0Moderately hardCounty estimate
Belleville303.017.7Very hardCounty estimate
Mount Pleasant225.013.2Very hardCounty estimate
Wyandotte105.06.1Moderately hardUtility-reported
Haslett374.021.9Very hardCounty estimate
Grand Haven260.015.2Very hardCounty estimate
Walled Lake277.016.2Very hardCounty estimate
Inkster303.017.7Very hardCounty estimate
Harrison Township110.06.4Moderately hardUtility-reported
Romulus303.017.7Very hardCounty estimate
Adrian213.012.5Very hardUtility-reported
Hamtramck86.85.1Moderately hardUtility-reported
Ferndale99.55.8Moderately hardUtility-reported
Wacousta458.026.8Very hardUtility-reported
Waverly458.026.8Very hardUtility-reported
Auburn Hills277.016.2Very hardCounty estimate
Hickory Corners210.012.3Very hardCounty estimate
Burton280.016.4Very hardCounty estimate
Marquette59.43.5SoftCounty estimate
Birmingham277.016.2Very hardCounty estimate
Allendale260.015.2Very hardCounty estimate
Trenton303.017.7Very hardCounty estimate
Mount Clemens266.015.6Very hardCounty estimate
Wayne303.017.7Very hardCounty estimate
Fraser266.015.6Very hardCounty estimate
Pentwater180.010.5HardCounty estimate
Hazel Park277.016.2Very hardCounty estimate
Owosso339.019.8Very hardUtility-reported
Grandville230.013.4Very hardCounty estimate
Vulcan197.511.6Very hardCounty estimate
New Boston303.017.7Very hardCounty estimate
Washington266.015.6Very hardCounty estimate
Berkley84.65.0Moderately hardUtility-reported
Sault Ste. Marie52.93.1SoftUtility-reported
Traverse City146.08.5HardUtility-reported
Harper Woods303.017.7Very hardCounty estimate
Stanwood160.09.4HardCounty estimate
Niles260.015.2Very hardCounty estimate
Coldwater307.017.9Very hardUtility-reported
Escanaba131.07.7HardUtility-reported
Ionia395.023.1Very hardUtility-reported
Fairview155.09.1HardCounty estimate
Melvindale303.017.7Very hardCounty estimate
New Baltimore102.06.0Moderately hardUtility-reported
Riverview303.017.7Very hardCounty estimate
Kawkawlin154.09.0HardCounty estimate
Essexville154.09.0HardCounty estimate
Sturgis306.017.9Very hardUtility-reported
Clawson277.016.2Very hardCounty estimate
Independence Township327.019.1Very hardUtility-reported
Village of Clarkston327.019.1Very hardUtility-reported
Fenton315.018.4Very hardUtility-reported
East Grand Rapids111.06.5Moderately hardUtility-reported
Fort Gratiot300.017.5Very hardCounty estimate
Grosse Pointe Park98.65.8Moderately hardUtility-reported
South Lyon464.027.1Very hardUtility-reported
Sanford276.016.1Very hardCounty estimate
Big Rapids172.010.1HardUtility-reported
Flat Rock303.017.7Very hardCounty estimate
Farmington277.016.2Very hardCounty estimate
Spring Lake260.015.2Very hardCounty estimate
Grosse Ile303.017.7Very hardCounty estimate
Cadillac146.08.5HardUtility-reported
Alpena106.06.2Moderately hardUtility-reported
Bridgeport260.015.2Very hardCounty estimate
Howell123.07.2HardUtility-reported
Marysville113.06.6Moderately hardUtility-reported
Muskegon Heights146.08.5HardUtility-reported
Reese140.08.2HardCounty estimate
Ecorse303.017.7Very hardCounty estimate
Grosse Pointe Farms110.06.4Moderately hardUtility-reported
New Hudson326.019.1Very hardUtility-reported
Fruitport160.09.4HardCounty estimate
Newport300.017.5Very hardCounty estimate
Freeland260.015.2Very hardCounty estimate
Brighton427.025.0Very hardUtility-reported
Iron Mountain274.016.0Very hardUtility-reported
Alma270.015.8Very hardCounty estimate
Saline270.015.8Very hardCounty estimate
Plymouth303.017.7Very hardCounty estimate
Petoskey274.116.0Very hardComputed from Ca+Mg
Lapeer355.020.8Very hardUtility-reported
Greenville227.513.3Very hardCounty estimate
St. Clair300.017.5Very hardCounty estimate
Grand Ledge405.523.7Very hardCounty estimate
Fair Haven300.017.5Very hardCounty estimate
Holly340.019.9Very hardUtility-reported
Tecumseh348.020.4Very hardUtility-reported
Dexter270.015.8Very hardCounty estimate
Union270.015.8Very hardCounty estimate
Genesee91.45.3Moderately hardUtility-reported
Dollar Bay90.55.3Moderately hardCounty estimate
Flushing280.016.4Very hardCounty estimate
Grand Blanc186.010.9Very hardUtility-reported
Alanson170.09.9HardCounty estimate
Center Line266.015.6Very hardCounty estimate
Mason355.020.8Very hardUtility-reported
Ludington160.09.4HardCounty estimate
Hillsdale300.017.5Very hardCounty estimate
Kincheloe93.75.5Moderately hardUtility-reported
River Rouge303.017.7Very hardCounty estimate
Rochester277.016.2Very hardCounty estimate
Hudsonville260.015.2Very hardCounty estimate
Marshall250.014.6Very hardCounty estimate
Ada230.013.4Very hardCounty estimate
St. Louis255.014.9Very hardUtility-reported
Skandia59.43.5SoftCounty estimate
Ishpeming59.43.5SoftCounty estimate
Milford324.018.9Very hardUtility-reported
Northville277.016.2Very hardCounty estimate
Carleton300.017.5Very hardCounty estimate
East China106.06.2Moderately hardUtility-reported
Belding269.015.7Very hardUtility-reported
New Haven301.017.6Very hardUtility-reported
Swartz Creek97.75.7Moderately hardUtility-reported
Cheboygan192.011.2Very hardUtility-reported
Auburn154.09.0HardCounty estimate
Grosse Pointe104.06.1Moderately hardUtility-reported
Utica266.015.6Very hardCounty estimate
Davison170.09.9HardUtility-reported
Frankenmuth260.015.2Very hardCounty estimate
Marine City100.05.8Moderately hardUtility-reported
Caledonia496.029.0Very hardUtility-reported
Negaunee59.43.5SoftCounty estimate
Coopersville260.015.2Very hardCounty estimate
Sparta230.013.4Very hardCounty estimate
Algonac300.017.5Very hardCounty estimate
Linden338.019.8Very hardUtility-reported
Houghton Lake90.05.3Moderately hardCounty estimate
Plainwell240.014.0Very hardCounty estimate
Williamston132.07.7HardUtility-reported
Douglas216.012.6Very hardUtility-reported
Saugatuck216.012.6Very hardUtility-reported
Portland290.017.0Very hardCounty estimate
Highland Twp.308.018.0Very hardUtility-reported
Romeo516.030.2Very hardUtility-reported
Boyne City224.013.1Very hardUtility-reported
Rockford230.013.4Very hardCounty estimate
Birch Run260.015.2Very hardCounty estimate
Gaylord251.014.7Very hardUtility-reported
Imlay City355.020.8Very hardUtility-reported
Oxford277.016.2Very hardCounty estimate
Bloomfield Hills277.016.2Very hardCounty estimate
Cedar Springs230.013.4Very hardCounty estimate
Durand332.019.4Very hardCounty estimate
Paw Paw205.512.0Very hardCounty estimate
Norway197.511.6Very hardCounty estimate
Middleville299.017.5Very hardUtility-reported
Blissfield241.014.1Very hardUtility-reported
Ferrysburg260.015.2Very hardCounty estimate
Manistique106.06.2Moderately hardUtility-reported
Bad Axe304.017.8Very hardUtility-reported
Charlevoix138.08.1HardUtility-reported
Clare421.024.6Very hardUtility-reported
Ithaca279.016.3Very hardUtility-reported
Mount Morris378.022.1Very hardUtility-reported
Iron River262.015.3Very hardUtility-reported
K. I. Sawyer67.33.9Moderately hardUtility-reported
Fowlerville307.017.9Very hardUtility-reported
Gladwin420.024.6Very hardUtility-reported
Vicksburg209.012.2Very hardUtility-reported
St. Ignace112.06.5Moderately hardUtility-reported
Bangor205.512.0Very hardCounty estimate
Rogers City195.011.4Very hardUtility-reported
Harbert260.015.2Very hardCounty estimate
East Tawas140.08.2HardCounty estimate
Munising81.24.8Moderately hardUtility-reported
Watervliet260.015.2Very hardCounty estimate
Keego Harbor277.016.2Very hardCounty estimate
Trowbridge Park110.06.4Moderately hardUtility-reported
Vassar244.014.3Very hardUtility-reported
Hartford205.512.0Very hardCounty estimate
Sandusky314.518.4Very hardCounty estimate
Almont159.09.3HardUtility-reported
Potterville405.523.7Very hardCounty estimate
Ontonagon62.43.6Moderately hardCounty estimate
Newaygo170.09.9HardCounty estimate
Clio280.016.4Very hardCounty estimate
Pinckney290.017.0Very hardCounty estimate
Gwinn58.93.4SoftUtility-reported
Montague160.09.4HardCounty estimate
Croswell359.021.0Very hardUtility-reported
Cass City300.017.5Very hardUtility-reported
Reed City231.013.5Very hardUtility-reported
Bronson280.016.4Very hardCounty estimate
Quinnesec197.511.6Very hardCounty estimate
Somerset Center300.017.5Very hardCounty estimate
Chesaning165.09.7HardUtility-reported
Galesburg260.015.2Very hardCounty estimate
Baraga49.02.9SoftCounty estimate
Clinton307.017.9Very hardCounty estimate
Hudson307.017.9Very hardCounty estimate
L'Anse51.03.0SoftUtility-reported
Waterford271.015.8Very hardUtility-reported
Jonesville300.017.5Very hardCounty estimate
Morenci307.017.9Very hardCounty estimate
East Jordan274.016.0Very hardUtility-reported
Manchester270.015.8Very hardCounty estimate
West Branch200.011.7Very hardCounty estimate
Hart180.010.5HardCounty estimate
Grawn202.011.8Very hardUtility-reported
Bridgman260.015.2Very hardCounty estimate
Constantine250.014.6Very hardCounty estimate
Perry365.021.4Very hardUtility-reported
Oscoda140.08.2HardCounty estimate
Mattawan196.011.5Very hardUtility-reported
Burt260.015.2Very hardCounty estimate
Conklin260.015.2Very hardCounty estimate
Corunna332.019.4Very hardCounty estimate
Kalkaska140.08.2HardCounty estimate
Lake Odessa290.017.0Very hardCounty estimate
Newberry46.62.7SoftCounty estimate
Grass Lake256.515.0Very hardCounty estimate
Shelby180.010.5HardCounty estimate
Crystal Falls75.04.4Moderately hardCounty estimate
Berrien Springs350.020.5Very hardUtility-reported
Evart212.012.4Very hardUtility-reported
Lawton205.512.0Very hardCounty estimate
New Buffalo260.015.2Very hardCounty estimate
Yale300.017.5Very hardCounty estimate
Grayling175.010.2HardUtility-reported
Marlette314.518.4Very hardCounty estimate
Leslie374.021.9Very hardCounty estimate
Decatur205.512.0Very hardCounty estimate
Cassopolis270.015.8Very hardCounty estimate
Wakefield50.02.9SoftCounty estimate
Howard City237.013.9Very hardUtility-reported
Armada254.014.8Very hardUtility-reported
Capac331.019.4Very hardUtility-reported
Sebewaing125.07.3HardCounty estimate
Olivet405.523.7Very hardCounty estimate
Harbor Beach125.07.3HardCounty estimate
Port Hope125.07.3HardCounty estimate
South Rockwood300.017.5Very hardCounty estimate
Homer250.014.6Very hardCounty estimate
Kingsley243.014.2Very hardUtility-reported
Montrose280.016.4Very hardCounty estimate
Elk Rapids177.010.3HardCounty estimate
White Pigeon383.022.4Very hardUtility-reported
Union City270.015.8Very hardCounty estimate
Nashville210.012.3Very hardCounty estimate
Three Oaks260.015.2Very hardCounty estimate
Bessemer50.02.9SoftCounty estimate
Ovid305.017.8Very hardUtility-reported
Centreville250.014.6Very hardCounty estimate
Coloma260.015.2Very hardCounty estimate
Quincy280.016.4Very hardCounty estimate
Luther156.09.1HardCounty estimate
Schoolcraft260.015.2Very hardCounty estimate
Shepherd247.014.4Very hardUtility-reported
Standish120.07.0Moderately hardCounty estimate
Webberville381.022.3Very hardUtility-reported
Fennville361.021.1Very hardUtility-reported
Stanton227.513.3Very hardCounty estimate
White Cloud170.09.9HardCounty estimate
Saranac290.017.0Very hardCounty estimate
Breckenridge236.013.8Very hardUtility-reported
Brown City113.06.6Moderately hardUtility-reported
Brooklyn256.515.0Very hardCounty estimate
Litchfield380.022.2Very hardUtility-reported
Manton182.010.6Very hardUtility-reported
Frankfort153.08.9HardCounty estimate
Bellevue405.523.7Very hardCounty estimate
Edwardsburg339.019.8Very hardUtility-reported
Edmore227.513.3Very hardCounty estimate
Coleman310.018.1Very hardUtility-reported
Ravenna160.09.4HardCounty estimate
Scottville160.09.4HardCounty estimate
Pinconning154.09.0HardCounty estimate
Pigeon125.07.3HardCounty estimate
Lake Linden90.55.3Moderately hardCounty estimate
Stockbridge374.021.9Very hardCounty estimate
Harbor Springs216.012.6Very hardUtility-reported
Colon312.018.3Very hardUtility-reported
Memphis250.014.6Very hardUtility-reported
Lexington114.06.7Moderately hardUtility-reported
Fowler389.022.8Very hardUtility-reported
Petersburg300.017.5Very hardCounty estimate
Davisburg277.016.2Very hardCounty estimate
Harrison153.08.9HardUtility-reported
Bellaire177.010.3HardCounty estimate
Reading300.017.5Very hardCounty estimate
Roscommon90.05.3Moderately hardCounty estimate
Millington140.08.2HardCounty estimate
Beaverton196.011.5Very hardCounty estimate
Baldwin156.09.1HardCounty estimate
Concord256.515.0Very hardCounty estimate
Lawrence205.512.0Very hardCounty estimate
Dryden253.014.8Very hardUtility-reported
North Branch346.020.2Very hardUtility-reported
Lakeview227.513.3Very hardCounty estimate
Caspian210.012.3Very hardUtility-reported
Central Lake257.015.0Very hardUtility-reported
Hastings210.012.3Very hardCounty estimate
Baroda260.015.2Very hardCounty estimate
Walkerville180.010.5HardCounty estimate
Onsted282.016.5Very hardUtility-reported
Mackinaw City263.015.4Very hardUtility-reported
Suttons Bay130.07.6HardCounty estimate
Marion193.011.3Very hardUtility-reported
Farwell195.011.4Very hardUtility-reported
Otisville280.016.4Very hardCounty estimate
Ubly241.014.1Very hardUtility-reported
Lake City145.08.5HardUtility-reported
Burr Oak295.017.3Very hardUtility-reported
Elkton125.07.3HardCounty estimate
Columbiaville186.010.9Very hardUtility-reported
Caseville151.08.8HardUtility-reported
Gobles236.013.8Very hardUtility-reported
Tekonsha300.017.5Very hardUtility-reported
Jasper307.017.9Very hardCounty estimate
Hillman365.021.4Very hardUtility-reported
Pierson227.513.3Very hardCounty estimate
Fairgrove140.08.2HardCounty estimate
Sheridan227.513.3Very hardCounty estimate
Maple Rapids261.015.3Very hardUtility-reported
McBain280.016.4Very hardUtility-reported
Port Sanilac409.023.9Very hardUtility-reported
Bancroft290.017.0Very hardUtility-reported
Britton140.08.2HardUtility-reported
Eau Claire260.015.2Very hardCounty estimate
Byron301.017.6Very hardUtility-reported
Metamora398.023.3Very hardUtility-reported
Buckley278.016.3Very hardUtility-reported
Carsonville362.021.2Very hardUtility-reported
Ashley373.021.8Very hardUtility-reported
Harrisville236.013.8Very hardUtility-reported
Palmer117.06.8Moderately hardUtility-reported
Pewamo314.018.4Very hardUtility-reported
Mackinac Island104.06.1Moderately hardUtility-reported
Powers221.012.9Very hardUtility-reported
Perrinton511.029.9Very hardUtility-reported
Atlanta236.013.8Very hardUtility-reported
Grand Marais183.010.7Very hardUtility-reported
Mesick197.011.5Very hardUtility-reported
Gagetown245.014.3Very hardUtility-reported
Gaastra75.04.4Moderately hardCounty estimate
Boyne Falls231.013.5Very hardUtility-reported
Barton Hills380.022.2Very hardUtility-reported
Sand Lake230.013.4Very hardCounty estimate
Amasa75.04.4Moderately hardCounty estimate
Ellsworth272.015.9Very hardUtility-reported
Whitmore Lake270.015.8Very hardCounty estimate
Garden120.07.0Moderately hardCounty estimate
Owendale266.015.6Very hardUtility-reported
Posen183.010.7Very hardUtility-reported
Millersburg254.014.8Very hardUtility-reported
Carney220.012.9Very hardCounty estimate
Marcellus270.015.8Very hardCounty estimate
Minden City178.010.4HardUtility-reported
Mt. Morris280.016.4Very hardCounty estimate
Lamont260.015.2Very hardCounty estimate
Brimley49.12.9SoftCounty estimate
Whitehall160.09.4HardCounty estimate
Cedarville100.05.8Moderately hardCounty estimate
Champion59.43.5SoftCounty estimate
Clarklake256.515.0Very hardCounty estimate
Covert205.512.0Very hardCounty estimate
Dorr240.014.0Very hardCounty estimate
Frederic135.07.9HardCounty estimate
Glen Arbor130.07.6HardCounty estimate
Gowen230.013.4Very hardCounty estimate
Hale140.08.2HardCounty estimate
Hamilton240.014.0Very hardCounty estimate
Hartland290.017.0Very hardCounty estimate
Hemlock260.015.2Very hardCounty estimate
Hermansville220.012.9Very hardCounty estimate
Highland277.016.2Very hardCounty estimate
Holton160.09.4HardCounty estimate
Hopkins240.014.0Very hardCounty estimate
Indian River160.09.4HardCounty estimate
Johannesburg81.04.7Moderately hardCounty estimate
Kewadin177.010.3HardCounty estimate
Kinde125.07.3HardCounty estimate
Kingston140.08.2HardCounty estimate
Lake George218.012.8Very hardCounty estimate
Lewiston155.09.1HardCounty estimate
Lupton200.011.7Very hardCounty estimate
Manitou Beach307.017.9Very hardCounty estimate
Mecosta160.09.4HardCounty estimate
Michigan Center256.515.0Very hardCounty estimate
Mt. Clemens266.015.6Very hardCounty estimate
Nunica260.015.2Very hardCounty estimate
Okemos374.021.9Very hardCounty estimate
Port Austin125.07.3HardCounty estimate
Prudenville90.05.3Moderately hardCounty estimate
Remus160.09.4HardCounty estimate
Rosebush225.013.2Very hardCounty estimate
Sagola197.511.6Very hardCounty estimate
South Range90.55.3Moderately hardCounty estimate
Twin Lake160.09.4HardCounty estimate
Vanderbilt81.04.7Moderately hardCounty estimate
Vestaburg227.513.3Very hardCounty estimate
Watersmeet50.02.9SoftCounty estimate
Wellston160.09.4HardCounty estimate
West Olive260.015.2Very hardCounty estimate
Williamsburg131.07.7HardCounty 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 Michigan's Water Hardness

Michigan 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

Michigan Water Hardness FAQ

Does Michigan have hard water?

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

How hard is tap water in Michigan?

Across the 189 Michigan cities with measured values in our index, the median hardness is 216.0 mg/L (12.6 gpg) — very hard on the USGS scale. Individual cities range from 51.0 to 516.0 mg/L, so check your own city rather than assuming the state number.

Which city in Michigan has the hardest water?

Romeo has the hardest measured tap water in our Michigan index at 516.0 mg/L (30.2 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 Michigan?

140 of Michigan's 189 measured cities (74%) 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 Michigan 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.