Water Hardness in Oregon
Across 49 measured cities — with 176 more covered by labeled county-level estimates — Oregon's median tap water hardness is 22.7 mg/L (1.3 gpg): soft 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.
Oregon Cities by Hardness Category
Measured cities only — labeled county estimates never enter the category counts or the median.
| Category | Range | Measured cities | Share |
|---|---|---|---|
| Soft | 0-60 mg/L | 42 | 85.7% |
| Moderately hard | 60-120 mg/L | 7 | 14.3% |
| Hard | 120-180 mg/L | 0 | 0.0% |
| Very hard | >180 mg/L | 0 | 0.0% |
Hardest and Softest Water in Oregon
Measured values only; labeled county estimates and values under active dispute never rank.
Hardest water in Oregon
- Milwaukie — 120.0 mg/L (7.0 gpg), moderately hard
- Keizer — 95.2 mg/L (5.6 gpg), moderately hard
- The Dalles — 78.5 mg/L (4.6 gpg), moderately hard
- Fairview — 69.8 mg/L (4.1 gpg), moderately hard
- Troutdale — 69.8 mg/L (4.1 gpg), moderately hard
Softest water in Oregon
- Maywood Park — 14.3 mg/L (0.8 gpg), soft
- Four Corners — 15.9 mg/L (0.9 gpg), soft
- Hayesville — 15.9 mg/L (0.9 gpg), soft
- Salem — 15.9 mg/L (0.9 gpg), soft
- Seaside — 16.3 mg/L (0.9 gpg), soft
Every Covered City in Oregon
All 225 covered Oregon 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.
| City | Hardness (mg/L) | gpg | Category | Data |
|---|---|---|---|---|
| West Haven-Sylvan | 20.9 | 1.2 | Soft | Utility-reported |
| Portland | 19.6 | 1.1 | Soft | Utility-reported |
| Dunthorpe | 17.8 | 1.0 | Soft | Utility-reported |
| Maywood Park | 14.3 | 0.8 | Soft | Utility-reported |
| West Slope | 34.6 | 2.0 | Soft | Utility-reported |
| Hillsboro | 24.4 | 1.4 | Soft | Utility-reported |
| Raleigh Hills | 34.6 | 2.0 | Soft | Utility-reported |
| Beaverton | 34.6 | 2.0 | Soft | Utility-reported |
| Cedar Hills | 34.6 | 2.0 | Soft | Utility-reported |
| Marlene Village | 34.6 | 2.0 | Soft | Utility-reported |
| Oak Hills | 34.6 | 2.0 | Soft | Utility-reported |
| Garden Home-Whitford | 22.6 | 1.3 | Soft | Utility-reported |
| Aloha | 22.6 | 1.3 | Soft | Utility-reported |
| Bethany | 22.6 | 1.3 | Soft | Utility-reported |
| Cedar Mill | 22.6 | 1.3 | Soft | Utility-reported |
| Rockcreek | 22.6 | 1.3 | Soft | Utility-reported |
| Four Corners | 15.9 | 0.9 | Soft | Utility-reported |
| Hayesville | 15.9 | 0.9 | Soft | Utility-reported |
| Salem | 15.9 | 0.9 | Soft | Utility-reported |
| Eugene | 19.0 | 1.1 | Soft | Utility-reported |
| River Road | 19.0 | 1.1 | Soft | Utility-reported |
| Santa Clara | 19.0 | 1.1 | Soft | Utility-reported |
| Gresham | 69.5 | 4.1 | Moderately hard | Utility-reported |
| Oatfield | 56.2 | 3.3 | Soft | Utility-reported |
| Gladstone | 22.7 | 1.3 | Soft | Utility-reported |
| Central Point | 145.0 | 8.5 | Hard | County estimate |
| Johnson City | 22.7 | 1.3 | Soft | Utility-reported |
| Bend | 32.1 | 1.9 | Soft | Utility-reported |
| Tetherow | 32.9 | 1.9 | Soft | Utility-reported |
| Medford | 145.0 | 8.5 | Hard | County estimate |
| White City | 145.0 | 8.5 | Hard | County estimate |
| Wood Village | 69.8 | 4.1 | Moderately hard | Utility-reported |
| Jennings Lodge | 22.7 | 1.3 | Soft | Utility-reported |
| Happy Valley | 24.2 | 1.4 | Soft | County estimate |
| Durham | 21.9 | 1.3 | Soft | Utility-reported |
| Wilsonville | 24.2 | 1.4 | Soft | County estimate |
| Troutdale | 69.8 | 4.1 | Moderately hard | Utility-reported |
| Oregon City | 22.7 | 1.3 | Soft | Utility-reported |
| Fairview | 69.8 | 4.1 | Moderately hard | Utility-reported |
| Metzger | 21.9 | 1.3 | Soft | Utility-reported |
| West Linn | 22.6 | 1.3 | Soft | Utility-reported |
| Bull Mountain | 21.9 | 1.3 | Soft | Utility-reported |
| Tigard | 21.9 | 1.3 | Soft | Utility-reported |
| Corvallis | 27.1 | 1.6 | Soft | Utility-reported |
| Albany | 24.9 | 1.5 | Soft | County estimate |
| Damascus | 24.2 | 1.4 | Soft | County estimate |
| Deschutes River Woods | 32.2 | 1.9 | Soft | Utility-reported |
| Oak Grove | 22.7 | 1.3 | Soft | Utility-reported |
| Keizer | 95.2 | 5.6 | Moderately hard | Utility-reported |
| Coos Bay | 55.3 | 3.2 | Soft | County estimate |
| Rivergrove | 26.3 | 1.5 | Soft | Utility-reported |
| Roseburg | 65.5 | 3.8 | Moderately hard | County estimate |
| Tualatin | 77.0 | 4.5 | Moderately hard | County estimate |
| Newberg | 53.8 | 3.1 | Soft | County estimate |
| Woodburn | 84.4 | 4.9 | Moderately hard | County estimate |
| Forest Grove | 41.8 | 2.4 | Soft | Utility-reported |
| Ashland | 30.7 | 1.8 | Soft | Utility-reported |
| Milwaukie | 120.0 | 7.0 | Moderately hard | Utility-reported |
| Lincoln City | 34.3 | 2.0 | Soft | County estimate |
| Hermiston | 155.0 | 9.1 | Hard | County estimate |
| Sherwood | 77.0 | 4.5 | Moderately hard | County estimate |
| Canby | 24.2 | 1.4 | Soft | County estimate |
| Pendleton | 155.0 | 9.1 | Hard | County estimate |
| The Dalles | 78.5 | 4.6 | Moderately hard | Utility-reported |
| Dallas | 28.1 | 1.6 | Soft | County estimate |
| Astoria | 36.0 | 2.1 | Soft | County estimate |
| Lebanon | 24.9 | 1.5 | Soft | County estimate |
| Winston | 65.5 | 3.8 | Moderately hard | County estimate |
| Florence | 18.3 | 1.1 | Soft | County estimate |
| Ontario | 278.0 | 16.3 | Very hard | County estimate |
| Beavercreek | 24.2 | 1.4 | Soft | County estimate |
| Monmouth | 28.1 | 1.6 | Soft | County estimate |
| La Grande | 45.1 | 2.6 | Soft | County estimate |
| St. Helens | 50.3 | 2.9 | Soft | County estimate |
| Cornelius | 77.0 | 4.5 | Moderately hard | County estimate |
| Sandy | 24.2 | 1.4 | Soft | County estimate |
| Prineville | 94.8 | 5.5 | Moderately hard | County estimate |
| Silverton | 84.4 | 4.9 | Moderately hard | County estimate |
| Cottage Grove | 18.3 | 1.1 | Soft | County estimate |
| Independence | 28.1 | 1.6 | Soft | County estimate |
| Newport | 34.3 | 2.0 | Soft | County estimate |
| Baker City | 117.0 | 6.8 | Moderately hard | County estimate |
| Eagle Point | 145.0 | 8.5 | Hard | County estimate |
| Sweet Home | 24.9 | 1.5 | Soft | County estimate |
| Molalla | 24.2 | 1.4 | Soft | County estimate |
| Warrenton | 36.0 | 2.1 | Soft | County estimate |
| Stayton | 84.4 | 4.9 | Moderately hard | County estimate |
| Umatilla | 155.0 | 9.1 | Hard | County estimate |
| Brookings | 26.5 | 1.6 | Soft | County estimate |
| Myrtle Creek | 65.5 | 3.8 | Moderately hard | County estimate |
| Seaside | 16.3 | 0.9 | Soft | Utility-reported |
| Springfield | 18.3 | 1.1 | Soft | County estimate |
| Talent | 145.0 | 8.5 | Hard | County estimate |
| Seal Rock | 34.3 | 2.0 | Soft | County estimate |
| Gleneden Beach | 34.3 | 2.0 | Soft | County estimate |
| Creswell | 18.3 | 1.1 | Soft | County estimate |
| Sisters | 24.9 | 1.5 | Soft | County estimate |
| Phoenix | 145.0 | 8.5 | Hard | County estimate |
| Reedsport | 65.5 | 3.8 | Moderately hard | County estimate |
| Philomath | 37.6 | 2.2 | Soft | County estimate |
| Aumsville | 84.4 | 4.9 | Moderately hard | County estimate |
| Coquille | 55.3 | 3.2 | Soft | County estimate |
| Madras | 48.0 | 2.8 | Soft | County estimate |
| Warm Springs | 82.4 | 4.8 | Moderately hard | County estimate |
| Harrisburg | 24.9 | 1.5 | Soft | County estimate |
| Mount Angel | 84.4 | 4.9 | Moderately hard | County estimate |
| Mt. Angel | 84.4 | 4.9 | Moderately hard | County estimate |
| Boring | 24.2 | 1.4 | Soft | County estimate |
| Toledo | 34.3 | 2.0 | Soft | County estimate |
| Hubbard | 84.4 | 4.9 | Moderately hard | County estimate |
| Oakridge | 18.3 | 1.1 | Soft | County estimate |
| Dundee | 53.8 | 3.1 | Soft | County estimate |
| Jefferson | 84.4 | 4.9 | Moderately hard | County estimate |
| Nyssa | 278.0 | 16.3 | Very hard | County estimate |
| Manzanita | 25.8 | 1.5 | Soft | County estimate |
| Junction City | 18.3 | 1.1 | Soft | County estimate |
| Bandon | 55.3 | 3.2 | Soft | County estimate |
| North Plains | 77.0 | 4.5 | Moderately hard | County estimate |
| Gold Beach | 26.5 | 1.6 | Soft | County estimate |
| Sublimity | 84.4 | 4.9 | Moderately hard | County estimate |
| Corbett | 32.6 | 1.9 | Soft | County estimate |
| Jacksonville | 145.0 | 8.5 | Hard | County estimate |
| Burns | 61.2 | 3.6 | Moderately hard | County estimate |
| Hines | 61.2 | 3.6 | Moderately hard | County estimate |
| Myrtle Point | 55.3 | 3.2 | Soft | County estimate |
| Dayton | 53.8 | 3.1 | Soft | County estimate |
| Gervais | 84.4 | 4.9 | Moderately hard | County estimate |
| Cave Junction | 73.4 | 4.3 | Moderately hard | County estimate |
| Rogue River | 145.0 | 8.5 | Hard | County estimate |
| Lakeview | 53.1 | 3.1 | Soft | County estimate |
| Nehalem | 25.8 | 1.5 | Soft | County estimate |
| Willamina | 53.8 | 3.1 | Soft | County estimate |
| Carlton | 53.8 | 3.1 | Soft | County estimate |
| Turner | 84.4 | 4.9 | Moderately hard | County estimate |
| Waldport | 34.3 | 2.0 | Soft | County estimate |
| Clatskanie | 50.3 | 2.9 | Soft | County estimate |
| Union | 45.1 | 2.6 | Soft | County estimate |
| Stanfield | 155.0 | 9.1 | Hard | County estimate |
| Vernonia | 50.3 | 2.9 | Soft | County estimate |
| Brownsville | 24.9 | 1.5 | Soft | County estimate |
| Banks | 77.0 | 4.5 | Moderately hard | County estimate |
| Irrigon | 231.0 | 13.5 | Very hard | County estimate |
| Columbia City | 50.3 | 2.9 | Soft | County estimate |
| Enterprise | 48.1 | 2.8 | Soft | County estimate |
| Rainier | 50.3 | 2.9 | Soft | County estimate |
| Vale | 278.0 | 16.3 | Very hard | County estimate |
| Mill City | 24.9 | 1.5 | Soft | County estimate |
| Lakeside | 55.3 | 3.2 | Soft | County estimate |
| John Day | 94.6 | 5.5 | Moderately hard | County estimate |
| Amity | 53.8 | 3.1 | Soft | County estimate |
| Elgin | 45.1 | 2.6 | Soft | County estimate |
| Cannon Beach | 36.0 | 2.1 | Soft | County estimate |
| Rickreall | 28.1 | 1.6 | Soft | County estimate |
| La Pine | 32.4 | 1.9 | Soft | County estimate |
| Terrebonne | 32.4 | 1.9 | Soft | County estimate |
| Canyonville | 65.5 | 3.8 | Moderately hard | County estimate |
| Colton | 24.2 | 1.4 | Soft | County estimate |
| Welches | 24.2 | 1.4 | Soft | County estimate |
| Lake Oswego | 26.3 | 1.5 | Soft | Utility-reported |
| Siletz | 34.3 | 2.0 | Soft | County estimate |
| Bay City | 25.8 | 1.5 | Soft | County estimate |
| Rockaway Beach | 25.8 | 1.5 | Soft | County estimate |
| Cascade Locks | 33.3 | 1.9 | Soft | County estimate |
| Depoe Bay | 34.3 | 2.0 | Soft | County estimate |
| Riddle | 65.5 | 3.8 | Moderately hard | County estimate |
| Pilot Rock | 155.0 | 9.1 | Hard | County estimate |
| Lowell | 18.3 | 1.1 | Soft | County estimate |
| Gold Hill | 145.0 | 8.5 | Hard | County estimate |
| Glide | 65.5 | 3.8 | Moderately hard | County estimate |
| Neskowin | 25.8 | 1.5 | Soft | County estimate |
| Heppner | 231.0 | 13.5 | Very hard | County estimate |
| Athena | 155.0 | 9.1 | Hard | County estimate |
| Joseph | 48.1 | 2.8 | Soft | County estimate |
| Drain | 65.5 | 3.8 | Moderately hard | County estimate |
| Yamhill | 53.8 | 3.1 | Soft | County estimate |
| Yoncalla | 65.5 | 3.8 | Moderately hard | County estimate |
| Falls City | 28.1 | 1.6 | Soft | County estimate |
| Pacific City | 25.8 | 1.5 | Soft | County estimate |
| Yachats | 18.3 | 1.1 | Soft | County estimate |
| Port Orford | 26.5 | 1.6 | Soft | County estimate |
| Scio | 24.9 | 1.5 | Soft | County estimate |
| Garibaldi | 25.8 | 1.5 | Soft | County estimate |
| Halsey | 24.9 | 1.5 | Soft | County estimate |
| Mulino | 24.2 | 1.4 | Soft | County estimate |
| Marcola | 18.3 | 1.1 | Soft | County estimate |
| Dufur | 82.4 | 4.8 | Moderately hard | County estimate |
| Mapleton | 18.3 | 1.1 | Soft | County estimate |
| Tygh Valley | 82.4 | 4.8 | Moderately hard | County estimate |
| Clackamas | 24.2 | 1.4 | Soft | County estimate |
| Cove | 45.1 | 2.6 | Soft | County estimate |
| St. Paul | 84.4 | 4.9 | Moderately hard | County estimate |
| Mosier | 82.4 | 4.8 | Moderately hard | County estimate |
| Huntington | 117.0 | 6.8 | Moderately hard | County estimate |
| North Powder | 45.1 | 2.6 | Soft | County estimate |
| Scotts Mills | 84.4 | 4.9 | Moderately hard | County estimate |
| Haines | 117.0 | 6.8 | Moderately hard | County estimate |
| Shady Cove | 145.0 | 8.5 | Hard | County estimate |
| Arch Cape | 36.0 | 2.1 | Soft | County estimate |
| Kerby | 73.4 | 4.3 | Moderately hard | County estimate |
| Wheeler | 25.8 | 1.5 | Soft | County estimate |
| Lyons | 84.4 | 4.9 | Moderately hard | County estimate |
| Dorena | 18.3 | 1.1 | Soft | County estimate |
| Westfir | 18.3 | 1.1 | Soft | County estimate |
| Redmond | 32.4 | 1.9 | Soft | County estimate |
| Imbler | 45.1 | 2.6 | Soft | County estimate |
| Camp Sherman | 48.0 | 2.8 | Soft | County estimate |
| Halfway | 117.0 | 6.8 | Moderately hard | County estimate |
| Langlois | 26.5 | 1.6 | Soft | County estimate |
| Tangent | 24.9 | 1.5 | Soft | County estimate |
| Dexter | 18.3 | 1.1 | Soft | County estimate |
| Sumpter | 94.6 | 5.5 | Moderately hard | County estimate |
| Gaston | 77.0 | 4.5 | Moderately hard | County estimate |
| Adrian | 278.0 | 16.3 | Very hard | County estimate |
| Jordan Valley | 278.0 | 16.3 | Very hard | County estimate |
| Richland | 117.0 | 6.8 | Moderately hard | County estimate |
| Otis | 34.3 | 2.0 | Soft | County estimate |
| Scappoose | 50.3 | 2.9 | Soft | County estimate |
| Elmira | 18.3 | 1.1 | Soft | County estimate |
| Oxbow | 117.0 | 6.8 | Moderately hard | County estimate |
| Unity | 117.0 | 6.8 | Moderately hard | County estimate |
| Aurora | 84.4 | 4.9 | Moderately hard | County estimate |
| Eagle Creek | 24.2 | 1.4 | Soft | County estimate |
| Prospect | 145.0 | 8.5 | Hard | County estimate |
| Donald | 84.4 | 4.9 | Moderately hard | County estimate |
| Grand Ronde | 53.8 | 3.1 | Soft | County 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 Oregon's Water Hardness
Oregon sits in the Pacific maritime volcanic terrain region.
The Pacific Northwest, Alaska, and Hawaii share young volcanic bedrock - basalt and other igneous rock with little carbonate to dissolve - and most supplies come from heavy rainfall, snowmelt, or fast-recharging volcanic aquifers. Water simply does not stay in contact with soluble carbonate long enough to harden. That is why the USGS maps these states among the softest in the nation.
Oregon Water Hardness FAQ
Does Oregon have hard water?
On the whole, no — Oregon's statewide median sits below the hard threshold, though some cities run harder. The median is 22.7 mg/L (1.3 gpg) — soft on the USGS scale, where anything above 120 mg/L (7 gpg) counts as hard. 0 of Oregon's 49 measured cities fall in the hard or very hard bands (0%), so check your own city rather than the state average.
How hard is tap water in Oregon?
Across the 49 Oregon cities with measured values in our index, the median hardness is 22.7 mg/L (1.3 gpg) — soft on the USGS scale. Individual cities range from 14.3 to 120.0 mg/L, so check your own city rather than assuming the state number.
Which city in Oregon has the hardest water?
Milwaukie has the hardest measured tap water in our Oregon index at 120.0 mg/L (7.0 gpg) — moderately 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 Oregon?
0 of Oregon's 49 measured cities (0%) 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 Oregon 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.