What Is CFS in Fishing? A Plain-English Guide to Reading River Flow
Quick answer
CFS, or cubic feet per second, is the standard unit for measuring how much water moves past a point in a river each second. One CFS equals about 7.5 gallons of water — roughly a basketball's worth — passing every second. For anglers, CFS tells you whether a river is wadeable, blown out, or running too low. Most trout and steelhead rivers fish best within thirty percent of their seasonal median flow.
If you fish moving water, CFS is the single number that tells you whether today is worth the drive. It is the unit every fly shop, guide, and hatchery biologist uses to describe a river. It is also the unit most new anglers misread — treating a forecast number like a verdict instead of a clue. This is what CFS actually measures, what range is fishable, and how to read a hydrograph without overthinking it.
What CFS actually measures
CFS stands for cubic feet per second. One CFS is one cubic foot of water — about 7.48 gallons, roughly the volume of a basketball — passing a fixed point in the riverbed every second. A river running at 2,000 CFS pushes 2,000 of those cubes past a gauge each second, every second. The number is a rate, not a depth, not a width, and not a speed. It is volume per time, and that is why two very different-looking rivers can read the same CFS.
A useful mental conversion: 450 CFS equals roughly 200,000 gallons per minute. The average backyard swimming pool empties in under three seconds at that rate. Multiply the gallons-per-second figure by sixty and you have a feel for how much water is actually moving past your boots, which matters more than the number on the screen.
How CFS is measured
The U.S. Geological Survey maintains roughly 11,000 streamgages nationwide, each measuring stage — water height — at a fixed cross-section every 15 minutes. Stage is then converted to discharge using a rating curve calibrated by direct flow measurements at that site. USGS publishes the data through its Water Services API in near-real time, with provisional values appearing within an hour and final quality-controlled values posted weeks later. Every public fishing app, including Baseline Maps, pulls from this same source.
Rating curves drift over time as channels scour, fill, or shift after high-water events. USGS field crews re-measure each gauge several times a year and update the curve when error exceeds about five percent. After a major flood, expect a few weeks of provisional data marked with an asterisk on the hydrograph — that flag means the curve is being recalibrated, and the displayed CFS could be off by ten to fifteen percent until the next field visit confirms it.
What’s a “good” CFS to fish at?
A good CFS is one within thirty percent of the seasonal median for that calendar date on that specific river. Median matters more than absolute number. A 4,000 CFS reading is low for the Skagit in March and dangerously high for the Yakima in August. The rule of thumb: pull up the gauge’s 30-year median curve, find today’s date, and ask whether current flow sits between 70 and 130 percent of that point. Inside that band, fish are holding in predictable lies.
CFS ranges by river type
Use this as a starting frame, then calibrate against the median for the specific gauge you fish.
| River type | Low | Ideal | High | Blown out |
|---|---|---|---|---|
| Small trout stream (Driftless, headwaters) | under 40 CFS | 60–200 CFS | 250–500 CFS | over 600 CFS |
| Medium PNW river (Yakima, Deschutes) | under 800 CFS | 1,200–3,500 CFS | 4,000–6,000 CFS | over 7,500 CFS |
| Steelhead river (Skagit, Sandy, Wilson) | under 1,500 CFS | 2,500–5,500 CFS | 6,000–12,000 CFS | over 15,000 CFS |
| Large river (Snake at Anatone, Columbia tribs) | under 8,000 CFS | 12,000–22,000 CFS | 25,000–45,000 CFS | over 60,000 CFS |
The Snake at Anatone runs about 18,400 CFS in a typical late-April pulse — high but still fishable for swung flies. The Yakima holds a 1,200 CFS summer baseflow out of Roza Dam. The Skagit blows out above 25,000 CFS and clears below 12,000. These are not opinions; they are 30-year medians anyone can pull from USGS.
How to read a USGS hydrograph
A hydrograph is a line chart with time on the x-axis and CFS on the y-axis. The shape tells you more than any single value. A flat line means stable flow and feeding fish. A sharp upward spike means a rain event or snowmelt pulse — water is rising, sediment is mobilizing, fish are repositioning. A slow descending tail after a spike is the drop, and the drop is when steelhead anglers move. Look at the last 72 hours of shape before you check today’s number.
USGS hydrographs also overlay percentile bands — colored ribbons showing the historical 10th, 25th, 50th, 75th, and 90th percentile flows for that calendar date across the gauge’s record. Current flow plotted against those bands is the single most useful read on the page. Inside the 25th-to-75th band, fish behavior matches typical seasonal patterns. Above the 90th, expect displacement and stained water. Below the 10th, expect concentrated fish and skittish behavior.
Reading the rise vs. the drop
The rise is the upward slope of a flow event. The drop is the downward slope after the peak. Fish behavior differs sharply between them. On the rise, water muddies, debris moves, and fish hold tight to seams and structure — strike windows are short and aggressive. On the drop, water clarifies hour by hour, fish redistribute into freshly oxygenated lies, and the bite extends. Plan trips to land on the drop, not the rise.
The classic steelhead window is the second day of a drop, after the river has shed half its peak volume. If a coastal river peaked at 8,000 CFS on Tuesday morning and is reading 4,500 CFS by Wednesday afternoon, visibility is usually back to 18 inches and fish that were pushed off the seams have settled. That window often lasts 24 to 36 hours before flow drops below the seasonal median and the run goes back to skittish.
CFS vs. gauge height: which matters more?
Gauge height is depth in feet at the station; CFS is volume past the station. For wading safety, gauge height is the faster read — a steelhead river at 7 feet is usually unwadeable regardless of channel. For fish behavior and historical comparison, CFS is more useful, because medians and percentiles are published in CFS. The honest answer: use gauge height for the next 30 minutes of your day and CFS for the next 30 hours.
When CFS lies: visibility, turbidity, temperature
CFS measures volume, not fishability. A river at perfect median flow can still be unfishable if visibility is under six inches after a mudslide upstream, if water temperature has crossed 68 degrees and shut trout down, or if a glacial tributary is dumping suspended silt. Always pair CFS with turbidity (often reported in NTU at the same gauge) and water temperature. A clear river at 130 percent of median fishes better than a chocolate river at median.
Turbidity is measured in Nephelometric Turbidity Units, or NTU. A reading under 10 NTU is gin-clear; 10 to 50 NTU is the green-tinted water steelheaders prefer; above 100 NTU the river is the color of coffee with milk and most species shut off visual feeding. Glacial rivers like the Skagit, Nisqually, and Suiattle can hit 800 NTU during a warm August afternoon while CFS reads perfectly normal — the silt pulse arrives hours after sun warms the icefield, not after rain.
When regulations override flow
A river can read perfect and still be closed. State agencies issue emergency rule changes during low-flow drought, high-temperature events, and run-failure closures — often within hours. Oregon, Washington, and Idaho all post emergency rules separately from the printed regulation book. Baseline Maps watches those pages and ties each rule to the specific gauge and river segment, so a closure flag surfaces alongside the CFS reading. Check rules before you check flow.
How Baseline Maps shows CFS
Baseline Maps, in Driftline mode, displays live CFS alongside a percent-from-seasonal-average comparison on every gauged river — so a reading reads as “1,340 CFS · 13% below seasonal average” rather than as a raw number you have to interpret. A flow-history chart shows the recent shape of the hydrograph, and any active emergency rule surfaces alongside the gauge data. The goal is one glance, one decision.
The short version
CFS is volume per second. Comparison against the seasonal average is the only reference number that matters. Read the shape of the last 72 hours, not just today’s value. Cross-check turbidity and temperature. Confirm regulations before you load the truck. Everything else is noise.
If there’s a flow feature you want to see — a specific gauge, a regional comparison overlay, a notification threshold — the in-app Development Queue is where Baseline Maps tracks and prioritizes requests.
FAQ
Common questions.
- What is CFS in fishing?
- CFS stands for cubic feet per second, the volume of water passing a fixed point in a river every second. Anglers use it to judge whether a river is wadeable, fishable, or blown out.
- What's a good CFS to fish at?
- Most rivers fish best within thirty percent of their seasonal median flow for that calendar date. A small trout stream sits in the 50 to 300 CFS range; a medium steelhead river fishes well from 1,500 to 4,000 CFS.
- How do I know if a river is too high to fish?
- A river is generally too high when current flow exceeds 150 percent of the seasonal median, or when visibility drops below six inches. The hydrograph spiking upward — the rise — is harder to fish than the drop.
- What's the difference between CFS and gauge height?
- Gauge height measures water depth in feet at the USGS station. CFS measures volume moving past that station. Two rivers at the same gauge height can carry very different CFS depending on channel shape.
- How accurate is USGS river flow data?
- USGS provisional data is accurate within about five percent and updates every fifteen minutes. Final published values, posted weeks later, are accurate within two percent for most gauges.
Built together
Have an idea or a correction?
Open the in-app feedback box (Settings → Feedback). Pick Feature Request or Bug Report. We read every one.