The short version
A flow number on its own does not tell you much. Fifty cfs is a normal October day on one river and a drought on another. So we rank each river against its own history for the same calendar day, then add how the flow is moving, how warm the water is, the weather forecast at the river, and which hatches are in their usual window. The result is a score from 0 to 10, a confidence level, and a plain list of reasons.
What goes into a score
- Flow against normal (30%). Today's flow is ranked against the daily flows recorded at the same gauge for the same date, using 21 to 30 years of agency records (1996 to 2025). We use the same classes as the USGS WaterWatch program: much below normal (under the 10th percentile), below normal, normal (25th to 75th), above normal, and much above normal (over the 90th). Tailwaters below dams fish well at low, steady releases, so they are penalized less for low flow than freestone streams.
- Flow stability (15%). The change over the last 24 and 72 hours. Steady or gently dropping water scores best. A jump of 40% or more in a day usually means off-color water and fish off their usual lies. None of these gauges measure clarity, so we describe this as an inference, not a measurement.
- Water temperature (25%). Where the gauge has a sensor. Trout feed best from about 50 to 60°F, and brown trout grow best from 54 to 66°F according to the U.S. Fish and Wildlife Service habitat model. Cold water slows fish down, and warm water stresses them.
- Weather at the river (20%). The National Weather Service forecast grid at the gauge: wind and gusts during daylight, the chance of rain or snow, the chance of thunder, and cloud cover. Overcast afternoons get credit during blue-winged olive season, which is standard local guidance.
- Hatch window (10%). Whether a major hatch is in its usual window, from published hatch charts for the Blue River, the South Platte, the Eagle River, and Gore Creek. This is a calendar, not a sighting, and we always say so.
Safety comes before the number
- If the water reaches 71°F or warmer (daily maximum), the score drops to 1 and we say not to fish. Colorado Parks and Wildlife lists a daily maximum above 71°F as one of the criteria for an emergency fishing closure (2 CCR 406-1-104 F.1). Our cap starts at 71°F itself.
- At 68°F we cap the score at 4 and suggest fishing early only. This is our own, more cautious line.
- When flow is 50% or less of the long-term daily average for the date, we say so and cap the score. CPW lists streamflow at or below 50% of the daily average as another emergency-closure criterion (2 CCR 406-1-104 F.1). If the water is also warm, the cap is lower.
- A thunderstorm chance of 40% or more triggers a lightning warning.
- On freestone streams, flow at four times the stream's own base flow or more is treated as snowmelt runoff and capped at 4. A forecast high at or below freezing lowers the weather part of the score and adds an ice note.
- In October and November we remind anglers that brown trout are spawning and to stay off the gravel beds where they lay eggs.
Confidence
Confidence shows how much of the score rests on fresh, measured data. It drops when a gauge has no temperature sensor, when there is no forecast, when the reading is a few hours old, or when the gauge has a short history. Rivers without a water temperature reading cannot score above 6.9 and cannot be the day's top river. If a gauge reports exactly the same daily flow for two weeks or more, we say so and lower confidence: a steady reservoir release looks like that, and so does a stuck sensor. Charts only draw days the agency actually reported; missing days are left blank.
Outlook
Tomorrow and the weekend use that day's forecast at the river, with the flow assumed to hold. Releases from reservoirs can change without notice, so outlook confidence is always lower than today's.
What we never do
- We never fill in a missing reading. A gauge with no data says "No reading today", not a guess.
- We never call the data live unless it is less than six hours old. The feed updates once each morning.
- Every daily score is archived, so anyone can check our numbers against what happened.
Rivers outside Colorado
Our river pages for other states, and for the Colorado rivers that do not have a full page here yet, use a simpler score built only from what the USGS gauge measures. It does not yet include the weather forecast, flow trends, or hatch windows that go into our Colorado scores, so read it as a first look at the water rather than a full fishing report.
- Flow against normal (60%). The average flow over the last 24 hours, ranked against the same gauge's daily record for the same date. A gauge needs at least 10 years of daily records from 1996 to 2025 before we score it.
- Water temperature (40%). The highest reading in the last 24 hours, compared with the temperature line published by that state's fish and wildlife or water quality agency. Each river page quotes the agency's own words and links to the source. Where we have not found a published line for a state, the temperature is shown but left out of the score, and the score cannot go above 6.9.
Water-quality lines. Some states give anglers no temperature advice, but their environmental agency sets a water-quality limit for streams that hold cold water fish. For Wisconsin, Oregon, Michigan, New Jersey, North Carolina, Tennessee and New Mexico we use that limit, and the river page calls it the state's water-quality limit for cold water fish. It is a rule for keeping streams healthy, not a fishing closure, so the most it can do is hold the score to 5 or less. It never counts as a stop line.
We check each limit the way the state writes it. Most are compared with the day's highest reading. Oregon's is an average of the daily highs over 7 days, so we average the last 7 daily highs at the gauge, and if 7 days in a row are not available the limit is left out. Wisconsin's limit changes by month, and Michigan's applies only in June, July and August. A limit only counts where it applies: if the state puts a stream in a different class, or we could not confirm its class, temperature stays out of the score, as before. New Hampshire and Connecticut have no number like this, so their rivers still cannot score above 6.9.
The same safety-first rules apply. Water at or above the agency's stress line holds the score to 5 or less, and water at or above its stop line holds it to 2 or less. When a state's rule needs several warm days in a row, as Montana's 73°F line does, we check that many days of readings before applying it. Flow at or below the state's own low-flow criterion holds the score to 4 or less. Each page says in plain words when one of these limits applied.
If a gauge has no reading, or its newest reading is more than 48 hours old, the page says "Not available yet" instead of showing an old number. USGS marks recent readings as provisional, which means they can still be revised after review, and we show them as reported. Every daily national score is archived along with its inputs, so it can be checked against what the river did next before we change the method.
Sources
- U.S. Geological Survey Water Data APIs (latest, continuous, and daily values) and the USGS WaterWatch percentile classes.
- Colorado Division of Water Resources telemetry stations for the South Platte basin.
- National Weather Service forecast grid at api.weather.gov.
- Colorado Parks and Wildlife emergency fishing closure criteria, 2 CCR 406-1-104 F.1 (a) water temperature and (b) streamflow. These criteria allow the CPW Director to enact a closure with public notice; they do not close water automatically.
- Raleigh, Zuckerman and Nelson, Habitat Suitability Index Models: Brown Trout, U.S. Fish and Wildlife Service, 1986.
- For rivers outside Colorado, the state agency temperature and low-flow lines quoted and linked on each river page, and for the seven water-quality states, the state rule each page cites (for example Wisconsin NR 102.25 or Oregon OAR 340-041-0028).
- Hatch charts from Big Y Fly Co (Blue River), Cast and Fly (South Platte), Hooked (Eagle River), and Executive Angler (Gore Creek).
See today's river scores