How we collect data, calculate flow status, and decide when to raise alerts.
Western Flows is a free, daily-updated dashboard that shows real-time conditions for hundreds of USGS stream gauges, State-monitored river gauges, reservoirs, and snowpack stations across the Western US. It's designed for anglers, kayakers, hikers, water managers, and anyone who wants to quickly understand current water conditions — without digging through raw data tables.
Every page is generated once per day from live APIs. There are no user accounts or ads. We use privacy-respecting analytics (with your consent) to understand how the site is used, and some pages include affiliate links to outdoor gear. Raw data is always one click away via the State or Federal agency links on each gauge page.
The primary data source. The USGS National Water Information System publishes 15-minute streamflow (discharge, in cubic feet per second) and water temperature readings from thousands of stream gauges nationwide. We query the IV API for the last 7 days of readings for thousands of active gauges across the West. This data is the gold standard for real-time river conditions.
To put today's flow in historical context, we fetch the full 365-day record of daily statistics from the USGS Statistics Service. For each day of the year, USGS computes percentile thresholds (10th, 25th, 50th, 75th, 90th) from all available years of record — typically 30–80+ years per gauge. We apply a 15-day centered rolling average to smooth out day-to-day noise, then compare today's observed flow to the resulting smoothed percentile bands.
The Natural Resources Conservation Service (NRCS) operates the SNOTEL network, providing automated measurements of snow water equivalent (SWE). We fetch daily SWE values for hundreds of mountain stations across the West to track the snowpack that feeds our rivers.
For major reservoirs, we query the US Bureau of Reclamation (USBR) RISE API for storage capacity data. We also pull from state-level services like California's CDEC and Colorado's CDSS to fill in local gaps for reservoirs, snowpack, and stream gauges not covered by federal networks.
3-day weather forecasts (temperature, precipitation probability, wind, weather description) are sourced from the Open-Meteo Forecast API at each gauge's GPS coordinates. We also pull hourly data for an 8-hour surface pressure trend, which is used as a proxy for incoming weather systems. Open-Meteo is a free, open-source weather API using high-resolution NWP models. Sunrise and sunset times on each day card come from the same API request.
For larger rivers, we show a 7-day modeled flow forecast from the Global Flood Awareness System (GloFAS), accessed via the Open-Meteo Flood API. GloFAS is an ECMWF ensemble model and does not assimilate real-time USGS gauge observations, so its absolute CFS values are approximate. We apply two plausibility filters: (1) if the model's day-1 forecast is less than 20% or more than 5× the current USGS observation, the forecast is suppressed as unreliable; (2) streams with a smoothed historical median below 10 cfs are excluded entirely, since GloFAS routing resolution does not reliably represent very small drainages. When shown, the forecast is most useful for identifying directional trends (rising/falling) over the coming week.
USGS gauges typically record two measurements: discharge (in cubic feet per second, or CFS) and gage height (in feet, also called stage). Western Flows uses CFS exclusively because it represents the actual volume of water moving through the channel per unit of time — making it directly comparable across different rivers, regardless of channel shape or width.
Gage height is how high the water surface is above an arbitrary reference point (the datum) at that specific gauge. It varies by channel geometry and is not comparable between gauges: 4 feet at one gauge may be a trickle while 4 feet at another is a flood. CFS removes this ambiguity and is the right unit for cross-gauge comparisons and historical percentile calculations.
Each gauge is assigned a flow status based on historical percentile bands — where today's flow falls relative to the full statistical distribution for this date, drawn from all available years of USGS record (typically 30–80+ years). This approach accounts for the natural variability at each specific gauge, rather than applying a one-size-fits-all ratio.
| Percentile Band | Status | What it means |
|---|---|---|
| Above 90th | Flow Extremely High | Higher than 90% of historical years for this date. Extreme flows with high velocity and turbid water. |
| 75th – 90th | Flow Above Normal | Higher than 75% of historical years. Elevated above typical with powerful flows. |
| 25th – 75th | Flow Conditions Normal | Within typical seasonal range for this time of year. |
| 10th – 25th | Flow Below Normal | Lower than 75% of historical years. Below average for this date. |
| Below 10th | Flow Extremely Low | Critically low. Well below the historical range, with risk of thermal stress and aquatic stress. |
For the ~20% of gauges without sufficient historical record, status is estimated using the ratio of current flow to the smoothed historical median.
Flash Rise Warning
Triggered when flow increases more than 20% within a 4-hour window. Rapid rises can indicate upstream dam releases, sudden rainfall, or debris-dam breaks. Conditions can change faster than you can safely exit the water.
Thermal Stress Warning
Triggered when water temperature exceeds 68°F (20°C). Above this threshold, dissolved oxygen levels drop and aquatic organisms — especially salmonids — experience physiological stress. This is a meaningful ecological threshold and a widely used reference point in California water quality standards.
Ice-Affected Data
When USGS qualifies readings with an ice condition code, a banner appears on that gauge's page. Ice in the stilling well or around the sensor can cause dramatically distorted flow readings — both falsely high and falsely low — that do not reflect actual streamflow.
Equipment Issue
Shown when USGS flags readings with an equipment malfunction qualifier. Data may be unreliable until the issue is resolved. Check the USGS gauge page directly for current status and any field technician notes.
Each gauge page shows up to three System Insights — short, evidence-based observations derived by cross-referencing two or more independent data sources. Insights never assign causes; they describe what the data shows. All are optional and only appear when the underlying data supports them.
The site is rebuilt once per day. Each gauge page displays a timestamp showing when flow and temperature readings were last recorded by USGS. USGS publishes new 15-minute readings continuously, but our site does not update in real time — there is typically a lag of several hours between the latest USGS reading and what is shown here.
If the daily build cannot reach the USGS API (e.g., due to a service outage), the site falls back to the most recently cached data. A banner at the top of every affected page shows the date of the cached data so you always know how fresh the information is.
Weather forecasts from Open-Meteo are also cached. If the weather API is unavailable, the previous day's forecast is displayed with a staleness notice.
When a gauge page shows a Provisional Data badge, it means USGS has not yet reviewed and approved those readings. Provisional data is typically reviewed within a year of collection, but in the interim it may be subject to revision. Most real-time data starts as provisional.
Approved (non-provisional) data has been reviewed by a USGS hydrologist and is considered the official record.
Western Flows is an informational tool built on third-party data. It is not an official safety service. Flow conditions can change rapidly, especially during storms, snowmelt events, and dam operations not reflected in gauge readings. Always exercise independent judgment before entering any waterway.
This site is not affiliated with the USGS, USBR, NRCS, or any state government agency. Use at your own risk.