Skip to main content

Water Hardness in Oklahoma

Across 12 measured cities — with 349 more covered by labeled county-level estimates — Oklahoma's median tap water hardness is 135.0 mg/L (7.9 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
135.0
mg/L (7.9 gpg), measured cities
Measured Range
88.4-231.5
mg/L across measured cities
Measured Cities
12
utility-reported or computed values
County Estimates
349
97% of covered cities

What it costs to soften Oklahoma water

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

Oklahoma · 7.89 grains per gallon

$938–$1,189

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

Salt and drain water over 10 years: $780–$1,432 — the 8,639,550 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: 16,569 grains of capacity needed, rounded up to the next common residential size. The median of 12 measured Oklahoma 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.

Oklahoma Cities by Hardness Category

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

CategoryRangeMeasured citiesShare
Soft0-60 mg/L00.0%
Moderately hard60-120 mg/L433.3%
Hard120-180 mg/L758.3%
Very hard>180 mg/L18.3%

Hardest and Softest Water in Oklahoma

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

Hardest water in Oklahoma

  1. Bristow — 231.5 mg/L (13.5 gpg), very hard
  2. Lake Aluma — 157.0 mg/L (9.2 gpg), hard
  3. Oklahoma City — 157.0 mg/L (9.2 gpg), hard
  4. Valley Brook — 157.0 mg/L (9.2 gpg), hard
  5. Arcadia — 136.0 mg/L (8.0 gpg), hard

Softest water in Oklahoma

  1. Bartlesville — 88.4 mg/L (5.2 gpg), moderately hard
  2. Norman — 93.5 mg/L (5.5 gpg), moderately hard
  3. Oakhurst — 111.0 mg/L (6.5 gpg), moderately hard
  4. Tulsa — 111.0 mg/L (6.5 gpg), moderately hard
  5. Nichols Hills — 134.0 mg/L (7.8 gpg), hard

Every Covered City in Oklahoma

