Your utility already published its hardness. Here it is, with the date.
Most "water hardness by ZIP code" pages are modelled guesses dressed as readings. A ZIP code is not a water system. This site does the slower, smaller thing: it reads the figure out of the utility's own water-quality report, records the report year and the units as published, converts it, and plots it on the USGS classification. 60 systems so far, because that is how many had a number someone could actually read.
- Portland, OR 9 mg/L 0.5 gpg Soft
- Boston, MA 16 mg/L 1 gpg Soft
- Manchester, NH 17.9 mg/L 1 gpg Soft
- Seattle, WA 19.1 mg/L 1.1 gpg Soft
- Raleigh, NC 25 mg/L 1.47 gpg Soft
- New York, NY 32 mg/L 2 gpg Soft
- Charlotte, NC 32 mg/L 1.9 gpg Soft
- Memphis, TN 46 mg/L 2.7 gpg Soft
- Norfolk, VA 48 mg/L 2.8 gpg Soft
- Anchorage, AK 56 mg/L 3.3 gpg Soft
- Virginia Beach, VA 56 mg/L 3.3 gpg Soft
- Oakland, CA 68.4 mg/L 4 gpg Moderately hard
- Nashville, TN 77.3 mg/L 4.5 gpg Moderately hard
- Sacramento, CA 83 mg/L 4.9 gpg Moderately hard
- Fresno, CA 89.3 mg/L 5.2 gpg Moderately hard
- Saint Paul, MN 90 mg/L 5 gpg Moderately hard
- Austin, TX 93 mg/L 5.4 gpg Moderately hard
- Minneapolis, MN 94 mg/L 5.5 gpg Moderately hard
- Washington, DC 95 mg/L 5.6 gpg Moderately hard
- Baltimore, MD 97.5 mg/L 5.7 gpg Moderately hard
- Birmingham, AL 98 mg/L 5.7 gpg Moderately hard
- Kansas City, MO 100 mg/L 5.8 gpg Moderately hard
- Denver, CO 105 mg/L 6.1 gpg Moderately hard
- Detroit, MI 107 mg/L 6.3 gpg Moderately hard
- Aurora, CO 113 mg/L 6.6 gpg Moderately hard
- Tulsa, OK 114.5 mg/L 6.7 gpg Moderately hard
- Louisville, KY 115 mg/L 6.7 gpg Moderately hard
- Columbus, OH 120 mg/L 7 gpg Moderately hard
- Cleveland, OH 120 mg/L 7 gpg Moderately hard
- Philadelphia, PA 125 mg/L 7.3 gpg Hard
- Ann Arbor, MI 126 mg/L 7.4 gpg Hard
- Cincinnati, OH 133 mg/L 7.8 gpg Hard
- Chicago, IL 134.5 mg/L 7.9 gpg Hard
- Houston, TX 135.5 mg/L 7.9 gpg Hard
- Milwaukee, WI 137 mg/L 8.01 gpg Hard
- St. Louis, MO 138 mg/L 8.1 gpg Hard
- Grand Rapids, MI 142 mg/L 8.3 gpg Hard
- Fort Worth, TX 145 mg/L 8.5 gpg Hard
- Spokane, WA 159 mg/L 9.3 gpg Hard
- Honolulu, HI 162.5 mg/L 9.5 gpg Hard
- Wichita, KS 170 mg/L 9.9 gpg Hard
- Omaha, NE 170 mg/L 10 gpg Hard
- Los Angeles, CA 192 mg/L 11.2 gpg Very hard
- Lincoln, NE 192 mg/L 11.2 gpg Very hard
- Riverside, CA 197 mg/L 12 gpg Very hard
- Tampa, FL 220 mg/L 12.9 gpg Very hard
- Phoenix, AZ 237 mg/L 13.9 gpg Very hard
- Mesa, AZ 239.4 mg/L 14 gpg Very hard
- Round Rock, TX 258 mg/L 15.1 gpg Very hard
- Pflugerville, TX 267 mg/L 15.6 gpg Very hard
- San Diego, CA 276 mg/L 16 gpg Very hard
- Las Vegas, NV 280 mg/L 16 gpg Very hard
- Chandler, AZ 282.2 mg/L 16.5 gpg Very hard
- San Antonio, TX 299.3 mg/L 17.5 gpg Very hard
- Anaheim, CA 300 mg/L 18 gpg Very hard
- Henderson, NV 304 mg/L 18 gpg Very hard
- Indianapolis, IN 317 mg/L 19 gpg Very hard
- Madison, WI 324.9 mg/L 19 gpg Very hard
- Scottsdale, AZ 352.5 mg/L 20.6 gpg Very hard
- Salt Lake City, UT 353.5 mg/L 20.7 gpg Very hard
mg/L as calcium carbonate. Each classification band is drawn the same width, so the axis is not linear in mg/L.
What a page here is made of
The report's own words
Each utility page quotes the hardness line as transcribed from the source, so you can see whether you are looking at an average, a maximum, or a range across a whole system.
Both units, with the arithmetic
Reports use mg/L, ppm, and occasionally ppb. Softeners use grains per gallon. Every page shows the conversion at 17.1 mg/L per grain rather than just the answer.
The classification, cited
Soft, moderately hard, hard and very hard are the USGS bands, quoted and linked. Where a utility uses different band edges — New York City does — the page says so.
An honest absence
Hardness is not a regulated contaminant, so plenty of utilities publish nothing. Those are listed as gaps with what was checked, not filled in with an estimate.
Tools
Water hardness converter
ppm and mg/L to grains per gallon, German degrees, French degrees and ppb, in both directions. Every formula is printed under the tool and the USGS class updates as you type.
Targets the conversion most people arrive needing: gpg = mg/L ÷ 17.1.
Softener grain capacity calculator
Hardness, people, gallons per person per day and days between regenerations, to the grain rating you need. Every assumption is a labelled, editable field, and the five arithmetic steps are shown with their running totals.
Exports CSV with each input marked input or assumption.
Start from your own report
If your utility is not among the 60 here, the figure may still exist. Start by finding which water system serves you — one free EPA search names it, a second finds its annual report — and then how to read a water quality report covers where hardness hides, which column heading you are reading, and when to stop looking and phone the utility instead. On a private well there is no report at all, which is a different problem.
Guides
-
How to read a water quality report
Hardness has no health standard, so it appears in a report only by choice. Here is where to look, and how to read a range.
-
Appliance guides, October 17, 2026
Bosch Dishwasher Water Hardness Setting: H:00 to H:07
Bosch dishwasher water hardness setting, from your utility's figure: up to 110 mg/L is H:00 (no salt). Full US table, steps, and 10 real utilities.
-
Unit guides, October 17, 2026
Calcium vs Magnesium Hardness: How Total Is Built
Calcium vs magnesium hardness: total hardness = 2.497 × calcium + 4.118 × magnesium, as CaCO3. Worked on Denver and Las Vegas figures, with the caveats.
-
Appliance guides, October 17, 2026
Hard Water and Water Heaters: Scale, Limits, Upkeep
Hard water and water heaters: what scale is, the 7 gpg limit in two tankless warranties, how often makers say to flush, and where ten US systems sit.