Skip to main content
💧 TapWaterData

Water Hardness in Ohio

Across 130 measured cities — with 431 more covered by labeled county-level estimates — Ohio's median tap water hardness is 111.0 mg/L (6.5 gpg): moderately 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
111.0
mg/L (6.5 gpg), measured cities
Measured Range
1.6-543.0
mg/L across measured cities
Measured Cities
130
utility-reported or computed values
County Estimates
431
77% of covered cities

Ohio Cities by Hardness Category

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

CategoryRangeMeasured citiesShare
Soft0-60 mg/L86.2%
Moderately hard60-120 mg/L8565.4%
Hard120-180 mg/L2922.3%
Very hard>180 mg/L86.2%

Hardest and Softest Water in Ohio

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

Hardest water in Ohio

  1. Columbus Grove 460.0 mg/L (26.9 gpg), very hard
  2. Bryan 380.0 mg/L (22.2 gpg), very hard
  3. New Lexington 324.0 mg/L (18.9 gpg), very hard
  4. Thornport 324.0 mg/L (18.9 gpg), very hard
  5. Rutland 316.0 mg/L (18.5 gpg), very hard

Softest water in Ohio

  1. Hunter 1.6 mg/L (0.1 gpg), soft
  2. Lebanon 1.6 mg/L (0.1 gpg), soft
  3. Lisbon 38.2 mg/L (2.2 gpg), soft
  4. Monroe 44.7 mg/L (2.6 gpg), soft
  5. Oberlin 50.2 mg/L (2.9 gpg), soft

Every Covered City in Ohio

