How this is built

Methodology

The collection and the math behind every number on the site, so you can check our work.

How the data is collected

Reservoir storage, streamflow, and drought class are pulled by a daily job that calls each agency's API directly: the US Bureau of Reclamation's RISE API for storage, the USGS Water Data OGC API for streamflow, and the US Drought Monitor for drought class. CVP and SWP allocation percentages are read out of the operating agencies' own press releases as they are announced, using a conservative text-extraction step that only pulls a number when it can point to the exact sentence it came from. That extraction step is the one place in the pipeline that reads free text instead of a structured field; every other figure comes straight off an agency API.

Each pull covers a trailing window, not just the newest day, and a missed or partial run backfills on the next one. If a single day's job fails, that day fills in automatically once the pipeline runs again; nothing is silently skipped or left blank.

How comparisons are computed

Week-over-week, month-over-month, and year-over-year are each the change between today's value and the value from that many days, weeks, or years back on the same series. There is no smoothing or averaging in these figures; they are two readings compared directly.

"Vs 5-year median" compares the current value to the median of that same calendar period (the same week of the year, for weekly series) across the prior five years. Median, not average, so one unusually wet or dry year does not skew the baseline.

Drought comparisons are stated in percentage points, not percent, because drought coverage is itself a 0-100% metric: going from 20% to 30% of an area in drought is a 10-point move, not a 50% one. Water quantities (storage in acre-feet, streamflow in cubic feet per second) use ordinary relative percent, because those series have no fixed ceiling.

What "normal" means, and where it breaks down

"Normal" on this site always means the five-year median described above. It is a deliberate, narrow definition: five years is short enough to compute cleanly and recompute every year, but it is also short enough that a multi-year drought can drag the baseline down with it. If the prior five years were themselves dry, "at normal" can still mean dry in absolute terms. Federal and state agencies often cite a 30-year normal instead, and the two won't always agree. Where that matters, the agency's own release is the fuller picture; treat our 5-year figure as a fast, consistent yardstick, not the final word on what's typical.

How the badges read

Every scored page carries one of three symmetric badges against the 5-year median: "Above normal" (more than 10% above), "Near normal" (within 10% either side), and "Below normal" (more than 10% below). Drought coverage is measured in percentage points rather than percent, so its band is 10 points either side, and its colors invert: above-normal drought is the alarming direction. The badge's hover text carries the date of the data it rests on.

Update cadence and freshness

The data pipeline runs daily; the weekly brief that reads it runs once a week. Every data page carries two dates: "Data through" is the newest reading in the data itself, and "page updated" is when the page was last rebuilt. A delayed or failed pull shows up immediately as a stale data date instead of a silently frozen number. If a page's data date is meaningfully older than the daily cadence implies, treat that page's figures as stale until the next successful pull, the same way you'd treat a delayed gauge reading.

For the plain-English version of how to read a page once the numbers are in front of you, see how to read this.

Republishing our charts and statistics

The charts and statistics on The Waterline are free to republish. Use them in an article, a report, a class, a presentation, or a post — you do not need to ask us first. We ask one thing in return: credit The Waterline with a visible link back to the page you took the figure or chart from, and keep that link live.

Every chart has an Embed chart button with a snippet you can paste straight into a web page. Because it points at the live image, the chart you embed today keeps updating itself as new data lands — you never have to swap in a fresh screenshot. Every data page, guide, and issue has a Cite button that hands you a ready-made citation line, including the date the data runs through. If you are quoting a number, keep that date: it is what tells your reader how current the figure is.