Methodology

How we grade water systems

Every water system page opens with a letter grade and a score out of 100. This page is the whole formula — every deduction, every ceiling, every threshold. The numbers below are read directly out of the code that does the grading, so you can check any grade on this site against your own utility's published report and get the same answer we did.

Every system starts at 100

Points come off for three things: what was measured, what the federal violation record says, and how much of the core regulated set the utility actually reported. Each category has a ceiling, so no single input can decide a grade on its own.

What costs pointsDeduction
Contaminant at or above its federal limit

A contaminant exactly at its limit costs 12; every doubling above it costs another 12, and the curve flattens at 4× so a single extreme reading cannot swamp everything else. The ratio is unit-normalized against the EPA reference limit, never against the number printed in the report — a µg/L value next to an mg/L limit would otherwise read 1,000× over.

12 + 12 × min(2, log₂(ratio)) per contaminant
Contaminant at 80–99% of its federal limit

Not a violation, and we do not call it one. It is a margin that can close between one sampling round and the next, so it costs something — a little.

4 per contaminant
Open health-based violation (EPA SDWIS)

An unresolved MCL, MRDL or treatment-technique violation on the federal record. This is a regulator's determination, not our reading of a number, and it also forces the system into the Poor tier regardless of score.

15 each
Open monitoring or reporting violation

A system that did not sample or did not report is not necessarily contaminated — but nobody can say it is clean either. Small penalty, real one.

3 each
Health-based violation resolved in the last 5 years

Fixed is better than open, and it still happened. The window is measured against the report year, not today's date, so a page's grade never changes just because time passed.

2 each
Core regulated contaminants never reported (below 70% coverage)

Coverage is the fraction of the 27 core slots below that appear anywhere in the system's data. A report listing one clean contaminant is not a clean report, and before this penalty existed it scored identically to one listing all 27. Below 35% coverage the grade is additionally capped at C.

round(30 × (0.7 − coverage) ÷ 0.7)

The bands

  • A90–100
  • B80–89
  • C70–79
  • D60–69
  • Fbelow 60

A system reporting under 35% of the core set is capped at C however clean its numbers look. A short report is not a clean bill of health.

The tiers

  • Good
  • Watch
  • Concern
  • Poor
  • Limited data

The tier is derived separately from the score and drives the color on each report card. Three or more exceedances, or any open health-based violation, puts a system in Poor no matter what the arithmetic says.

Two worked examples

Both are computed on this page by the same function that grades every report, from the inputs described. If we change a constant, these change with it.

C
A thin report
72 / 100 · Limited data

One contaminant reported — lead, well under its action level. Nothing else measured, no violations on record.

  • 28  core regulated contaminants never reported (below 70% coverage)

Nothing measured is over a limit, and the grade is still a C. 26 of the 27 core contaminants never appear in this report at all, so there is no basis for a better one.

See a live page like this →
F
A full report with six exceedances
40 / 100 · Poor

All 27 core slots reported, six of them at or above a federal limit — PFOS at 8.25×, PFHxS 2.6×, PFOA 2.35×, chloramine 1.17×, HAA5 1.11×, TTHM 1.07×.

  • 60  contaminant at or above its federal limit

The exceedance penalty hits its 60-point ceiling here. A seventh exceedance would not lower this score further — past a point the grade has said what it can say, and the contaminant list above it carries the detail.

See a live page like this →

The 27 core regulated contaminants

This is the coverage denominator: what a community water system's annual report virtually always covers. A slot counts as reported if any of its member contaminants appears, so a system that chlorinates and one that chloraminates both get credit for a disinfectant residual.

SlotCounts as reported if we see
Leadlead
Coppercopper
Arsenicarsenic
Nitrate / nitritenitrate, nitrite
Fluoridefluoride
Trihalomethanes (TTHM)tthm
Haloacetic acids (HAA5)haa5, haa9
Disinfectant residualchlorine, chloramine
Coliform bacteriatotal_coliform, ecoli
Turbidityturbidity
Bariumbarium
Chromiumchromium_total, chromium_hex
Seleniumselenium
Antimonyantimony
Cadmiumcadmium
Mercurymercury
Thalliumthallium
Berylliumberyllium
Cyanidecyanide
Radiumcombined_radium
Gross alpha radiationgross_alpha
Uraniumuranium
Atrazine / simazineatrazine, simazine
Tetrachloroethylene (PCE)tetrachloroethylene
Trichloroethylene (TCE)trichloroethylene
Benzenebenzene
PFASpfoa, pfos, pfhxs, pfna, hfpo_da, pfas

What the grade is not

  • It is not a safety verdict. It measures a system against federal limits and against what it reported. Whether water is safe for a particular person depends on the contaminant, the exposure, and their health — none of which a letter can carry.
  • A missing contaminant is not an absent one. Coverage penalties say nobody published a number, not that the water is contaminated. That distinction is the reason the penalty exists.
  • It grades the report year, not today. Every input is the utility's own published figure for that year plus EPA's record as of our last refresh. The five-year violation window is measured from the report year, so an archived page keeps the grade it earned.
  • Unregulated contaminants cannot move it. Something detected with no federal limit — many PFAS compounds included — has nothing to be scored against. It appears on the page; it does not change the grade.
Every input is public: the utility's own Consumer Confidence Report, EPA UCMR5 PFAS sampling, and the EPA SDWIS violation record. See data sources for every dataset and refresh cadence, and the data license to reuse any of it. Think a grade is wrong? The report page links the original source document — tell us what we misread and we will fix it.