All 361 covered Oklahoma 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
Jones221.012.9Very hardCounty estimate
Lake Aluma157.09.2HardUtility-reported
Oklahoma City157.09.2HardUtility-reported
Spencer221.012.9Very hardCounty estimate
Valley Brook157.09.2HardUtility-reported
Tulsa111.06.5Moderately hardUtility-reported
Comanche290.017.0Very hardCounty estimate
Norman93.55.5Moderately hardUtility-reported
Lawton152.58.9HardCounty estimate
Broken Arrow148.08.7HardCounty estimate
Medicine Park152.58.9HardCounty estimate
Fort Sill152.58.9HardCounty estimate
Arcadia136.08.0HardUtility-reported
Edmond136.08.0HardUtility-reported
Stillwater236.413.8Very hardCounty estimate
Choctaw221.012.9Very hardCounty estimate
Claremore131.07.7HardCounty estimate
Jenks148.08.7HardCounty estimate
Duncan290.017.0Very hardCounty estimate
Mounds68.04.0Moderately hardCounty estimate
Mannford183.010.7Very hardCounty estimate
Bartlesville88.45.2Moderately hardUtility-reported
Marlow290.017.0Very hardCounty estimate
Glenpool148.08.7HardCounty estimate
Ada254.014.8Very hardCounty estimate
Shawnee140.08.2HardCounty estimate
Durant235.013.7Very hardCounty estimate
Sand Springs148.08.7HardCounty estimate
Ponca City422.024.7Very hardCounty estimate
Mcalester92.05.4Moderately hardCounty estimate
Sallisaw70.04.1Moderately hardCounty estimate
Owasso148.08.7HardCounty estimate
Yukon463.027.1Very hardCounty estimate
Chickasha700.040.9Very hardCounty estimate
Wister36.72.1SoftCounty estimate
Kellyville183.010.7Very hardCounty estimate
Bethany221.012.9Very hardCounty estimate
Tahlequah95.05.6Moderately hardCounty estimate
Park Hill95.05.6Moderately hardCounty estimate
Sapulpa183.010.7Very hardCounty estimate
Madill313.018.3Very hardCounty estimate
Bixby148.08.7HardCounty estimate
Mustang463.027.1Very hardCounty estimate
Moffett70.04.1Moderately hardCounty estimate
Kingston313.018.3Very hardCounty estimate
Mannsville250.014.6Very hardCounty estimate
Welling95.05.6Moderately hardCounty estimate
Vian70.04.1Moderately hardCounty estimate
Commerce181.010.6Very hardCounty estimate
Gore70.04.1Moderately hardCounty estimate
Marble City70.04.1Moderately hardCounty estimate
Pryor108.06.3Moderately hardCounty estimate
Kiefer183.010.7Very hardCounty estimate
Idabel19.51.1SoftCounty estimate
Vinita230.513.5Very hardCounty estimate
Heavener36.72.1SoftCounty estimate
Keota132.07.7HardCounty estimate
Achille235.013.7Very hardCounty estimate
Broken Bow19.51.1SoftCounty estimate
Guymon254.014.8Very hardCounty estimate
Gene Autry242.014.2Very hardCounty estimate
Marietta296.017.3Very hardCounty estimate
Springer242.014.2Very hardCounty estimate
Calera235.013.7Very hardCounty estimate
Spiro36.72.1SoftCounty estimate
Howe36.72.1SoftCounty estimate
Colbert235.013.7Very hardCounty estimate
Panama36.72.1SoftCounty estimate
Cleveland220.012.9Very hardCounty estimate
Guthrie344.020.1Very hardCounty estimate
Okmulgee68.04.0Moderately hardCounty estimate
Beggs68.04.0Moderately hardCounty estimate
Bokoshe36.72.1SoftCounty estimate
Coweta119.07.0Moderately hardCounty estimate
Cameron36.72.1SoftCounty estimate
Pocola36.72.1SoftCounty estimate
Shady Point36.72.1SoftCounty estimate
Blackwell422.024.7Very hardCounty estimate
Stilwell114.06.7Moderately hardCounty estimate
Tuttle700.040.9Very hardCounty estimate
Bokchito235.013.7Very hardCounty estimate
Addington230.013.4Very hardCounty estimate
Burneyville296.017.3Very hardCounty estimate
Hastings443.525.9Very hardCounty estimate
Healdton242.014.2Very hardCounty estimate
Ringling230.013.4Very hardCounty estimate
Ryan230.013.4Very hardCounty estimate
Waurika230.013.4Very hardCounty estimate
Wilson242.014.2Very hardCounty estimate
Checotah150.08.8HardCounty estimate
Poteau36.72.1SoftCounty estimate
Blanchard700.040.9Very hardCounty estimate
Newcastle402.023.5Very hardCounty estimate
Ketchum230.513.5Very hardCounty estimate
Oologah131.07.7HardCounty estimate
Talala131.07.7HardCounty estimate
Piedmont463.027.1Very hardCounty estimate
Elgin152.58.9HardCounty estimate
Okemah99.05.8Moderately hardCounty estimate
Skiatook170.09.9HardCounty estimate
Tishomingo250.014.6Very hardCounty estimate
Walters443.525.9Very hardCounty estimate
Krebs92.05.4Moderately hardCounty estimate
Muldrow70.04.1Moderately hardCounty estimate
Chouteau108.06.3Moderately hardCounty estimate
Inola131.07.7HardCounty estimate
Mead235.013.7Very hardCounty estimate
Noble179.010.5HardCounty estimate
Oakhurst111.06.5Moderately hardUtility-reported
Wilburton38.52.3SoftCounty estimate
Holdenville180.010.5HardCounty estimate
Geronimo152.58.9HardCounty estimate
Tonkawa422.024.7Very hardCounty estimate
Collinsville148.08.7HardCounty estimate
Cache152.58.9HardCounty estimate
Salina108.06.3Moderately hardCounty estimate
Porum138.08.1HardCounty estimate
Warner138.08.1HardCounty estimate
Westville114.06.7Moderately hardCounty estimate
Francis254.014.8Very hardCounty estimate
Lone Grove242.014.2Very hardCounty estimate
Arkoma36.72.1SoftCounty estimate
Hulbert95.05.6Moderately hardCounty estimate
Watonga509.029.8Very hardCounty estimate
Alderson92.05.4Moderately hardCounty estimate
Eufaula150.08.8HardCounty estimate
Redbird119.07.0Moderately hardCounty estimate
Dewey137.08.0HardCounty estimate
Harrah221.012.9Very hardCounty estimate
Amber700.040.9Very hardCounty estimate
Hartshorne92.05.4Moderately hardCounty estimate
Morris68.04.0Moderately hardCounty estimate
Red Oak38.52.3SoftCounty estimate
Fitzhugh254.014.8Very hardCounty estimate
Pocasset700.040.9Very hardCounty estimate
Langley108.06.3Moderately hardCounty estimate
Haworth19.51.1SoftCounty estimate
Roosevelt802.546.9Very hardCounty estimate
Gotebo802.546.9Very hardCounty estimate
Wewoka216.012.6Very hardCounty estimate
Quinton92.05.4Moderately hardCounty estimate
Nichols Hills134.07.8HardUtility-reported
The Village134.07.8HardUtility-reported
Perkins236.413.8Very hardCounty estimate
Minco700.040.9Very hardCounty estimate
Anadarko712.541.7Very hardCounty estimate
Apache712.541.7Very hardCounty estimate
Binger712.541.7Very hardCounty estimate
Carnegie712.541.7Very hardCounty estimate
Fletcher152.58.9HardCounty estimate
Fort Cobb712.541.7Very hardCounty estimate
Gracemont712.541.7Very hardCounty estimate
Mountain View802.546.9Very hardCounty estimate
Purcell402.023.5Very hardCounty estimate
Fanshawe36.72.1SoftCounty estimate
Pawhuska170.09.9HardCounty estimate
Spavinaw108.06.3Moderately hardCounty estimate
Strang108.06.3Moderately hardCounty estimate
Bristow231.513.5Very hardComputed from Ca+Mg
Adair108.06.3Moderately hardCounty estimate
Chelsea131.07.7HardCounty estimate
Indiahoma152.58.9HardCounty estimate
Henryetta68.04.0Moderately hardCounty estimate
Ravia250.014.6Very hardCounty estimate
Perry254.014.8Very hardCounty estimate
Milburn250.014.6Very hardCounty estimate
Mcloud140.08.2HardCounty estimate
Kinta132.07.7HardCounty estimate
Mountain Park802.546.9Very hardCounty estimate
Snyder802.546.9Very hardCounty estimate
Stigler132.07.7HardCounty estimate
Whitefield132.07.7HardCounty estimate
Atoka107.06.3Moderately hardCounty estimate
Roland70.04.1Moderately hardCounty estimate
Concho463.027.1Very hardCounty estimate
Drumright183.010.7Very hardCounty estimate
Lindsay349.020.4Very hardCounty estimate
Stroud246.014.4Very hardCounty estimate
Mill Creek250.014.6Very hardCounty estimate
Fairview747.543.7Very hardCounty estimate
Catoosa131.07.7HardCounty estimate
Davis263.015.4Very hardCounty estimate
Grandfield730.042.7Very hardCounty estimate
El Reno463.027.1Very hardCounty estimate
Valliant19.51.1SoftCounty estimate
Hinton712.541.7Very hardCounty estimate
Hominy170.09.9HardCounty estimate
Muskogee138.08.1HardCounty estimate
Wainwright138.08.1HardCounty estimate
Agra246.014.4Very hardCounty estimate
Cushing236.413.8Very hardCounty estimate
Stonewall254.014.8Very hardCounty estimate
Bowlegs216.012.6Very hardCounty estimate
Seminole216.012.6Very hardCounty estimate
Jay121.07.1HardCounty estimate
Wyandotte181.010.6Very hardCounty estimate
Ninnekah700.040.9Very hardCounty estimate
Disney108.06.3Moderately hardCounty estimate
Porter119.07.0Moderately hardCounty estimate
Goodwell254.014.8Very hardCounty estimate
Prague246.014.4Very hardCounty estimate
Ochelata137.08.0HardCounty estimate
Grant146.08.5HardCounty estimate
Oktaha138.08.1HardCounty estimate
Castle99.05.8Moderately hardCounty estimate
Crowder92.05.4Moderately hardCounty estimate
Chattanooga443.525.9Very hardCounty estimate
Lexington179.010.5HardCounty estimate
Hennessey571.033.4Very hardCounty estimate
Lone Wolf802.546.9Very hardCounty estimate
Temple443.525.9Very hardCounty estimate
Thackerville296.017.3Very hardCounty estimate
Bison400.023.4Very hardCounty estimate
Waukomis400.023.4Very hardCounty estimate
Peggs95.05.6Moderately hardCounty estimate
Rentiesville150.08.8HardCounty estimate
Maysville349.020.4Very hardCounty estimate
Paoli349.020.4Very hardCounty estimate
Wayne402.023.5Very hardCounty estimate
Schulter68.04.0Moderately hardCounty estimate
Garvin19.51.1SoftCounty estimate
Randlett443.525.9Very hardCounty estimate
Billings254.014.8Very hardCounty estimate
Monroe36.72.1SoftCounty estimate
Hooker254.014.8Very hardCounty estimate
Jennings183.010.7Very hardCounty estimate
Terlton220.012.9Very hardCounty estimate
Haskell138.08.1HardCounty estimate
Taft138.08.1HardCounty estimate
Savanna92.05.4Moderately hardCounty estimate
Fairland181.010.6Very hardCounty estimate
Fort Gibson138.08.1HardCounty estimate
Union City463.027.1Very hardCounty estimate
Preston68.04.0Moderately hardCounty estimate
Wynnewood349.020.4Very hardCounty estimate
Langston344.020.1Very hardCounty estimate
Whitesboro36.72.1SoftCounty estimate
Cookson95.05.6Moderately hardCounty estimate
Cherokee815.047.7Very hardCounty estimate
Marshall400.023.4Very hardCounty estimate
Mulhall344.020.1Very hardCounty estimate
Orlando254.014.8Very hardCounty estimate
Hobart802.546.9Very hardCounty estimate
Stratford349.020.4Very hardCounty estimate
Beaver560.032.8Very hardCounty estimate
Fairfax170.09.9HardCounty estimate
Caddo235.013.7Very hardCounty estimate
Caney107.06.3Moderately hardCounty estimate
Devol443.525.9Very hardCounty estimate
Loveland730.042.7Very hardCounty estimate
Shidler170.09.9HardCounty estimate
Talihina38.52.3SoftCounty estimate
Wagoner119.07.0Moderately hardCounty estimate
Boise City260.015.2Very hardCounty estimate
Konawa216.012.6Very hardCounty estimate
Oilton183.010.7Very hardCounty estimate
Afton121.07.1HardCounty estimate
Mooreland640.037.4Very hardCounty estimate
Wellston246.014.4Very hardCounty estimate
Allen254.014.8Very hardCounty estimate
Council Hill150.08.8HardCounty estimate
Rush Springs700.040.9Very hardCounty estimate
Sulphur263.015.4Very hardCounty estimate
Geary509.029.8Very hardCounty estimate
Barnsdall170.09.9HardCounty estimate
Okeene509.029.8Very hardCounty estimate
Yale236.413.8Very hardCounty estimate
Chandler246.014.4Very hardCounty estimate
Douglas400.023.4Very hardCounty estimate
Enid400.023.4Very hardCounty estimate
Fairmont400.023.4Very hardCounty estimate
Garber400.023.4Very hardCounty estimate
Hunter400.023.4Very hardCounty estimate
Clayton22.01.3SoftCounty estimate
Macomb140.08.2HardCounty estimate
Shattuck385.022.5Very hardCounty estimate
Webbers Falls138.08.1HardCounty estimate
Wetumka180.010.5HardCounty estimate
Cyril712.541.7Very hardCounty estimate
Crescent344.020.1Very hardCounty estimate
Stuart180.010.5HardCounty estimate
Maud140.08.2HardCounty estimate
Okarche463.027.1Very hardCounty estimate
Okay119.07.0Moderately hardCounty estimate
Elmore City349.020.4Very hardCounty estimate
Stringtown107.06.3Moderately hardCounty estimate
Welch230.513.5Very hardCounty estimate
Laverne560.032.8Very hardCounty estimate
Hydro712.541.7Very hardCounty estimate
Meeker246.014.4Very hardCounty estimate
Braggs138.08.1HardCounty estimate
Boley99.05.8Moderately hardCounty estimate
Newkirk422.024.7Very hardCounty estimate
Weleetka99.05.8Moderately hardCounty estimate
Velma290.017.0Very hardCounty estimate
Texhoma254.014.8Very hardCounty estimate
Braman422.024.7Very hardCounty estimate
Woodward640.037.4Very hardCounty estimate
Cashion571.033.4Very hardCounty estimate
Copan137.08.0HardCounty estimate
Ramona137.08.0HardCounty estimate
Fittstown254.014.8Very hardCounty estimate
Davenport246.014.4Very hardCounty estimate
Hendrix235.013.7Very hardCounty estimate
Kemp235.013.7Very hardCounty estimate
Atwood180.010.5HardCounty estimate
Leedey706.041.3Very hardCounty estimate
Wright City19.51.1SoftCounty estimate
Sterling152.58.9HardCounty estimate
Millerton19.51.1SoftCounty estimate
Mutual640.037.4Very hardCounty estimate
Coalgate130.07.6HardCounty estimate
Proctor95.05.6Moderately hardCounty estimate
Verden700.040.9Very hardCounty estimate
Luther221.012.9Very hardCounty estimate
Carney246.014.4Very hardCounty estimate
Alex700.040.9Very hardCounty estimate
Gans70.04.1Moderately hardCounty estimate
Hammon706.041.3Very hardCounty estimate
McCurtain132.07.7HardCounty estimate
Depew183.010.7Very hardCounty estimate
Dibble402.023.5Very hardCounty estimate
Locust Grove108.06.3Moderately hardCounty estimate
Cement712.541.7Very hardCounty estimate
Wann207.512.1Very hardCounty estimate
Marland254.014.8Very hardCounty estimate
Hodgen36.72.1SoftCounty estimate
Pawnee220.012.9Very hardCounty estimate
Nicoma Park221.012.9Very hardCounty estimate
Turpin560.032.8Very hardCounty estimate
Sparks246.014.4Very hardCounty estimate
Deer Creek435.025.4Very hardCounty estimate
Medford435.025.4Very hardCounty estimate
Muse36.72.1SoftCounty estimate
Clarita130.07.6HardCounty estimate
Osage170.09.9HardCounty estimate
Cromwell216.012.6Very hardCounty estimate
Fort Supply385.022.5Very hardCounty estimate
Big Cabin230.513.5Very hardCounty estimate
Eakly712.541.7Very hardCounty estimate
Hardesty254.014.8Very hardCounty estimate
Dougherty263.015.4Very hardCounty estimate
Cheyenne706.041.3Very hardCounty estimate
Lamar180.010.5HardCounty estimate
Buffalo490.028.6Very hardCounty estimate
Sharon640.037.4Very hardCounty estimate
Hallett220.012.9Very hardCounty estimate
Kenefic250.014.6Very hardCounty estimate
Glencoe236.413.8Very hardCounty estimate
Slick183.010.7Very hardCounty estimate
Adams254.014.8Very hardCounty estimate
Ardmore242.014.2Very hardCounty estimate
Faxon152.58.9HardCounty estimate
Keyes260.015.2Very hardCounty estimate
Miami181.010.6Very hardCounty estimate
Kansas121.07.1HardCounty estimate
Lehigh130.07.6HardCounty estimate
Pond Creek435.025.4Very hardCounty estimate
Ratliff City242.014.2Very hardCounty estimate
Sperry170.09.9HardCounty estimate
Vera137.08.0HardCounty 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 Oklahoma's Water Hardness

Oklahoma sits in the Great Plains and interior lowlands region.

The Great Plains and interior lowlands are underlain by carbonate rock, gypsum, and other evaporite deposits, and the semi-arid climate concentrates dissolved minerals rather than flushing them out. Aquifers like the High Plains (Ogallala) yield water the USGS classifies as hard to very hard across most of the region, from the Dakotas down through Texas. Surface-water systems fed by plains rivers carry much of the same mineral load.

Source: USGS - High Plains aquifer

Oklahoma Water Hardness FAQ

Does Oklahoma have hard water?

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

How hard is tap water in Oklahoma?

Across the 12 Oklahoma cities with measured values in our index, the median hardness is 135.0 mg/L (7.9 gpg) — hard on the USGS scale. Individual cities range from 88.4 to 231.5 mg/L, so check your own city rather than assuming the state number.

Which city in Oklahoma has the hardest water?

Bristow has the hardest measured tap water in our Oklahoma index at 231.5 mg/L (13.5 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 Oklahoma?

8 of Oklahoma's 12 measured cities (67%) 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 Oklahoma 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.