Methodology and sources

This page exists so that every number on this site can be traced to a document or to an arithmetic rule, and so that the handful of editorial choices we made are visible rather than implied.

1. What counts as a source

A utility appears on this site only when a hardness value was read on that utility's own published report or official water-quality page. Nothing is modelled from geology, interpolated between cities, estimated from a neighbouring system, or taken from a third-party aggregator. Where a figure is republished by another municipality — Manchester Water Works reports are read from the Town of Salem, New Hampshire document centre, which hosts them as a Manchester customer community — the page says so and names both.

All records were retrieved on 2026-10-16. The machine-readable file with full provenance is published at /data/utilities.json.

2. The sources, one per system

UtilityDocument readReport yearUnits as publishedKind of figureRetrieved
Portland Water Bureau Portland Water Bureau 2026 Drinking Water Quality Report 2025 ppm, with grains per gallon given alongside range, no average 2026-10-16
Massachusetts Water Resources Authority (MWRA) MWRA, Frequently Asked Questions About MWRA Tap Water, 'Is MWRA Drinking Water Hard or Soft?' not stated mg/L, with gpg given alongside single value 2026-10-16
Manchester Water Works Manchester Water Works annual water quality report, Reporting Year 2022 2022 ppm average and range 2026-10-16
New York City Department of Environmental Protection (NYC DEP) New York City Drinking Water Supply and Quality Report 2025 2025 mg/L CaCO3, with grains/gallon (US) CaCO3 given in a second row average and range 2026-10-16
Austin Water Austin Water 2025 Water Quality Report 2025 ppm (mg/L), with gpg given alongside average and range 2026-10-16
Denver Water Denver Water 2026 Water Quality Report, data collected throughout 2025 2025 ppb average and range 2026-10-16
City of Phoenix Water Services Department City of Phoenix 2025 Water Quality Report 2025 ppm and grains/gallon range, no average 2026-10-16
Las Vegas Valley Water District Las Vegas Valley Water District 2026 Water Quality Summary 2026 ppm, with gpg given alongside average, no range 2026-10-16
San Antonio Water System (SAWS) SAWS Water Quality FAQs, 'What is hardness?' not stated gpg (grains per gallon) range, no average 2026-10-16
Citizens Energy Group (Indianapolis) Citizens Energy Group — Indianapolis and Morgan County Consumer Confidence Report Data 2025 2025 ppm, with grains/gal given alongside average and range 2026-10-16

3. The classification

The soft, moderately hard, hard and very hard bands come from the USGS Water Science School, retrieved 2026-10-16, in mg/L as calcium carbonate, quoted verbatim:

ClassUSGS wording
SoftSoft: 0-60 milligrams per liter (mg/L) as calcium carbonate
Moderately hardModerately hard: 61-120 mg/L as calcium carbonate
HardHard: 121-180 mg/L as calcium carbonate
Very hardVery hard: more than 180 mg/L as calcium carbonate

Other bodies publish different edges. New York City's own 2025 report footnotes hardness up to 3 grains per gallon as soft and 3 to 9 as moderately hard, which does not align with the USGS mg/L bands. This site uses the USGS bands everywhere, and where a utility's own wording differs, the utility page records the difference instead of hiding it.

4. Unit conversions

These are definitional relationships between units, not measurements, so applying them introduces no new uncertainty beyond rounding.

RelationshipFactor usedBasis
mg/L (ppm) to grains per gallon÷ 17.1One grain of CaCO₃ per US gallon. 1 grain per US gallon (gpg) of hardness as calcium carbonate = 17.1 mg/L (ppm). Austin Water's own 2025 report states the same factor ('about 17.1 ppm per gpg'), which is why this site uses 17.1 rather than the 17.118 some references carry. Where a utility published its own gpg figure, that published figure is shown as published and our converted figure is shown separately so the two can be compared.
mg/L to German degrees (°dH)÷ 17.8481 °dH = 17.848 mg/L as CaCO₃
mg/L to French degrees (°f)÷ 101 °f = 10 mg/L as CaCO₃
ppb (µg/L) to mg/L÷ 1000Metric prefix. Applied to Denver Water, which publishes hardness in ppb
ppm to mg/L1 : 1Identical in dilute aqueous solution; reports use both labels

