Skip to main content

Water Hardness in Illinois

Across 156 measured cities — with 483 more covered by labeled county-level estimates — Illinois's median tap water hardness is 157.0 mg/L (9.2 gpg): 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
157.0
mg/L (9.2 gpg), measured cities
Measured Range
14.0-610.0
mg/L across measured cities
Measured Cities
156
utility-reported or computed values
County Estimates
483
76% of covered cities

What it costs to soften Illinois water

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

Illinois · 9.18 grains per gallon

$1,039–$1,472

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

Salt and drain water over 10 years: $858–$1,523 — the 10,052,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: 19,278 grains of capacity needed, rounded up to the next common residential size. The median of 156 measured Illinois 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.

Illinois Cities by Hardness Category

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

CategoryRangeMeasured citiesShare
Soft0-60 mg/L85.1%
Moderately hard60-120 mg/L3421.8%
Hard120-180 mg/L4226.9%
Very hard>180 mg/L7246.2%

Hardest and Softest Water in Illinois

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

Hardest water in Illinois

  1. East Dubuque — 610.0 mg/L (35.7 gpg), very hard
  2. North Pekin — 567.0 mg/L (33.2 gpg), very hard
  3. Monee — 558.0 mg/L (32.6 gpg), very hard
  4. Crete — 524.0 mg/L (30.6 gpg), very hard
  5. Fox River Grove — 520.0 mg/L (30.4 gpg), very hard

Softest water in Illinois

  1. West Dundee — 14.0 mg/L (0.8 gpg), soft
  2. Wataga — 17.7 mg/L (1.0 gpg), soft
  3. Huntley — 31.2 mg/L (1.8 gpg), soft
  4. Carbondale — 36.2 mg/L (2.1 gpg), soft
  5. Chenoa — 42.4 mg/L (2.5 gpg), soft

Every Covered City in Illinois

