Soft on the west side of the Cascades, where the Bull Run, McKenzie and Clackamas surface sources feed Portland, Eugene and the metro. East of the mountains the sources shift to Deschutes and Klamath basin groundwater, yet Bend's volcanic-aquifer supply publishes soft as well.
HOW IT BREAKS DOWNsoft (Portland, Bend, Eugene); 2 of 5 covered cities publish no figure
Portland water from Bull Run is soft, at a published 7–68 mg/L (soft to moderately hard). This means lower-sash mineral etching is essentially absent on Willamette Valley routes. Cross the Cascades and the climate flips, but the water does not: Bend publishes soft water.
Oregon spans 2 hardness bands, which means there is no single answer for the whole state — the method changes as you move across it. Both ends are below.
Tap water is clean enough to be the last thing that touches the glass. Wash with it, rinse with it, squeegee it off, and nothing measurable is left behind when it dries. No distilled rinse, no deionized final pass, no spot-free rinse aid — the mineral load is too low to precipitate anything you would see. The failure mode at this end of the scale is not water chemistry, it is technique: streaks here come from a worn rubber, a dirty edge, or a pass that dried before it was pulled.
Tap water is still fine for most residential glass, with two exceptions worth knowing. Dark glass shows a faint mineral haze that lighter glass hides, and glass that is hot enough to flash the water off before you pull the squeegee will spot regardless of how soft the supply is. On both, a distilled final rinse costs about a dollar a window and removes the variable entirely. Everywhere else at this level, the water is not what is wrong.
Hardest first — the order that matters, because the hard end is where the method has to change. Each figure is the named utility's own published number; cities whose utility publishes none are listed after them, without a band. Within Oregon the spread runs from Eugene at 16–18 mg/L to Portland at 7–68 mg/L — a difference big enough that the same bottle of cleaner behaves differently in each.
Where Oregon's city pages sit in the national city rankings: hardness rank out of 185 cities whose utility publishes a figure, dissolved-solids rank out of 100, the disinfectant each utility reports, and the months each city's cleaning calendar marks for a wash. Rank 1 is the hardest or most mineral-heavy. 2 of these 5 cities use chloramine.
| CITY | HARDNESS RANK | TDS RANK | DISINFECTANT | WASH IN |
|---|---|---|---|---|
| Portland | 158 / 1857–68 mg/L | 87 / 10044–140 mg/L | chloramine | Jun |
| Bend | 174 / 18517–25 mg/L | not ranked | free chlorine | Jul |
| Eugene | 176 / 18516–18 mg/L | 99 / 10055 (range 51–61) mg/L | free chlorine | Jun |
| Gresham | not ranked | not ranked | chloramine | Jun |
| Salem | not ranked | not ranked | ozone + chlorine | Jun |
This page is about Oregon's water and nothing else. For how cleaning actually works in Oregon across the year — climate, seasonal timing, the local contaminants, the housing stock — see the Oregon cleaning guide.
For a figure at your own address rather than your city, the Hard Water Scorer takes a ZIP code. If you run a pure-water system, the TDS diagnostic reads the other end of the same problem.
Each covered city utility's own published figure, taken from its most recent annual water quality report (Consumer Confidence Report) or its water-quality page, read in 2026. A city figure is the one its utility publishes for the service area, as a single number or the range it reports; it is not a reading from any one tap. A state range runs from the lowest to the highest figure published by the utilities we cover in that state, so it brackets those cities rather than describing an average resident. A state where no covered utility publishes a figure shows a planning estimate, labelled as one.
Private wells are outside all of it. A well is whatever the rock under it says, and the only number that describes one is a test of that tap. Have a reading that disagrees with this table? Send it to us — a number that contradicts the table is worth more than one that confirms it.