Where a utility published its own grains-per-gallon figure, that figure is shown as published and our conversion is shown separately, so the two can be compared. Las Vegas Valley Water District publishes 280 ppm and 16 gpg; 280 ÷ 17.1 is 16.4, so the district's figure appears rounded to whole grains. Both numbers appear on its page.

5. Editorial assumptions — the ones that are ours

  1. The plotted point. A utility is positioned on the scale using its published average where one exists, and the midpoint of its published range where no average is published. Every figure labels which it is. A midpoint is a drawing decision, not a statistic the utility published, and no page states it as an average.
  2. The non-linear axis. On the hardness scale each of the four USGS classes is drawn the same width, so the classification is legible at a glance. The axis is therefore not linear in mg/L: the 0–60 soft band occupies the same space as the 180–500 very hard band. Ticks at 0, 60, 120, 180 and 500 are printed on every figure along with a note saying this. The alternative, a linear axis, crowded six of the ten systems into the leftmost eighth of the chart.
  3. The scale ceiling. The scale tops out at 500 mg/L, above the highest published value on the site (460 mg/L, the top of the Indianapolis system-wide range). Any value above 500 would be clamped to the end of the axis; none currently is.
  4. Where a range is converted. San Antonio publishes only grains per gallon, so the mg/L figures on its page are our conversion, and are labelled as such in the "whose number" column.
  5. Rounding. Values are displayed to one decimal place in mg/L and one or two in gpg. Denver Water's published average of 105,009 ppb is shown as 105.009 mg/L on its own page because dropping digits there would silently change a published figure, and as 105.0 in tables.
  6. Calculator defaults. In the grain capacity calculator, the defaults for gallons per person per day (75), days between regenerations (7), reserve allowance (20%) and usable share of nominal rating (100%) are our placeholders. They are not published figures, no source is claimed for them, every one is editable, and each field says so on screen. No per-capita water-use statistic was fetched for this build, which is precisely why that field is presented as a placeholder to replace with your own water bill.

6. What we could not get, and did not invent

Two of the large utilities checked publish no usable hardness figure. They have no page here rather than an estimated one.

UtilityPages checkedOutcome
Seattle Public Utilitieshttps://www.seattle.gov/documents/departments/spu/aboutus/reports/water%20quality/spu-drinking-water-quality-report_2025.pdf
https://www.seattle.gov/utilities/your-services/water/water-quality/analyses
No hardness line in the 2025 Drinking Water Quality Report, and the Water Quality Analyses index page did not render its quarterly-analysis links to us. SPU's quarterly surface water analyses are the likely home of the figure; this is a page to add once one of those documents can be read directly.
City of Chicago Department of Water Managementhttps://www.chicago.gov/content/dam/city/depts/water/ConsumerConfidenceReports/2021_WaterQualityReport.pdf
https://www.chicago.gov/city/en/depts/water/supp_info/Consumer_ConfidenceReports.html
https://www.chicago.gov/city/en/depts/water/supp_info/water_quality_resultsandreports/comprehensive_chemicalanalysis.html
https://311.chicago.gov/s/article/What-is-hardness-and-how-many-grains-per-gallon-GPG-are-in-the-city-s-water
The 2021 Water Quality Report carries no hardness line. The Comprehensive Chemical Analysis index and the CHI311 hardness article are rendered by scripts and returned no values or document links to us. Chicago's figure is most likely in a Comprehensive Chemical Analysis PDF; no page here until one is read.

Two documents could not be fetched at all and were worked around rather than quoted:

Also deliberately absent: any ZIP-code lookup, any hardness value for a private well, any estimate for a system whose report is silent, and any claim that the author has tested a softener, a test strip or a filter. A paid water-quality API would widen coverage, and the pSEO research for this site put that cost at a $1,000 per month minimum with a one-year contract, which is why the pilot is ten verified systems and two tools instead of a national directory.

7. Corrections

If a value here does not match its cited source, that is a bug and not a rounding preference. Every page carries the source URL, the report year and the retrieval date so the discrepancy can be traced in one click, and the raw records are at /data/utilities.json with data version 2026-10-16. Utilities revise reports; a figure correct on 2026-10-16 may be superseded.