US Water Hardness Dataset โ free CSV & JSON
The full city-level water hardness dataset behind this site, free to download and reuse under CC BY 4.0. No email, no sign-up โ every value with its source, tier, and sample date.
Data updated July 6, 2026. 16,561 cities per file; built and verified as documented in the data & methodology.
One row per city, pinned 17-column header, license and citation in # comment rows. Opens in Excel, Sheets, R, pandas.
3.0 MB ยท 16,561 cities
Download CSVThe same 17 fields as the CSV, as structured JSON, plus a _meta block (license, suggested citation, generatedAt, schemaVersion).
5.4 MB ยท 16,561 cities
Download JSONWhat's included
- 16,561 US cities (88.2% of the 18,775 cities we track, reaching 97.5% of tracked city population), one row per city.
- 6,778 cities with utility-reported hardness (tier T1), cited with the utility name and PWSID.
- 836 cities with hardness computed from utility-reported calcium and magnesium (tier T2, USGS/Standard Methods 2340 B formula).
- 8,947 cities with a labeled county ambient estimate from EPA/USGS Water Quality Portal samples (tier T3) โ always carrying the sample count behind the median.
- Cities whose tap-tier values conflict beyond tolerance are flagged
disputedwith the conflicting range โ currently 1,556 cities. The 2,214 tracked cities with no defensible value in any tier are honestly absent, never guessed.
Column dictionary
All 17 CSV columns, in file order. The JSON entries carry the same fields (optional ones are omitted instead of empty; range_min/range_max appear as a range pair).
| Column | Type | Description |
|---|---|---|
| slug | string | City identifier in "state/city" path form, e.g. "il/chicago" โ matches tapwaterdata.com city URLs. |
| city | string | City display name. |
| state | string | Full state name. |
| stateCode | string | Two-letter USPS state code. |
| lat | number | empty | City latitude (WGS 84), resolved from the city's ZIP codes; empty when no ZIP resolves. |
| lng | number | empty | City longitude (WGS 84), resolved from the city's ZIP codes; empty when no ZIP resolves. |
| population | integer | People served across the city's tracked water utilities. |
| hardness_mg_l | number | Canonical water hardness in mg/L as calcium carbonate (population-weighted across the city's utilities). |
| hardness_gpg | number | The same value in grains per gallon (1 gpg = 17.1 mg/L, NIST SP 811). |
| category | enum | USGS classification band: soft | moderately_hard | hard | very_hard. |
| tier | enum | Source tier: T1 (utility-reported) | T2 (computed from utility-reported calcium + magnesium) | T3 (labeled county ambient estimate). |
| source | string | Primary citation for the value (utility name + PWSID, the T2 formula reference, or the county Water Quality Portal pull). |
| sourceDate | date | Most recent contributing sample/report date, ISO YYYY-MM-DD. |
| nSamples | integer | empty | T3 only: number of Water Quality Portal samples behind the county median; empty for measured (T1/T2) cities. |
| disputed | boolean | empty | "true" when the city's tap-tier values conflict beyond tolerance (ยฑ15% or ยฑ10 mg/L, whichever is larger); empty otherwise. |
| range_min | number | empty | Lower bound of the conflicting values for disputed cities (mg/L); empty otherwise. |
| range_max | number | empty | Upper bound of the conflicting values for disputed cities (mg/L); empty otherwise. |
License
The dataset is published under Creative Commons Attribution 4.0 (CC BY 4.0). You may copy, share, and republish it โ including commercially and in modified form โ under one condition: attribution. Credit TapWaterData and link back to this site (the suggested citation below satisfies it). Both files carry the license and citation in their metadata, so a downloaded copy stays self-describing.
Suggested citation
TapWaterData Water Hardness Dataset, 2026. https://www.tapwaterdata.com/water-hardness โ CC BY 4.0
Journalists and researchers: how every value is sourced, tiered, verified, and where its limits are is documented on the methodology page.
Embed the hardness checker
Prefer a live widget over the raw files? Paste this snippet to put the ZIP-code hardness checker โ backed by this same dataset โ on your own site. Free to use with the credit link.
<iframe src="https://www.tapwaterdata.com/embed/hardness-checker" width="100%" height="420" style="border:1px solid #e5e7eb;border-radius:8px;" title="Water hardness checker by TapWaterData" loading="lazy"></iframe>
<p><a href="https://www.tapwaterdata.com/water-hardness">Water hardness data: TapWaterData</a></p>Free to use. Please keep the credit link below the widget โ it tells your readers where the data comes from.
By TapWaterData Editorial.
Stay Informed About Your Water Quality
Get EPA reports, filter recommendations, and safety alerts for your area.
Join 10,000+ people protecting their families. Unsubscribe anytime.