Raw data · water year 2026

Take the numbers with you

Everything behind the map, as plain CSV. The committed files are the dated snapshot the site ships with; the export button below folds in the daily readings, baked from USGS and Colorado DWR once a day.

snapshot 22 Jul 2026
storage acre-feet · flow cfs
medians derived · CDSS/USGS record

reservoirs.csv

All reservoirs: location, basin, source river, capacity and storage (acre-feet), percent of median, confidence, method (measured / estimated), source and as-of date for every reading.

Download

basin_history.csv

Monthly percent-of-median storage for the seven basins, Oct 2025 – Sep 2026, the series that drives the timeline. Each row is tagged derived (from CDSS daily history) or estimated, plus statewide streamflow.

Download

gages.csv

The 18 streamgages used on the flow view, with USGS site numbers you can look up at waterdata.usgs.gov. Two are DWR-operated and read from CDSS.

Download

Current values

reservoirs.csv, but with Colorado DWR telemetry readings from the daily refresh replacing the snapshot wherever a station reported.

Loading the daily readings…

Every reservoir in the set

Rows marked live carry Colorado DWR telemetry from the daily refresh. Observed rows carry a published, dated reading; basin estimate rows are scaled to their basin's NRCS percent of median because no same-day public reading was available.

How every number is graded

Each displayed value carries a method, which says how much to trust it and where it came from:

Column dictionary

Providers, systems and rights: what this does and does not model

Three different things get called “your water,” and they are administered by three different bodies. This project models only the first, and loosely:

The limits. Places here are grouped by provider and matched by ZIP prefix, and ZIP codes are postal routes, not service-area boundaries. One ZIP can span several providers, a provider spans many ZIPs, and about a third of the entries cover a cluster of small neighboring systems under one label. We do not use PWSIDs or published service-area boundaries, so nothing here is authoritative for “who serves this address.”

For the authoritative answer, in order of usefulness: your utility bill; your provider’s own website; the EPA SDWIS federal reporting search (look up a system by state and name); and EPA’s explainer on public water systems. For plain-language background on Colorado water generally, Water Education Colorado is the standard reference.

The source ledger

Everything traces to a keyless, CORS-open, public-domain endpoint. Histories are pulled once and reduced to weekly day-of-year medians by scripts/build_normals.py, which writes js/normals.js. Current values are fetched once a day by a scheduled GitHub Action (scripts/fetch_live.pydata/live.json), so your browser reads small files from this site, never the government APIs, and derives the percentages from them. The same run bakes data/hydro.json, the trailing year of daily values behind every station's in-sheet hydrograph, and saves the agencies' responses verbatim to data/raw/ before any cleaning. The repository's git history keeps every day's raw snapshot, so each baked number can be checked against what USGS and CDSS returned.

SourceEndpointWhat it givesRecordGrade
USGS NWISwaterservices.usgs.govStreamflow — current (iv) + daily record (dv) for the gage mediansfrom 1991measured
Colorado DWR / CDSSdwr.state.co.us/RestReservoir storage — current telemetry + daily record for the storage medians; streamflow at the two DWR-operated gagesfrom 2005measured
NRCS AWDBwcc.sc.egov.usda.govSNOTEL snow-water-equivalent, aggregated to basin snowpack mediansfrom 1979measured
NRCS AWDB (decades)wcc.sc.egov.usda.govSnowpack by decade, from a fixed panel of SNOTEL sites (see below)from 1978measured
USBR (UC hydrodata / RISE)usbr.gov/uc/waterFederal reservoirs incl. Lake Powell annual end-of-Sept storage and pool elevationfrom 1963measured
USGS 3DEPelevation.nationalmap.govWater-surface elevation for reservoirs with no telemetered stagederived
Natural Earthnaturalearthdata.comShaded relief basemappublic domain
This projectjs/data.jsMap geometry & the flow-and-mixing modelschematic

How the snowpack-by-decade chart is built

A decade-to-decade comparison goes wrong the moment the measuring changes. SNOTEL sites have been added and retired steadily since 1978, and higher or snowier sites joining the network late would manufacture a trend that is only a change in who is reporting. So that chart uses a fixed panel: only sites installed by 1980 that then reported in every water year since 1981, currently 43 stations between 8,240 and 11,600 ft. The same 43 sites are averaged in every decade. A day is used only when at least 85% of the panel reports it, and a decade's curve is the median across that decade's water years, not a mean, so one freak season cannot carry a decade.

Two caveats. The 2020s bar covers only five completed water years, so it is the least settled figure on the chart. And a panel of long-record sites skews toward the mid-elevation band SNOTEL was built to watch. It is a consistent sample of Colorado's snowpack, not a complete census of it.

Where the elevations in the step-down come from

The basin step-down diagram stacks every reservoir and streamgage in order of how high it actually sits. Two sources feed that: for a gage, the USGS surveyed alt_va, the altitude of the gage datum; for a reservoir with DWR telemetry, the CDSS stage field, the live water-surface elevation from the same reading that gives the storage. That covers 25 of the reservoirs here.

For the rest there is no telemetered stage, so the script samples the USGS 3DEP elevation model around the point and accepts a value only when the samples show a dominant flat surface, meaning it is looking at a lake. That threshold matters: the coordinates in the dataset are label anchors for the map, not survey points, and a few sit up to two kilometers off the water. A permissive version of this test put Homestake 1,160 feet too low by measuring a hillside. A wrong height would mis-order the diagram while looking authoritative, so the rule is strict. Where the test passes, checked against the reservoirs CDSS does report a stage for, it lands within about 60 feet.

That gives a verified surface elevation for 34 of the 52 reservoirs, plus all 18 streamgages. The remaining reservoirs appear in the step-down with no elevation printed beside them. They are still positioned by river order: a reservoir sits below everything upstream of it and above everything downstream. Their placement is an inference from the river's shape. Every printed figure is a measurement.

Note that the two measured sources are not quite the same quantity. A CDSS stage is today's pool, which moves through the season; a 3DEP surface is where the water stood when the elevation model was flown. Both are the water surface, and the difference is far smaller than the gaps between reservoirs, which is all the ordering depends on. The vertical spacing in that diagram is not to scale. Only the order is exact.

The two Lake Powell thresholds are elevations, converted to storage: minimum power pool (3,490 ft) from Reclamation's own daily record, which shows the reservoir holding 4.00 MAF at that elevation while filling in 1964, less the roughly 6.8% of capacity since lost to sediment (the same record reads 5.91 MAF at 3,525 ft in 1965 against 5.51 MAF in 2026), giving about 3.7 MAF today. Dead pool (3,370 ft) is total capacity 25.16 MAF (USGS 2018 survey) less ~23.3 MAF of live capacity, ≈1.9 MAF.

Regenerate the baked medians or the daily readings from source at any time:

python3 scripts/build_normals.py   # pulls the histories, rewrites js/normals.js
python3 scripts/make_csvs.py       # re-exports the CSVs on this page
python3 scripts/fetch_live.py      # today's readings, rewrites data/live.json + data/hydro.json (a GitHub Action runs this daily)

All of it is public, US-government or utility-published data. This project only collates it. Check the primary sources before using any number for anything that matters.