All 639 covered Illinois 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
Chicago138.98.1HardUtility-reported
Elmwood Park229.013.4Very hardCounty estimate
Evergreen Park229.013.4Very hardCounty estimate
Oak Park229.013.4Very hardCounty estimate
Riverdale229.013.4Very hardCounty estimate
Naperville120.07.0Moderately hardUtility-reported
Joliet244.014.3Very hardUtility-reported
Shorewood287.016.8Very hardCounty estimate
Rockford329.019.2Very hardUtility-reported
Champaign84.34.9Moderately hardUtility-reported
East St. Louis157.09.2HardUtility-reported
Peoria283.016.6Very hardUtility-reported
Springfield280.016.4Very hardCounty estimate
Chatham280.016.4Very hardCounty estimate
Bartlett287.016.8Very hardCounty estimate
Elgin111.06.5Moderately hardUtility-reported
Bolingbrook287.016.8Very hardCounty estimate
Waukegan119.07.0Moderately hardUtility-reported
Cicero229.013.4Very hardCounty estimate
Kankakee138.08.1HardUtility-reported
Arlington Heights115.06.7Moderately hardUtility-reported
Bloomington327.019.1Very hardCounty estimate
Evanston135.07.9HardUtility-reported
Schaumburg130.37.6HardComputed from Ca+Mg
Palatine229.013.4Very hardCounty estimate
Skokie132.07.7HardUtility-reported
Des Plaines126.07.4HardUtility-reported
Desplaines126.07.4HardUtility-reported
Orland Park147.08.6HardUtility-reported
Berwyn111.06.5Moderately hardUtility-reported
Forest Park229.013.4Very hardCounty estimate
Oak Lawn229.013.4Very hardCounty estimate
Tinley Park300.017.5Very hardUtility-reported
Normal327.019.1Very hardCounty estimate
Wheaton124.07.3HardUtility-reported
Hoffman Estates229.013.4Very hardCounty estimate
Romeoville303.017.7Very hardUtility-reported
Downers Grove131.07.7HardUtility-reported
Lombard287.016.8Very hardCounty estimate
Vernon Hills250.014.6Very hardCounty estimate
Mundelein250.014.6Very hardCounty estimate
Addison287.016.8Very hardCounty estimate
Elmhurst112.06.5Moderately hardUtility-reported
Alton190.011.1Very hardUtility-reported
Godfrey276.016.1Very hardCounty estimate
Gurnee250.014.6Very hardCounty estimate
Moline110.06.4Moderately hardUtility-reported
Buffalo Grove135.07.9HardUtility-reported
Glenview229.013.4Very hardCounty estimate
Mount Prospect112.06.5Moderately hardUtility-reported
Crystal Lake343.020.1Very hardCounty estimate
Streamwood229.013.4Very hardCounty estimate
Bloomingdale287.016.8Very hardCounty estimate
Carol Stream287.016.8Very hardCounty estimate
Wheeling108.06.3Moderately hardUtility-reported
Oswego235.013.7Very hardUtility-reported
Danville310.018.1Very hardCounty estimate
Carpentersville67.43.9Moderately hardComputed from Ca+Mg
Hanover Park140.08.2HardUtility-reported
Granite City157.09.2HardUtility-reported
Markham229.013.4Very hardCounty estimate
Calumet City229.013.4Very hardCounty estimate
Machesney Park387.022.6Very hardUtility-reported
Darien287.016.8Very hardCounty estimate
Woodridge129.07.5HardUtility-reported
Pekin352.020.6Very hardUtility-reported
Elk Grove Village141.08.3HardUtility-reported
Northbrook229.013.4Very hardCounty estimate
Libertyville250.014.6Very hardCounty estimate
Glendale Heights287.016.8Very hardCounty estimate
St. Charles320.518.7Very hardCounty estimate
Burbank229.013.4Very hardCounty estimate
Chicago Heights229.013.4Very hardCounty estimate
Algonquin378.022.1Very hardUtility-reported
Maryville276.016.1Very hardCounty estimate
Lake in the Hills283.016.6Very hardUtility-reported
Glen Ellyn136.08.0HardUtility-reported
New Lenox137.08.0HardUtility-reported
Wilmette138.08.1HardUtility-reported
West Chicago287.016.8Very hardCounty estimate
Huntley31.21.8SoftUtility-reported
Edwardsville87.45.1Moderately hardComputed from Ca+Mg
Midlothian229.013.4Very hardCounty estimate
Carbondale36.22.1SoftUtility-reported
Batavia320.518.7Very hardCounty estimate
Woodstock343.020.1Very hardCounty estimate
Maywood229.013.4Very hardCounty estimate
Melrose Park103.06.0Moderately hardUtility-reported
Belvidere416.024.3Very hardUtility-reported
Harvey229.013.4Very hardCounty estimate
Hazel Crest229.013.4Very hardCounty estimate
Westmont118.06.9Moderately hardUtility-reported
Zion250.014.6Very hardCounty estimate
Rolling Meadows229.013.4Very hardCounty estimate
Loves Park316.018.5Very hardUtility-reported
Blue Island229.013.4Very hardCounty estimate
Grayslake250.014.6Very hardCounty estimate
Morton Grove229.013.4Very hardCounty estimate
East Peoria408.023.9Very hardUtility-reported
Lockport287.016.8Very hardCounty estimate
Plano378.022.1Very hardCounty estimate
Lisle287.016.8Very hardCounty estimate
Roselle287.016.8Very hardCounty estimate
South Elgin395.023.1Very hardUtility-reported
South Holland140.08.2HardUtility-reported
Villa Park98.95.8Moderately hardUtility-reported
McHenry399.023.3Very hardUtility-reported
Park Forest163.09.5HardUtility-reported
Dolton229.013.4Very hardCounty estimate
Crest Hill465.027.2Very hardUtility-reported
Matteson229.013.4Very hardCounty estimate
East Moline190.011.1Very hardUtility-reported
Hampton320.018.7Very hardCounty estimate
Alsip229.013.4Very hardCounty estimate
Homer Glen287.016.8Very hardCounty estimate
Lake Zurich84.24.9Moderately hardUtility-reported
Mokena91.25.3Moderately hardUtility-reported
Mattoon108.06.3Moderately hardUtility-reported
Homewood112.06.5Moderately hardUtility-reported
Deerfield250.014.6Very hardCounty estimate
Bellwood229.013.4Very hardCounty estimate
Westchester229.013.4Very hardCounty estimate
Bethalto276.016.1Very hardCounty estimate
Streator253.014.8Very hardUtility-reported
Brookfield229.013.4Very hardCounty estimate
Crestwood229.013.4Very hardCounty estimate
Worth229.013.4Very hardCounty estimate
Justice229.013.4Very hardCounty estimate
Willow Springs229.013.4Very hardCounty estimate
North Aurora238.013.9Very hardUtility-reported
Franklin Park229.013.4Very hardCounty estimate
Bensenville287.016.8Very hardCounty estimate
Hinsdale133.07.8HardUtility-reported
Cary343.020.1Very hardCounty estimate
Sycamore289.016.9Very hardUtility-reported
Palos Hills229.013.4Very hardCounty estimate
New Burnside83.14.9Moderately hardCounty estimate
Morton347.020.3Very hardCounty estimate
Caseyville265.515.5Very hardCounty estimate
Groveland347.020.3Very hardCounty estimate
Lemont224.013.1Very hardUtility-reported
Marion170.09.9HardCounty estimate
North Chicago135.07.9HardUtility-reported
Troy276.016.1Very hardCounty estimate
Canton344.020.1Very hardCounty estimate
Country Club Hills229.013.4Very hardCounty estimate
Bridgeview229.013.4Very hardCounty estimate
Taylorville142.08.3HardUtility-reported
La Grange122.07.1HardUtility-reported
Lagrange122.07.1HardUtility-reported
Palos Heights229.013.4Very hardCounty estimate
Lincoln189.011.1Very hardUtility-reported
Georgetown310.018.1Very hardCounty estimate
Washington347.020.3Very hardCounty estimate
Morris327.019.1Very hardCounty estimate
Antioch250.014.6Very hardCounty estimate
Chicago Ridge229.013.4Very hardCounty estimate
Wauconda146.08.5HardUtility-reported
Hickory Hills229.013.4Very hardCounty estimate
Energy170.09.9HardCounty estimate
Wood Dale287.016.8Very hardCounty estimate
Nashville165.59.7HardCounty estimate
La Grange Park129.07.5HardUtility-reported
Lagrange Park129.07.5HardUtility-reported
Glen Carbon276.016.1Very hardCounty estimate
Western Springs229.013.4Very hardCounty estimate
Rantoul300.017.5Very hardCounty estimate
Herrin170.09.9HardCounty estimate
Channahon193.011.3Very hardUtility-reported
Warrenville474.027.7Very hardUtility-reported
Kewanee54.33.2SoftUtility-reported
Richton Park206.012.1Very hardUtility-reported
Lincolnwood136.08.0HardUtility-reported
Winnetka135.07.9HardUtility-reported
Effingham235.013.7Very hardCounty estimate
Minooka378.022.1Very hardCounty estimate
Pontiac191.011.2Very hardUtility-reported
Jerseyville108.06.3Moderately hardUtility-reported
Columbia232.513.6Very hardCounty estimate
Schiller Park229.013.4Very hardCounty estimate
Willowbrook287.016.8Very hardCounty estimate
Palestine264.015.4Very hardUtility-reported
Sugar Grove419.024.5Very hardUtility-reported
River Forest135.07.9HardUtility-reported
Lyons229.013.4Very hardCounty estimate
Murphysboro166.09.7HardCounty estimate
Centralia140.08.2HardCounty estimate
Macomb240.514.1Very hardCounty estimate
Wood River128.17.5HardComputed from Ca+Mg
Manhattan287.016.8Very hardCounty estimate
River Grove229.013.4Very hardCounty estimate
Waterloo232.513.6Very hardCounty estimate
Itasca287.016.8Very hardCounty estimate
Flossmoor146.08.5HardUtility-reported
Steger229.013.4Very hardCounty estimate
West Frankfort124.07.3HardCounty estimate
Oak Brook287.016.8Very hardCounty estimate
Rock Falls334.019.5Very hardCounty estimate
Mascoutah265.515.5Very hardCounty estimate
Pierron163.09.5HardCounty estimate
Monmouth284.016.6Very hardCounty estimate
Lake Villa205.012.0Very hardUtility-reported
Clarendon Hills136.08.0HardUtility-reported
Harwood Heights229.013.4Very hardCounty estimate
Whittington124.07.3HardCounty estimate
Crete524.030.6Very hardUtility-reported
Island Lake250.014.6Very hardCounty estimate
Pingree Grove64.63.8Moderately hardUtility-reported
Broadview229.013.4Very hardCounty estimate
Decatur261.015.3Very hardCounty estimate
Silvis244.014.3Very hardUtility-reported
Rockton295.017.3Very hardUtility-reported
West Dundee14.00.8SoftComputed from Ca+Mg
Dupo265.515.5Very hardCounty estimate
Lincolnshire250.014.6Very hardCounty estimate
Gilberts320.518.7Very hardCounty estimate
DeKalb340.019.9Very hardCounty estimate
University Park287.016.8Very hardCounty estimate
Pocahontas163.09.5HardCounty estimate
Camp Point220.012.9Very hardCounty estimate
Scott Air Force Base265.515.5Very hardCounty estimate
Winthrop Harbor250.014.6Very hardCounty estimate
Sheridan321.018.8Very hardCounty estimate
Mahomet300.017.5Very hardCounty estimate
Carmi167.59.8HardCounty estimate
Elburn232.013.6Very hardUtility-reported
Sherman280.016.4Very hardCounty estimate
Williamsville280.016.4Very hardCounty estimate
Posen229.013.4Very hardCounty estimate
Peoria Heights300.017.5Very hardCounty estimate
Mount Zion103.06.0Moderately hardUtility-reported
East Alton276.016.1Very hardCounty estimate
Lake Bluff93.75.5Moderately hardUtility-reported
Coal City98.35.8Moderately hardUtility-reported
Hampshire60.53.5Moderately hardUtility-reported
Charleston290.017.0Very hardCounty estimate
Robbins229.013.4Very hardCounty estimate
Valmeyer232.513.6Very hardCounty estimate
Highwood120.07.0Moderately hardUtility-reported
Wonder Lake292.317.1Very hardComputed from Ca+Mg
Marseilles321.018.8Very hardCounty estimate
Monee558.032.6Very hardUtility-reported
Berkeley229.013.4Very hardCounty estimate
Jonesboro156.59.2HardCounty estimate
Tuscola286.016.7Very hardCounty estimate
Olympia Fields229.013.4Very hardCounty estimate
Stone Park229.013.4Very hardCounty estimate
Creve Coeur299.617.5Very hardComputed from Ca+Mg
Anna156.59.2HardCounty estimate
Palos Park229.013.4Very hardCounty estimate
Fox River Grove520.030.4Very hardUtility-reported
Norwood367.021.5Very hardUtility-reported
Freeburg265.515.5Very hardCounty estimate
Millstadt265.515.5Very hardCounty estimate
Hometown229.013.4Very hardCounty estimate
Trenton168.09.8HardCounty estimate
Smithton265.515.5Very hardCounty estimate
Volo111.06.5Moderately hardUtility-reported
Coal Valley320.018.7Very hardCounty estimate
Red Bud232.513.6Very hardCounty estimate
Oneida331.019.4Very hardCounty estimate
Johnston City170.09.9HardCounty estimate
Tolono300.017.5Very hardCounty estimate
New Baden168.09.8HardCounty estimate
Oregon329.519.3Very hardCounty estimate
Salem140.08.2HardCounty estimate
Carlyle171.010.0HardUtility-reported
Aledo270.015.8Very hardCounty estimate
Mackinaw347.020.3Very hardCounty estimate
Virden145.08.5HardCounty estimate
Woodlawn180.010.5HardCounty estimate
Gibson City355.020.8Very hardCounty estimate
Galena365.021.4Very hardCounty estimate
Bushnell240.514.1Very hardCounty estimate
Rushville277.016.2Very hardCounty estimate
Casey250.514.7Very hardCounty estimate
Collinsville276.016.1Very hardCounty estimate
Momence393.023.0Very hardUtility-reported
Winnebago340.019.9Very hardCounty estimate
Annapolis263.015.4Very hardCounty estimate
Robinson263.015.4Very hardCounty estimate
Savanna358.020.9Very hardCounty estimate
Newton243.014.2Very hardCounty estimate
Havana320.018.7Very hardCounty estimate
Abingdon331.019.4Very hardCounty estimate
Warsaw221.012.9Very hardCounty estimate
Dixon354.520.7Very hardCounty estimate
Albion178.010.4HardCounty estimate
El Paso336.019.6Very hardCounty estimate
Heyworth327.019.1Very hardCounty estimate
Lena350.020.5Very hardCounty estimate
Arcola286.016.7Very hardCounty estimate
Pawnee280.016.4Very hardCounty estimate
Christopher124.07.3HardCounty estimate
Poplar Grove368.021.5Very hardCounty estimate
Carrollton268.515.7Very hardCounty estimate
Carthage221.012.9Very hardCounty estimate
Galva370.021.6Very hardCounty estimate
Bridgeport228.013.3Very hardCounty estimate
Mason City235.013.7Very hardCounty estimate
Colona243.014.2Very hardUtility-reported
Kenilworth121.07.1HardUtility-reported
Sesser124.07.3HardCounty estimate
Amboy354.520.7Very hardCounty estimate
Oblong263.015.4Very hardCounty estimate
Tremont63.23.7Moderately hardUtility-reported
Odin140.08.2HardCounty estimate
Farmington344.020.1Very hardCounty estimate
Lewistown219.712.8Very hardComputed from Ca+Mg
De Soto166.09.7HardCounty estimate
Davis Junction329.519.3Very hardCounty estimate
Seneca321.018.8Very hardCounty estimate
Nokomis185.010.8Very hardCounty estimate
Jacksonville194.011.3Very hardCounty estimate
Polo329.519.3Very hardCounty estimate
Dawson280.016.4Very hardCounty estimate
Round Lake250.014.6Very hardCounty estimate
White Hall268.515.7Very hardCounty estimate
Norris City344.020.1Very hardCounty estimate
Altamont235.013.7Very hardCounty estimate
Colchester240.514.1Very hardCounty estimate
Arthur330.019.3Very hardCounty estimate
Elwood287.016.8Very hardCounty estimate
Prospect Heights229.013.4Very hardCounty estimate
Henry284.016.6Very hardCounty estimate
Girard145.08.5HardCounty estimate
Pecatonica305.017.8Very hardUtility-reported
Steeleville206.512.1Very hardCounty estimate
Carbon Cliff305.017.8Very hardUtility-reported
Thompsonville124.07.3HardCounty estimate
Cambridge370.021.6Very hardCounty estimate
Belle Rive180.010.5HardCounty estimate
Elmwood300.017.5Very hardCounty estimate
Hinckley340.019.9Very hardCounty estimate
Prophetstown334.019.5Very hardCounty estimate
Catlin310.018.1Very hardCounty estimate
Oakwood310.018.1Very hardCounty estimate
Richmond343.020.1Very hardCounty estimate
Zeigler124.07.3HardCounty estimate
Farmer City313.018.3Very hardCounty estimate
Auburn280.016.4Very hardCounty estimate
Carrier Mills450.026.3Very hardCounty estimate
New Athens265.515.5Very hardCounty estimate
South Roxana276.016.1Very hardCounty estimate
Kirkland340.019.9Very hardCounty estimate
Roanoke336.019.6Very hardCounty estimate
Minonk336.019.6Very hardCounty estimate
Carlinville145.08.5HardCounty estimate
Henderson331.019.4Very hardCounty estimate
Lacon284.016.6Very hardCounty estimate
Mt. Vernon180.010.5HardCounty estimate
Waltonville180.010.5HardCounty estimate
Lexington327.019.1Very hardCounty estimate
Highland276.016.1Very hardCounty estimate
Moweaqua222.013.0Very hardCounty estimate
Stockton365.021.4Very hardCounty estimate
Bluford180.010.5HardCounty estimate
Orion370.021.6Very hardCounty estimate
Hudson327.019.1Very hardCounty estimate
St. Jacob276.016.1Very hardCounty estimate
East Carondelet265.515.5Very hardCounty estimate
Delavan347.020.3Very hardCounty estimate
Bement317.018.5Very hardCounty estimate
Gilman315.018.4Very hardCounty estimate
Somonauk340.019.9Very hardCounty estimate
Chenoa42.42.5SoftComputed from Ca+Mg
Dix180.010.5HardCounty estimate
Kell140.08.2HardCounty estimate
Bunker Hill145.08.5HardCounty estimate
Cambria170.09.9HardCounty estimate
Princeville300.017.5Very hardCounty estimate
Manito347.020.3Very hardCounty estimate
Edinburg257.015.0Very hardCounty estimate
Kincaid257.015.0Very hardCounty estimate
Grayville167.59.8HardCounty estimate
Stonington257.015.0Very hardCounty estimate
Earlville321.018.8Very hardCounty estimate
East Dubuque610.035.7Very hardUtility-reported
Maroa114.06.7Moderately hardUtility-reported
Vienna83.14.9Moderately hardCounty estimate
Atlanta347.020.3Very hardCounty estimate
Port Byron320.018.7Very hardCounty estimate
Fisher300.017.5Very hardCounty estimate
Neoga280.516.4Very hardCounty estimate
Benld145.08.5HardCounty estimate
Erie334.019.5Very hardCounty estimate
Herscher313.018.3Very hardCounty estimate
Teutopolis235.013.7Very hardCounty estimate
Winchester289.016.9Very hardCounty estimate
Roodhouse412.024.1Very hardUtility-reported
North Pekin567.033.2Very hardUtility-reported
Germantown168.09.8HardCounty estimate
Sandoval140.08.2HardCounty estimate
Greenup280.516.4Very hardCounty estimate
Pleasant Plains280.016.4Very hardCounty estimate
Waterman340.019.9Very hardCounty estimate
Oquawka314.018.4Very hardCounty estimate
Bethany330.019.3Very hardCounty estimate
Forreston329.519.3Very hardCounty estimate
Clifton315.018.4Very hardCounty estimate
Gardner327.019.1Very hardCounty estimate
Walnut337.019.7Very hardCounty estimate
Lanark358.020.9Very hardCounty estimate
Roxana79.94.7Moderately hardComputed from Ca+Mg
Hartford276.016.1Very hardCounty estimate
Mount Carroll347.020.3Very hardUtility-reported
Mt. Carroll347.020.3Very hardUtility-reported
Cerro Gordo317.018.5Very hardCounty estimate
Warren365.021.4Very hardCounty estimate
Durand340.019.9Very hardCounty estimate
Granville287.016.8Very hardCounty estimate
Toluca284.016.6Very hardCounty estimate
Okawville165.59.7HardCounty estimate
Gridley327.019.1Very hardCounty estimate
Onarga315.018.4Very hardCounty estimate
Tower Lakes247.214.5Very hardComputed from Ca+Mg
Utica321.018.8Very hardCounty estimate
Wyoming352.020.6Very hardCounty estimate
Payson220.012.9Very hardCounty estimate
La Fayette352.020.6Very hardCounty estimate
Toulon352.020.6Very hardCounty estimate
Capron189.311.1Very hardComputed from Ca+Mg
Dunlap300.017.5Very hardCounty estimate
New Berlin280.016.4Very hardCounty estimate
Albers168.09.8HardCounty estimate
Milford315.018.4Very hardCounty estimate
Assumption257.015.0Very hardCounty estimate
Cobden156.59.2HardCounty estimate
Ashland359.021.0Very hardCounty estimate
Rossville310.018.1Very hardCounty estimate
Astoria344.020.1Very hardCounty estimate
Harristown202.011.8Very hardUtility-reported
Barry234.513.7Very hardCounty estimate
Waverly194.011.3Very hardCounty estimate
Maple Park320.518.7Very hardCounty estimate
Philo300.017.5Very hardCounty estimate
St. Anne313.018.3Very hardCounty estimate
Warrensburg261.015.3Very hardCounty estimate
Ladd337.019.7Very hardCounty estimate
Griggsville234.513.7Very hardCounty estimate
Valier124.07.3HardCounty estimate
Chatsworth340.019.9Very hardCounty estimate
Hanna City300.017.5Very hardCounty estimate
Atwood317.018.5Very hardCounty estimate
Minier347.020.3Very hardCounty estimate
Wayne City137.08.0HardUtility-reported
La Harpe221.012.9Very hardCounty estimate
Thomasboro258.015.1Very hardUtility-reported
Forrest340.019.9Very hardCounty estimate
Macon261.015.3Very hardCounty estimate
Louisville180.010.5HardCounty estimate
Chebanse313.018.3Very hardCounty estimate
Chrisman269.015.7Very hardCounty estimate
Greenfield268.515.7Very hardCounty estimate
Hebron343.020.1Very hardCounty estimate
Homer300.017.5Very hardCounty estimate
Martinsville250.514.7Very hardCounty estimate
Stillman Valley287.016.8Very hardUtility-reported
Washburn336.019.6Very hardCounty estimate
Royalton124.07.3HardCounty estimate
Cuba344.020.1Very hardCounty estimate
Danvers327.019.1Very hardCounty estimate
Divernon280.016.4Very hardCounty estimate
Buffalo280.016.4Very hardCounty estimate
Toledo280.516.4Very hardCounty estimate
Kingston340.019.9Very hardCounty estimate
Murrayville194.011.3Very hardCounty estimate
Woodson194.011.3Very hardCounty estimate
Geneva320.518.7Very hardCounty estimate
Hoyleton165.59.7HardCounty estimate
South Pekin347.020.3Very hardCounty estimate
Mounds125.07.3HardCounty estimate
Dowell166.09.7HardCounty estimate
Elkville166.09.7HardCounty estimate
Ava166.09.7HardCounty estimate
Pistakee Highlands353.020.6Very hardUtility-reported
Flanagan340.019.9Very hardCounty estimate
Malta340.019.9Very hardCounty estimate
Pleasant Hill234.513.7Very hardCounty estimate
Worden276.016.1Very hardCounty estimate
Gorham166.09.7HardCounty estimate
Sumner228.013.3Very hardCounty estimate
Glasford79.94.7Moderately hardComputed from Ca+Mg
Goreville83.14.9Moderately hardCounty estimate
Morrisonville257.015.0Very hardCounty estimate
Nilwood145.08.5HardCounty estimate
Nauvoo221.012.9Very hardCounty estimate
Hoffman168.09.8HardCounty estimate
Shawneetown276.016.1Very hardCounty estimate
Illiopolis280.016.4Very hardCounty estimate
Meredosia194.011.3Very hardCounty estimate
Alto Pass156.59.2HardCounty estimate
Odell340.019.9Very hardCounty estimate
Downs327.019.1Very hardCounty estimate
Mazon327.019.1Very hardCounty estimate
Goodfield169.89.9HardComputed from Ca+Mg
Gifford265.015.5Very hardUtility-reported
Viola270.015.8Very hardCounty estimate
Ashton265.015.5Very hardUtility-reported
Avon344.020.1Very hardCounty estimate
Beckemeyer168.09.8HardCounty estimate
Argenta261.015.3Very hardCounty estimate
Franklin Grove366.021.4Very hardUtility-reported
Forsyth261.015.3Very hardCounty estimate
Oreana261.015.3Very hardCounty estimate
Frankfort287.016.8Very hardCounty estimate
Buncombe83.14.9Moderately hardCounty estimate
Makanda166.09.7HardCounty estimate
Mt. Olive145.08.5HardCounty estimate
Annawan370.021.6Very hardCounty estimate
Dunfermline344.020.1Very hardCounty estimate
East Galesburg331.019.4Very hardCounty estimate
St. David344.020.1Very hardCounty estimate
Wataga17.71.0SoftComputed from Ca+Mg
Livingston276.016.1Very hardCounty estimate
Freeport350.020.5Very hardCounty estimate
Thayer280.016.4Very hardCounty estimate
Ashmore290.017.0Very hardCounty estimate
Orangeville291.017.0Very hardUtility-reported
Pearl City234.513.7Very hardCounty estimate
Blandinsville187.010.9Very hardUtility-reported
Watson235.013.7Very hardCounty estimate
Camargo286.016.7Very hardCounty estimate
Cedarville304.017.8Very hardUtility-reported
Yates City62.43.6Moderately hardComputed from Ca+Mg
Keithsburg250.014.6Very hardUtility-reported
Stewardson222.013.0Very hardCounty estimate
Moro276.016.1Very hardCounty estimate
Saybrook327.019.1Very hardCounty estimate
Matherville270.015.8Very hardCounty estimate
Vergennes166.09.7HardCounty estimate
Lyndon268.015.7Very hardUtility-reported
Hecker232.513.6Very hardCounty estimate
Bartelso481.028.1Very hardUtility-reported
Hutsonville263.015.4Very hardCounty estimate
Chandlerville466.027.3Very hardUtility-reported
Dieterich235.013.7Very hardCounty estimate
Ingleside250.014.6Very hardCounty estimate
Chapin266.015.6Very hardUtility-reported
Grand Ridge321.018.8Very hardCounty estimate
Carlock102.46.0Moderately hardComputed from Ca+Mg
Colp170.09.9HardCounty estimate
Keyesport163.09.5HardCounty estimate
Tovey257.015.0Very hardCounty estimate
Prairie City313.018.3Very hardUtility-reported
Taylor Ridge320.018.7Very hardCounty estimate
Towanda327.019.1Very hardCounty estimate
Melvin355.020.8Very hardCounty estimate
German Valley199.011.6Very hardUtility-reported
Hardin280.016.4Very hardCounty estimate
Aurora287.016.8Very hardCounty estimate
Barrington229.013.4Very hardCounty estimate
Leaf River306.017.9Very hardUtility-reported
Ottawa321.018.8Very hardCounty estimate
Alexander194.011.3Very hardCounty estimate
Aviston168.09.8HardCounty estimate
Sorento163.09.5HardCounty estimate
Neponset337.019.7Very hardCounty estimate
Arenzville369.021.6Very hardUtility-reported
Good Hope240.514.1Very hardCounty estimate
Olmsted125.07.3HardCounty estimate
Sigel127.07.4HardUtility-reported
Hindsboro286.016.7Very hardCounty estimate
Oakland290.017.0Very hardCounty estimate
Scales Mound365.021.4Very hardCounty estimate
Richview165.59.7HardCounty estimate
Humboldt290.017.0Very hardCounty estimate
Freeman Spur170.09.9HardCounty estimate
Mulkeytown124.07.3HardCounty estimate
Fieldon216.012.6Very hardCounty estimate
Maeystown232.513.6Very hardCounty estimate
Bardolph240.514.1Very hardCounty estimate
Rock City350.020.5Very hardCounty estimate
Armington347.020.3Very hardCounty estimate
Oakford302.017.7Very hardCounty estimate
Ludlow300.017.5Very hardCounty estimate
Cedar Point321.018.8Very hardCounty estimate
Hennepin287.016.8Very hardCounty estimate
Kane210.012.3Very hardUtility-reported
Little York284.016.6Very hardCounty estimate
Elliott355.020.8Very hardCounty estimate
Maquon331.019.4Very hardCounty estimate
Winfield287.016.8Very hardCounty estimate
Sibley355.020.8Very hardCounty estimate
Mill Shoals167.59.8HardCounty estimate
Broughton220.012.9Very hardCounty estimate
Carterville170.09.9HardCounty estimate
Radom165.59.7HardCounty estimate
Steward280.016.4Very hardUtility-reported
Montrose169.09.9HardUtility-reported
Seaton47.42.8SoftComputed from Ca+Mg
Galesburg331.019.4Very hardCounty estimate
Benton124.07.3HardCounty estimate
Macedonia124.07.3HardCounty estimate
Sciota240.514.1Very hardCounty estimate
Springerton167.59.8HardCounty estimate
Yorkville378.022.1Very hardCounty estimate
Lindenwood329.519.3Very hardCounty estimate
Patterson268.515.7Very hardCounty estimate
Wilmington287.016.8Very hardCounty estimate
Rochester280.016.4Very hardCounty estimate
Strawn340.019.9Very hardCounty estimate
Bishop Hill47.42.8SoftComputed from Ca+Mg
Sandwich340.019.9Very hardCounty estimate
St. Augustine174.810.2HardComputed from Ca+Mg
Mount Erie66.23.9Moderately hardUtility-reported
Peru321.018.8Very hardCounty estimate
Hines229.013.4Very hardCounty estimate
Lake Forest250.014.6Very hardCounty estimate
Mount Vernon180.010.5HardCounty estimate
Pittsfield234.513.7Very hardCounty estimate
Belleville265.515.5Very hardCounty estimate
Bourbonnais313.018.3Very hardCounty estimate
Bradley313.018.3Very hardCounty estimate
Colfax327.019.1Very hardCounty estimate
Coulterville245.514.4Very hardCounty estimate
Davis350.020.5Very hardCounty estimate
Enfield167.59.8HardCounty estimate
Fairview Heights265.515.5Very hardCounty estimate
Galatia450.026.3Very hardCounty estimate
Great Lakes250.014.6Very hardCounty estimate
Hamel276.016.1Very hardCounty estimate
Littleton277.016.2Very hardCounty estimate
Manteno313.018.3Very hardCounty estimate
Milledgeville358.020.9Very hardCounty estimate
Modesto145.08.5HardCounty estimate
New Douglas276.016.1Very hardCounty estimate
Newark378.022.1Very hardCounty estimate
Olive Branch205.012.0Very hardCounty estimate
Rome300.017.5Very hardCounty estimate
Roscoe340.019.9Very hardCounty estimate
Roseville284.016.6Very hardCounty estimate
Savoy300.017.5Very hardCounty estimate
Sterling334.019.5Very hardCounty estimate
Tamms205.012.0Very hardCounty estimate
Thomson358.020.9Very hardCounty estimate
Thornton229.013.4Very hardCounty estimate
Urbana300.017.5Very hardCounty estimate
Windsor222.013.0Very 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 Illinois's Water Hardness

Illinois 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

Illinois Water Hardness FAQ

Does Illinois have hard water?

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

How hard is tap water in Illinois?

Across the 156 Illinois cities with measured values in our index, the median hardness is 157.0 mg/L (9.2 gpg) — hard on the USGS scale. Individual cities range from 14.0 to 610.0 mg/L, so check your own city rather than assuming the state number.

Which city in Illinois has the hardest water?

East Dubuque has the hardest measured tap water in our Illinois index at 610.0 mg/L (35.7 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 Illinois?

114 of Illinois's 156 measured cities (73%) 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 Illinois 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.