Methodology and sources
Every hardness value on this site is transcribed from a named document — usually the annual consumer confidence report (CCR) that community water systems are required to publish, and occasionally a state primacy agency dataset or a direct written response from a utility. The document name and, where a stable link exists, its URL appear on the record.
Unit conversion
Where a report gives mg/L as calcium carbonate, grains per gallon are derived by dividing by 17.1 and rounding to one decimal. Where a report gives grains, the mg/L figure is derived the other way. No other transformation is applied; ranges are recorded as ranges rather than collapsed to a midpoint unless the utility itself publishes an average.
Service areas, not municipal boundaries
Hardness is measured at treatment plants and distribution entry points, so a figure describes a water system rather than a town. Several municipalities served by one system therefore share one number, and a town split between two systems can legitimately have two. Where that happens the record notes it instead of averaging the values.
Empty fields are deliberate
If a figure has not been read from a source document it is left blank. Nothing on this site is modelled, interpolated from neighbouring towns, or estimated from geology. A blank hardness field means the data has not been verified yet — not that the water is soft.
Corrections
Utilities revise reports and systems change sources. If a figure here disagrees with a current report, the current report wins; corrections update the underlying record and every page that reads from it. Send documentation and the record will be revised with the newer source cited.
Independence
softwater.io is a data resource. Pages carry a clearly separated referral to a local water treatment provider, and that relationship has no bearing on the figures published or on how any town is classified — the classification is a mechanical application of the USGS thresholds described in understanding hard water.