Open Data
US river gauge day-of-year norms
For every day of the year, at every gauge, the flow you would expect: the median, the quartiles and the tails, measured across the gauge's whole published record. USGS serves this one gauge at a time. This is all of it at once.
520,723
Daily norms
1,134
Gauges
2
Parameters
1889
Record reaches back to
Released 16 September 2026. Licensed CC BY 4.0, which means you can copy it, change it and sell work built on it, as long as you credit the source.
Download
- Day-of-year norms (CSV)One row per gauge, per parameter, per calendar day, with the percentile breakpoints, the record extremes and how many observations are behind them. This is the full dataset.520,723 rows · 46.0 MB river-gauge-norms.csv
- Gauges (CSV)One row per gauge: its USGS name, coordinates, which parameters it reports and the span of its record. Small enough to read first.1,134 rows · 105 KB river-gauges.csv
- Gauges (GeoJSON)The same gauges as points, ready to drop into QGIS, Mapbox, Leaflet or a notebook.1,134 rows · 299 KB river-gauges.geojson
- Data package descriptor (JSON)Frictionless descriptor: schema, sources, licence, and links to every file.2 KB datapackage.json
What this adds to what is already out there
USGS computes these percentiles and publishes them free. It serves them one gauge at a time, through an API that answers a single site per request, which means that anyone who wants a national picture has to make the requests themselves and stitch the answers together. That is the entire job this file does for you. The numbers are USGS numbers and we have not recomputed, smoothed or adjusted any of them.
Read this before you use it
A gauge height is not comparable between gauges. A flow is.
Stage is measured against each gauge's own arbitrary datum, so "4.2 ft" at one gauge and "4.2 ft" at the next describe nothing in common. This is not a rounding problem, it is what the number means. The percentile columns are the fix and the reason this file exists: a reading at the 12th percentile for August 10 is a fact you can act on at any gauge. Compare percentiles, never raw stage.
Record lengths differ enormously, and short records make weak percentiles.
The median flow series covers 57 years and the longest reaches back to 1889, but the shortest covers a single year. A percentile drawn from one year of observations is arithmetic, not climatology. Every row carries begin_yr, end_yr and count_nu, the number of observations behind that day's distribution, so filter on them before you trust a number.
The 5th and 95th percentiles are present on 74 percent of rows, not all of them.
The tail breakpoints were added to this corpus after the middle ones, and the refresh has not reached every gauge. p10 through p90 are populated on every row. p05 and p95 are blank where they have not been fetched yet, and blank means missing rather than zero.
Flow and stage are different populations, not two columns of one.
Discharge is reported at 1,100 gauges and stage at 343, and the stage records are much shorter on average. Filter on parameter before you aggregate, or you will pool cubic feet per second with feet.
It is a snapshot, and USGS keeps measuring.
These percentiles were fetched on the release date shown above and they shift as each gauge adds another year to its record. For a live reading, or for a gauge that is not in this file, go to the USGS service directly. This file is for the shape of a normal year, not for what the river is doing right now.
It is 1,134 gauges, not the national network.
USGS operates roughly 11,000 streamgauges. The ones here are the ones that report on rivers our network covers, so the coverage is concentrated where people paddle and thin where they do not. It is not a sample of the national network and should not be treated as one.
Where it comes from
Every row is a response from the USGS daily statistics service for one gauge and one parameter, stored as returned. The gauge set is the gauges that report on rivers our network covers, which is why it is 1,134 rather than the roughly 11,000 gauges USGS operates. Station names and coordinates come from the NWIS site record for the same gauge.
| Parameter | Rows | Gauges | Terms |
|---|---|---|---|
| USGS daily statistics service: streamflow Discharge in cubic feet per second. The comparable parameter: a percentile at one gauge means the same thing as a percentile at another. | 398,559 | 1,100 | US government work. Public domain, no restriction. |
| USGS daily statistics service: gauge height Gauge height in feet, measured against a datum that is local to each gauge. Raw values are not comparable between gauges. The percentiles are. | 122,164 | 343 | US government work. Public domain, no restriction. |
USGS data is a work of the United States government and carries no copyright. Our compilation is licensed CC BY 4.0, which asks for a credit; the underlying measurements ask for nothing.
What is in each row
One row per gauge, per parameter, per calendar day: 520,723 rows over 1,134 gauges. Each carries the 5th through 95th percentiles, the mean, the record maximum and minimum with the years they happened, the number of observations behind the distribution, and the first and last year of the record. Gauge names and coordinates live in the small gauges file rather than being repeated on every row; join the two on station_id, which is the USGS site number. Full field definitions, formats and source links live in datapackage.json, which is a standard Frictionless descriptor, so most data tooling can read the release without any of this page.
How to cite it
Paddling Hubs (2026). US river gauge day-of-year norms [Data set]. Assembled from the USGS daily statistics service. https://paddlinghubs.com/data/river-gauge-norms
A link back to this page satisfies the licence. If you build something with it we would like to see it, and we will link to you from here.


