Water hardness / Dallas

Is Dallas water hard?

In many areas, yes. Dallas tap water measures 120 to 155 mg/L of hardness as calcium carbonate, which is moderately hard to hard on the USGS scale. It is the range Dallas Water Utilities publishes in its December 2023 memo to the Quality of Life Committee, which gives no average.

120 to 155 mg/L moderately hard to hard · December 2023 memo to the Quality of Life Committee

What it means for curly hair

Calcium and magnesium from hard water settle on the hair. Lab work shows hair takes up a limited amount of these minerals, and damaged or bleached hair takes up more than healthy hair (Evans, Marsh and Wickett, 2011).

The evidence on breakage is mixed: two small studies found lower strength after repeated hard-water rinses (Luqman et al., 2016 and 2018), while an earlier one found no clear difference (Srinivasan et al., 2013). So hard water is a likely factor, not a proven cause.

What people commonly notice is curls that look dull, feel stiff or straw-like, and products that seem to work less than they used to.

What to do

What not to do

Check it yourself

The Dallas Water Utilities report is public: December 2023 memo to the Quality of Life Committee. Hardness can vary by area and season, and private wells or buildings with their own treatment can differ. If you want your exact value, ask the utility for your address.

Where the number comes from

Do we have hard water? Yes. Dallas' water hardness ranges from 120 to 155 mg/L as CaCO3 (City of Dallas memorandum, December 1, 2023). Classified with the US Geological Survey bands (soft 0 to 60, moderately hard 61 to 120, hard 121 to 180, very hard above 180 mg/L). Period: 2023. Checked against the source on 2026-10-16. Rizzado did not measure this water.

Sources

All cities · Phoenix · Las Vegas · Henderson · San Diego · Los Angeles · Long Beach · Anaheim · Riverside · Houston · Fort Worth

Rizzado uses your city's water hardness, when there is a primary source, to adjust your routine. If your city is not here, it treats the value as unknown. See how Rizzado works