All 561 covered Ohio 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
Reynoldsburg96.85.7Moderately hardUtility-reported
Gahanna96.25.6Moderately hardUtility-reported
Columbus97.15.7Moderately hardUtility-reported
Pickerington96.85.7Moderately hardUtility-reported
Bratenahl111.06.5Moderately hardUtility-reported
Cleveland111.06.5Moderately hardUtility-reported
Cuyahoga Heights111.06.5Moderately hardUtility-reported
Fairview Park111.06.5Moderately hardUtility-reported
Linndale111.06.5Moderately hardUtility-reported
Newburgh Heights111.06.5Moderately hardUtility-reported
Pataskala96.75.7Moderately hardUtility-reported
Brice96.85.7Moderately hardUtility-reported
Bexley96.65.7Moderately hardUtility-reported
Canal Winchester96.75.7Moderately hardUtility-reported
Grandview Heights96.85.7Moderately hardUtility-reported
Minerva Park96.95.7Moderately hardUtility-reported
Groveport96.75.7Moderately hardUtility-reported
Obetz96.75.7Moderately hardUtility-reported
Lockbourne96.75.7Moderately hardUtility-reported
Dublin96.75.7Moderately hardUtility-reported
Blacklick Estates96.75.7Moderately hardUtility-reported
Grove City96.75.7Moderately hardUtility-reported
Hilliard96.75.7Moderately hardUtility-reported
Lincoln Village96.75.7Moderately hardUtility-reported
Marble Cliff96.75.7Moderately hardUtility-reported
New Albany96.75.7Moderately hardUtility-reported
Riverlea96.75.7Moderately hardUtility-reported
Upper Arlington96.75.7Moderately hardUtility-reported
Urbancrest96.75.7Moderately hardUtility-reported
Valleyview96.75.7Moderately hardUtility-reported
Whitehall96.75.7Moderately hardUtility-reported
Worthington96.75.7Moderately hardUtility-reported
Norwood113.06.6Moderately hardUtility-reported
Madison Place113.76.7Moderately hardUtility-reported
Arlington Heights113.06.6Moderately hardUtility-reported
Addyston113.06.6Moderately hardUtility-reported
Cincinnati113.06.6Moderately hardUtility-reported
Delshire113.06.6Moderately hardUtility-reported
Elmwood Place113.06.6Moderately hardUtility-reported
Fairfax113.06.6Moderately hardUtility-reported
Golf Manor113.06.6Moderately hardUtility-reported
Salem Heights113.06.6Moderately hardUtility-reported
Silverton113.06.6Moderately hardUtility-reported
St. Bernard113.06.6Moderately hardUtility-reported
Toledo75.94.4Moderately hardUtility-reported
Ottawa Hills75.94.4Moderately hardUtility-reported
West Carrollton147.18.6HardUtility-reported
Oakwood147.98.7HardUtility-reported
Trotwood147.18.6HardUtility-reported
Dayton147.18.6HardUtility-reported
Drexel147.18.6HardUtility-reported
Kettering147.18.6HardUtility-reported
Moraine147.18.6HardUtility-reported
Beavercreek148.88.7HardUtility-reported
Cuyahoga Falls116.06.8Moderately hardUtility-reported
Riverside148.88.7HardUtility-reported
Akron116.06.8Moderately hardUtility-reported
Sawyerwood116.06.8Moderately hardUtility-reported
Portage Lakes116.06.8Moderately hardUtility-reported
Miamisburg142.38.3HardUtility-reported
Centerville142.38.3HardUtility-reported
Hamilton104.96.1Moderately hardUtility-reported
Delaware93.85.5Moderately hardUtility-reported
Huber Heights155.09.1HardUtility-reported
Vandalia155.09.1HardUtility-reported
Fairfield111.06.5Moderately hardUtility-reported
Bellbrook138.68.1HardUtility-reported
Millville111.06.5Moderately hardUtility-reported
Clayton155.09.1HardUtility-reported
Englewood155.09.1HardUtility-reported
Ostrander93.85.5Moderately hardUtility-reported
Powell93.85.5Moderately hardUtility-reported
Youngstown177.010.3HardCounty estimate
Shiloh155.09.1HardUtility-reported
Fort McKinley155.09.1HardUtility-reported
Wright-Patterson AFB155.09.1HardUtility-reported
Amelia130.37.6HardComputed from Ca+Mg
Hunter1.60.1SoftUtility-reported
New Miami111.06.5Moderately hardUtility-reported
Lebanon1.60.1SoftUtility-reported
Canton285.016.7Very hardCounty estimate
Seven Mile111.06.5Moderately hardUtility-reported
Beckett Ridge111.06.5Moderately hardUtility-reported
Williamsdale111.06.5Moderately hardUtility-reported
Massillon285.016.7Very hardCounty estimate
South Lebanon279.516.4Very hardCounty estimate
Oberlin50.22.9SoftUtility-reported
Springfield360.021.1Very hardCounty estimate
Grafton220.012.9Very hardCounty estimate
Warren148.08.7HardCounty estimate
LaGrange220.012.9Very hardCounty estimate
Mentor66.73.9Moderately hardUtility-reported
Medina88.55.2Moderately hardUtility-reported
Painesville90.25.3Moderately hardUtility-reported
Lorain220.012.9Very hardCounty estimate
Elyria220.012.9Very hardCounty estimate
Oxford303.017.7Very hardCounty estimate
Lima301.017.6Very hardCounty estimate
Struthers177.010.3HardCounty estimate
Chillicothe276.516.2Very hardCounty estimate
Bowling Green265.015.5Very hardCounty estimate
Granville77.24.5Moderately hardUtility-reported
Leavittsburg148.08.7HardCounty estimate
Findlay138.08.1HardUtility-reported
Ashtabula117.06.8Moderately hardComputed from Ca+Mg
Newark77.24.5Moderately hardUtility-reported
Mansfield274.016.0Very hardCounty estimate
Lakewood112.06.5Moderately hardUtility-reported
Sandusky259.515.2Very hardCounty estimate
Portsmouth86.05.0Moderately hardCounty estimate
Middletown303.017.7Very hardCounty estimate
Westerville123.57.2HardUtility-reported
Marion311.018.2Very hardCounty estimate
Fairport Harbor90.25.3Moderately hardUtility-reported
North Perry90.25.3Moderately hardUtility-reported
Perry90.25.3Moderately hardUtility-reported
Lancaster109.06.4Moderately hardUtility-reported
Maineville279.516.4Very hardCounty estimate
Morrow279.516.4Very hardCounty estimate
Steubenville106.36.2Moderately hardUtility-reported
Marietta175.510.3HardCounty estimate
Stow220.012.9Very hardCounty estimate
Ironton137.08.0HardCounty estimate
Mason279.516.4Very hardCounty estimate
Fairborn232.013.6Very hardUtility-reported
Kent188.011.0Very hardCounty estimate
Yorkville310.018.1Very hardCounty estimate
Ripley192.011.2Very hardCounty estimate
North Ridgeville220.012.9Very hardCounty estimate
Barberton220.012.9Very hardCounty estimate
Gallipolis158.09.2HardCounty estimate
Vienna148.08.7HardCounty estimate
Wooster84.95.0Moderately hardUtility-reported
Heath281.016.4Very hardCounty estimate
Perrysburg85.25.0Moderately hardUtility-reported
Xenia356.020.8Very hardCounty estimate
Mount Vernon220.512.9Very hardCounty estimate
Port Clinton280.016.4Very hardCounty estimate
Marysville316.018.5Very hardCounty estimate
Tipp City327.519.1Very hardCounty estimate
Circleville45.92.7SoftUtility-reported
Wadsworth247.014.4Very hardCounty estimate
North Canton285.016.7Very hardCounty estimate
Urbana365.021.4Very hardCounty estimate
Avon130.07.6HardUtility-reported
Avon Lake77.94.6Moderately hardUtility-reported
Moscow206.012.1Very hardCounty estimate
Cambridge209.012.2Very hardCounty estimate
Alliance285.016.7Very hardCounty estimate
Sidney342.020.0Very hardCounty estimate
Niles148.08.7HardCounty estimate
Sylvania243.014.2Very hardCounty estimate
Berea210.012.3Very hardCounty estimate
Piqua48.72.9SoftUtility-reported
Harbor View243.014.2Very hardCounty estimate
Oregon243.014.2Very hardCounty estimate
Springboro279.516.4Very hardCounty estimate
Chauncey209.512.3Very hardCounty estimate
Wintersville103.06.0Moderately hardUtility-reported
Fremont283.016.6Very hardCounty estimate
Hebron281.016.4Very hardCounty estimate
Bainbridge117.06.8Moderately hardUtility-reported
Tallmadge220.012.9Very hardCounty estimate
Pomeroy130.07.6HardCounty estimate
Piketon121.57.1HardCounty estimate
Norwalk329.019.2Very hardCounty estimate
Defiance253.014.8Very hardCounty estimate
New Philadelphia297.517.4Very hardCounty estimate
Franklin279.516.4Very hardCounty estimate
Aurora117.06.8Moderately hardUtility-reported
Streetsboro188.011.0Very hardCounty estimate
Long Bottom130.07.6HardCounty estimate
Girard148.08.7HardCounty estimate
Reminderville117.06.8Moderately hardUtility-reported
Concorde Hills150.08.8HardUtility-reported
Montgomery150.08.8HardUtility-reported
The Village of Indian Hill150.08.8HardUtility-reported
Maumee243.014.2Very hardCounty estimate
Monroe44.72.6SoftUtility-reported
Jefferson132.07.7HardCounty estimate
Lucasville86.05.0Moderately hardCounty estimate
Coshocton195.011.4Very hardCounty estimate
Fostoria307.017.9Very hardCounty estimate
Greenville369.021.6Very hardCounty estimate
Dover297.517.4Very hardCounty estimate
Bellefontaine361.021.1Very hardCounty estimate
Bedford210.012.3Very hardCounty estimate
Trenton303.017.7Very hardCounty estimate
Loveland206.012.1Very hardCounty estimate
Little Hocking175.510.3HardCounty estimate
Conneaut132.07.7HardCounty estimate
Kings Mills279.516.4Very hardCounty estimate
East Liverpool246.014.4Very hardCounty estimate
Bucyrus304.017.8Very hardCounty estimate
Wilmington271.015.8Very hardCounty estimate
Franklin Furnace86.05.0Moderately hardCounty estimate
Amherst220.012.9Very hardCounty estimate
Celina285.516.7Very hardCounty estimate
Collins329.019.2Very hardCounty estimate
Harrison266.015.6Very hardCounty estimate
Mingo Junction310.018.1Very hardCounty estimate
New Haven329.019.2Very hardCounty estimate
Blacklick273.016.0Very hardCounty estimate
Aberdeen192.011.2Very hardCounty estimate
Wapakoneta328.519.2Very hardCounty estimate
Van Wert281.016.4Very hardCounty estimate
Vermilion259.515.2Very hardCounty estimate
Wellsville246.014.4Very hardCounty estimate
Galion286.016.7Very hardCounty estimate
Jackson196.011.5Very hardCounty estimate
Caldwell278.016.3Very hardCounty estimate
Millbury265.015.5Very hardCounty estimate
Northwood265.015.5Very hardCounty estimate
Walbridge265.015.5Very hardCounty estimate
London350.020.5Very hardCounty estimate
St. Marys328.519.2Very hardCounty estimate
Dennison297.517.4Very hardCounty estimate
Uhrichsville297.517.4Very hardCounty estimate
Louisville285.016.7Very hardCounty estimate
Geneva132.07.7HardCounty estimate
Sheffield Lake220.012.9Very hardCounty estimate
Bryan380.022.2Very hardUtility-reported
Shelby274.016.0Very hardCounty estimate
Wheelersburg86.05.0Moderately hardCounty estimate
Napoleon292.517.1Very hardCounty estimate
Wauseon294.017.2Very hardCounty estimate
Chardon167.09.8HardCounty estimate
Hubbard148.08.7HardCounty estimate
Eaton327.019.1Very hardCounty estimate
Hudson104.06.1Moderately hardUtility-reported
Martins Ferry363.021.2Very hardCounty estimate
Canfield177.010.3HardCounty estimate
Troy327.519.1Very hardCounty estimate
Delphos301.017.6Very hardCounty estimate
Huber Ridge135.07.9HardUtility-reported
Union City369.021.6Very hardCounty estimate
Wellston196.011.5Very hardCounty estimate
Zoar297.517.4Very hardCounty estimate
Huron259.515.2Very hardCounty estimate
Commercial Point308.018.0Very hardCounty estimate
Columbiana246.014.4Very hardCounty estimate
Milford206.012.1Very hardCounty estimate
Upper Sandusky360.021.1Very hardCounty estimate
Rutland316.018.5Very hardUtility-reported
Waverly121.57.1HardCounty estimate
Mount Orab192.011.2Very hardCounty estimate
White Cottage224.013.1Very hardCounty estimate
Zanesville224.013.1Very hardCounty estimate
Rittman255.014.9Very hardCounty estimate
Belpre175.510.3HardCounty estimate
Clyde283.016.6Very hardCounty estimate
Brookville321.018.8Very hardCounty estimate
Sebring177.010.3HardCounty estimate
Kingsville132.07.7HardCounty estimate
Cleves266.015.6Very hardCounty estimate
Waterville110.06.4Moderately hardUtility-reported
Toronto310.018.1Very hardCounty estimate
Brilliant310.018.1Very hardCounty estimate
Canal Fulton285.016.7Very hardCounty estimate
Chagrin Falls210.012.3Very hardCounty estimate
Whitehouse243.014.2Very hardCounty estimate
Malvern121.07.1HardCounty estimate
Byesville209.012.2Very hardCounty estimate
Munroe Falls220.012.9Very hardCounty estimate
Woodsfield149.08.7HardCounty estimate
Wellington220.012.9Very hardCounty estimate
West Milton327.519.1Very hardCounty estimate
East Palestine246.014.4Very hardCounty estimate
Crestline304.017.8Very hardCounty estimate
Oak Harbor280.016.4Very hardCounty estimate
Brunswick247.014.4Very hardCounty estimate
Columbia Station220.012.9Very hardCounty estimate
Coldwater141.08.3HardUtility-reported
Ashville308.018.0Very hardCounty estimate
Blanchester271.015.8Very hardCounty estimate
Fayetteville192.011.2Very hardCounty estimate
Georgetown192.011.2Very hardCounty estimate
Montpelier286.016.7Very hardCounty estimate
Cadiz163.19.5HardComputed from Ca+Mg
Cedarville356.020.8Very hardCounty estimate
Minerva121.07.1HardCounty estimate
Millersburg221.512.9Very hardCounty estimate
Bethel206.012.1Very hardCounty estimate
Newcomerstown297.517.4Very hardCounty estimate
Swanton294.017.2Very hardCounty estimate
Waynesville279.516.4Very hardCounty estimate
Waterford175.510.3HardCounty estimate
Yellow Springs356.020.8Very hardCounty estimate
Felicity206.012.1Very hardCounty estimate
Carey360.021.1Very hardCounty estimate
Mount Gilead286.016.7Very hardCounty estimate
Mt. Gilead286.016.7Very hardCounty estimate
Paulding262.015.3Very hardCounty estimate
Hicksville253.014.8Very hardCounty estimate
Delta294.017.2Very hardCounty estimate
North Baltimore265.015.5Very hardCounty estimate
Orient308.018.0Very hardCounty estimate
Doylestown290.017.0Very hardUtility-reported
New Bremen328.519.2Very hardCounty estimate
New London329.019.2Very hardCounty estimate
West Union216.512.7Very hardCounty estimate
Millersport311.018.2Very hardCounty estimate
Kelleys Island259.515.2Very hardCounty estimate
Lakemore220.012.9Very hardCounty estimate
Oak Hill196.011.5Very hardCounty estimate
Carrollton121.07.1HardCounty estimate
Baltimore311.018.2Very hardCounty estimate
Lisbon38.22.2SoftUtility-reported
Lodi247.014.4Very hardCounty estimate
Minster328.519.2Very hardCounty estimate
Genoa88.25.2Moderately hardUtility-reported
Versailles369.021.6Very hardCounty estimate
Buckeye Lake281.016.4Very hardCounty estimate
New Richmond206.012.1Very hardCounty estimate
Middlefield167.09.8HardCounty estimate
Sarahsville278.016.3Very hardCounty estimate
Fredericktown220.512.9Very hardCounty estimate
Loudonville279.016.3Very hardCounty estimate
Strasburg297.517.4Very hardCounty estimate
Covington327.519.1Very hardCounty estimate
St. Henry285.516.7Very hardCounty estimate
Sabina271.015.8Very hardCounty estimate
Crooksville283.016.6Very hardCounty estimate
Weston265.015.5Very hardCounty estimate
Navarre285.016.7Very hardCounty estimate
Gibsonburg283.016.6Very hardCounty estimate
Gambier220.512.9Very hardCounty estimate
Jerusalem149.08.7HardCounty estimate
New Concord224.013.1Very hardCounty estimate
Williamsburg206.012.1Very hardCounty estimate
Enon360.021.1Very hardCounty estimate
Middleport130.07.6HardCounty estimate
Leipsic300.017.5Very hardCounty estimate
Harrisville351.020.5Very hardCounty estimate
Garrettsville188.011.0Very hardCounty estimate
Richwood316.018.5Very hardCounty estimate
Seville247.014.4Very hardCounty estimate
Curtice243.014.2Very hardCounty estimate
Sugarcreek297.517.4Very hardCounty estimate
Utica281.016.4Very hardCounty estimate
Milan259.515.2Very hardCounty estimate
Spencerville301.017.6Very hardCounty estimate
Windham188.011.0Very hardCounty estimate
North Olmsted210.012.3Very hardCounty estimate
Olmsted Falls210.012.3Very hardCounty estimate
Creston255.014.9Very hardCounty estimate
Brewster285.016.7Very hardCounty estimate
Midvale297.517.4Very hardCounty estimate
Columbus Grove460.026.9Very hardUtility-reported
Woodville283.016.6Very hardCounty estimate
Arcanum369.021.6Very hardCounty estimate
Berlin221.512.9Very hardCounty estimate
Cardington286.016.7Very hardCounty estimate
Bradford369.021.6Very hardCounty estimate
Camden327.019.1Very hardCounty estimate
Somerville303.017.7Very hardCounty estimate
Manchester216.512.7Very hardCounty estimate
Dalton255.014.9Very hardCounty estimate
Dresden224.013.1Very hardCounty estimate
Mount Sterling350.020.5Very hardCounty estimate
Jamestown356.020.8Very hardCounty estimate
Washington Court House320.018.7Very hardCounty estimate
Peebles216.512.7Very hardCounty estimate
Leetonia246.014.4Very hardCounty estimate
Carroll311.018.2Very hardCounty estimate
Beverly271.015.8Very hardCounty estimate
Edgerton286.016.7Very hardCounty estimate
Plymouth329.019.2Very hardCounty estimate
Lake Waynoka58.43.4SoftUtility-reported
Roseville224.013.1Very hardCounty estimate
North Lewisburg365.021.4Very hardCounty estimate
Flushing363.021.2Very hardCounty estimate
Lewisburg327.019.1Very hardCounty estimate
West Liberty361.021.1Very hardCounty estimate
Glouster209.512.3Very hardCounty estimate
Malta271.015.8Very hardCounty estimate
West Unity286.016.7Very hardCounty estimate
Anna342.020.0Very hardCounty estimate
Belle Valley278.016.3Very hardCounty estimate
Antwerp262.015.3Very hardCounty estimate
New Paris327.019.1Very hardCounty estimate
Russells Point361.021.1Very hardCounty estimate
Orwell132.07.7HardCounty estimate
Forest354.020.7Very hardCounty estimate
Mechanicsburg365.021.4Very hardCounty estimate
East Canton285.016.7Very hardCounty estimate
Payne262.015.3Very hardCounty estimate
Green Springs307.017.9Very hardCounty estimate
Powhatan Point363.021.2Very hardCounty estimate
Deshler292.517.1Very hardCounty estimate
Newport82.44.8Moderately hardUtility-reported
Lithopolis311.018.2Very hardCounty estimate
New Lexington324.018.9Very hardUtility-reported
Thornport324.018.9Very hardUtility-reported
Kalida300.017.5Very hardCounty estimate
Burton167.09.8HardCounty estimate
Lynchburg286.016.7Very hardCounty estimate
Shreve255.014.9Very hardCounty estimate
Batavia206.012.1Very hardCounty estimate
Grand Rapids265.015.5Very hardCounty estimate
Fort Loramie342.020.0Very hardCounty estimate
Somerset283.016.6Very hardCounty estimate
Greenwich329.019.2Very hardCounty estimate
Jackson Center342.020.0Very hardCounty estimate
Arlington311.018.2Very hardCounty estimate
Winesburg221.512.9Very hardCounty estimate
Fort Recovery285.516.7Very hardCounty estimate
Bremen311.018.2Very hardCounty estimate
Elmore280.016.4Very hardCounty estimate
West Salem255.014.9Very hardCounty estimate
Hiram188.011.0Very hardCounty estimate
Monroeville329.019.2Very hardCounty estimate
West Alexandria327.019.1Very hardCounty estimate
Bethesda363.021.2Very hardCounty estimate
Pioneer286.016.7Very hardCounty estimate
Tiltonsville310.018.1Very hardCounty estimate
Pemberville265.015.5Very hardCounty estimate
Jeffersonville320.018.7Very hardCounty estimate
Fayette294.017.2Very hardCounty estimate
Frazeysburg224.013.1Very hardCounty estimate
Archbold294.017.2Very hardCounty estimate
Stryker286.016.7Very hardCounty estimate
Andover132.07.7HardCounty estimate
Sardis149.08.7HardCounty estimate
Ashley286.016.7Very hardCounty estimate
Walnut Creek221.512.9Very hardCounty estimate
Botkins342.020.0Very hardCounty estimate
Gnadenhutten297.517.4Very hardCounty estimate
New Vienna271.015.8Very hardCounty estimate
New Waterford246.014.4Very hardCounty estimate
Pleasant Hill327.519.1Very hardCounty estimate
De Graff361.021.1Very hardCounty estimate
Mantua188.011.0Very hardCounty estimate
Liberty Center292.517.1Very hardCounty estimate
Ansonia369.021.6Very hardCounty estimate
Pandora300.017.5Very hardCounty estimate
Holgate292.517.1Very hardCounty estimate
Attica307.017.9Very hardCounty estimate
Rockford285.516.7Very hardCounty estimate
Convoy281.016.4Very hardCounty estimate
Frankfort276.516.2Very hardCounty estimate
Lakeview361.021.1Very hardCounty estimate
Warsaw195.011.4Very hardCounty estimate
Tuscarawas297.517.4Very hardCounty estimate
Winchester216.512.7Very hardCounty estimate
Wakeman329.019.2Very hardCounty estimate
Williamsport308.018.0Very hardCounty estimate
Beach City285.016.7Very hardCounty estimate
Kingston276.516.2Very hardCounty estimate
Bloomville307.017.9Very hardCounty estimate
Danville220.512.9Very hardCounty estimate
Farmersville321.018.8Very hardCounty estimate
Glandorf300.017.5Very hardCounty estimate
Bolivar297.517.4Very hardCounty estimate
Thornville283.016.6Very hardCounty estimate
Gratis327.019.1Very hardCounty estimate
Bradner265.015.5Very hardCounty estimate
Hopedale351.020.5Very hardCounty estimate
Ottoville300.017.5Very hardCounty estimate
Hamden130.07.6HardCounty estimate
Pleasantville311.018.2Very hardCounty estimate
Sardinia192.011.2Very hardCounty estimate
New Knoxville99.15.8Moderately hardUtility-reported
Mogadore188.011.0Very hardCounty estimate
Seaman216.512.7Very hardCounty estimate
Butler274.016.0Very hardCounty estimate
Hamersville192.011.2Very hardCounty estimate
Rayland310.018.1Very hardCounty estimate
New Madison369.021.6Very hardCounty estimate
Wayne265.015.5Very hardCounty estimate
Spring Valley356.020.8Very hardCounty estimate
Sycamore360.021.1Very hardCounty estimate
Coolville209.512.3Very hardCounty estimate
The Plains209.512.3Very hardCounty estimate
Ney253.014.8Very hardCounty estimate
West Jefferson350.020.5Very hardCounty estimate
Belle Center354.020.7Very hardCounty estimate
Waynesfield328.519.2Very hardCounty estimate
Chesterland167.09.8HardCounty estimate
Syracuse130.07.6HardCounty estimate
Chesterhill271.015.8Very hardCounty estimate
Adena310.018.1Very hardCounty estimate
Killbuck221.512.9Very hardCounty estimate
Nevada360.021.1Very hardCounty estimate
Edon286.016.7Very hardCounty estimate
Sherwood253.014.8Very hardCounty estimate
New Holland308.018.0Very hardCounty estimate
Washingtonville246.014.4Very hardCounty estimate
Spencer247.014.4Very hardCounty estimate
Baltic221.512.9Very hardCounty estimate
Arcadia311.018.2Very hardCounty estimate
Bridgeport363.021.2Very hardCounty estimate
St. Clairsville363.021.2Very hardCounty estimate
Scio351.020.5Very hardCounty estimate
Amanda311.018.2Very hardCounty estimate
Marshallville255.014.9Very hardCounty estimate
Ohio City281.016.4Very hardCounty estimate
McConnelsville271.015.8Very hardCounty estimate
Racine130.07.6HardCounty estimate
Dillonvale310.018.1Very hardCounty estimate
Coalton196.011.5Very hardCounty estimate
Bettsville307.017.9Very hardCounty estimate
Pepper Pike97.85.7Moderately hardUtility-reported
Jewett351.020.5Very hardCounty estimate
Mendon285.516.7Very hardCounty estimate
Hamler292.517.1Very hardCounty estimate
Shawnee283.016.6Very hardCounty estimate
Thurston311.018.2Very hardCounty estimate
Lowell175.510.3HardCounty estimate
New Athens351.020.5Very hardCounty estimate
Middle Point281.016.4Very hardCounty estimate
Rawson311.018.2Very hardCounty estimate
Bellville274.016.0Very hardCounty estimate
Jeromesville279.016.3Very hardCounty estimate
Lyons294.017.2Very hardCounty estimate
Rushsylvania361.021.1Very hardCounty estimate
Clarksville271.015.8Very hardCounty estimate
Eldorado327.019.1Very hardCounty estimate
North Fairfield329.019.2Very hardCounty estimate
Rock Creek132.07.7HardCounty estimate
Gettysburg369.021.6Very hardCounty estimate
Stockport271.015.8Very hardCounty estimate
Clarksburg276.516.2Very hardCounty estimate
Verona327.019.1Very hardCounty estimate
Mount Blanchard311.018.2Very hardCounty estimate
West Manchester327.019.1Very hardCounty estimate
Mount Pleasant310.018.1Very hardCounty estimate
Hayesville279.016.3Very hardCounty estimate
Fletcher327.519.1Very hardCounty estimate
Pleasant City278.016.3Very hardCounty estimate
Lindsey283.016.6Very hardCounty estimate
Beaver121.57.1HardCounty estimate
Fredericksburg221.512.9Very hardCounty estimate
Freeport351.020.5Very hardCounty estimate
Bowerston121.07.1HardCounty estimate
Willshire281.016.4Very hardCounty estimate
Bowersville356.020.8Very hardCounty estimate
Chickasaw543.031.8Very hardUtility-reported
Vanlue311.018.2Very hardCounty estimate
Stratton310.018.1Very hardCounty estimate
Beaverdam301.017.6Very hardCounty estimate
Ravenna188.011.0Very hardCounty estimate
Glenmont221.512.9Very hardCounty estimate
Solon210.012.3Very hardCounty estimate
Newbury167.09.8HardCounty estimate
Martinsburg220.512.9Very hardCounty estimate
Kettlersville342.020.0Very hardCounty estimate
Salem246.014.4Very hardCounty estimate
Maria Stein285.516.7Very hardCounty estimate
West Lafayette195.011.4Very hardCounty estimate
Deersville351.020.5Very hardCounty estimate
Ashland279.016.3Very hardCounty estimate
Fowler148.08.7HardCounty estimate
Hinckley247.014.4Very hardCounty estimate
Green220.012.9Very hardCounty estimate
Helena283.016.6Very hardCounty estimate
Beloit177.010.3HardCounty estimate
Huntsville361.021.1Very hardCounty estimate
Independence210.012.3Very hardCounty estimate
Lakeville221.512.9Very hardCounty estimate
Magnolia121.07.1HardCounty 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 Ohio's Water Hardness

Ohio 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

Ohio Water Hardness FAQ

Does Ohio have hard water?

On the whole, no — Ohio's statewide median sits below the hard threshold, though some cities run harder. The median is 111.0 mg/L (6.5 gpg) — moderately hard on the USGS scale, where anything above 120 mg/L (7 gpg) counts as hard. 37 of Ohio's 130 measured cities fall in the hard or very hard bands (28%), so check your own city rather than the state average.

How hard is tap water in Ohio?

Across the 130 Ohio cities with measured values in our index, the median hardness is 111.0 mg/L (6.5 gpg) — moderately hard on the USGS scale. Individual cities range from 1.6 to 543.0 mg/L, so check your own city rather than assuming the state number.

Which city in Ohio has the hardest water?

Columbus Grove has the hardest measured tap water in our Ohio index at 460.0 mg/L (26.9 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 Ohio?

37 of Ohio's 130 measured cities (28%) 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 Ohio 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.