Hatchery return data is the closest thing to a crystal ball in PNW fishing. By tracking when adult salmon and steelhead arrive at hatcheries and dam counting stations, you can predict when fish are actively migrating through the lower river sections where most anglers fish. The key insight most people miss: subtract 1-2 weeks from hatchery arrival dates and you know when fish were passing through the mainstem and lower tributaries. Combining that timing window with real-time flow and temperature data turns a guessing game into a data-driven fishing plan.
What Hatchery Return Data Actually Tells You
When a salmon or steelhead returns to its natal hatchery, that fish has completed its upstream migration. The hatchery records the date, the species, whether it is a hatchery or wild origin fish, and usually the number. These records accumulate over years and decades into run timing datasets that show you exactly when fish show up, how many, and how that compares to historical averages.
Here is what most anglers fail to understand: a hatchery return date is an endpoint, not a starting point. That fish did not teleport from the ocean to the hatchery. It spent days or weeks moving through tidewater, the lower river, the middle river, and the upper river before arriving. Every mile of river between the ocean and the hatchery represents a window where that fish was catchable.
The Timeline of a Returning Fish
The total transit time from river mouth to hatchery varies by species, flow conditions, and water temperature:
- Spring Chinook: Travel roughly 5-15 miles per day in moderate flows. A 30-mile tributary transit could take 2-7 days. Add Columbia mainstem transit time, and you are looking at 1-3 weeks between ocean entry and hatchery arrival.
- Fall Chinook: Move faster once they commit to freshwater. Transit times are often 1-2 weeks from tidewater to hatchery on most PNW tributaries.
- Coho: Move in pulses tied to rain events. A coho might hold in the lower river for a week waiting for a freshette, then cover 20 miles in two days once flows come up. Total transit: 1-4 weeks.
- Winter steelhead: Notorious for staging. A winter steelhead might enter a river in December and not reach the upper watershed until February or March. Transit times of 4-8 weeks are common.
- Summer steelhead: Enter rivers months before spawning and move slowly upstream. Transit from lower to upper river can stretch across months.
The tactical takeaway: if the hatchery data shows peak returns in week X, the best fishing in the lower river was happening in weeks X-1 and X-2. That subtraction is your timing advantage.
Where to Find Hatchery Return and Fish Count Data
ODFW (Oregon Department of Fish and Wildlife)
- Fish Counts at Willamette Falls: The single best data source for timing spring Chinook, summer steelhead, and winter steelhead runs headed to upper Willamette tributaries (North Santiam, South Santiam, McKenzie). When the count spikes, fish are actively moving through the Portland metro reach.
- Hatchery Return Reports: Cedar Creek (Sandy), Eagle Creek (Clackamas), South Santiam, Cole Rivers (Rogue), and others publish seasonal totals and sometimes weekly updates.
- Annual Run Summaries: Total returns, run timing distributions, and comparisons to 5-year and 10-year averages. These are your historical baseline.
WDFW (Washington Department of Fish and Wildlife)
- Cowlitz River Returns: The Cowlitz Barrier Dam fish counts are critical for one of Washington's most productive rivers. WDFW publishes daily and weekly passage numbers for Chinook, coho, and steelhead.
- Kalama, Lewis, Washougal: Each has hatchery return data that helps time runs on these popular lower Columbia tributaries.
- Puget Sound Rivers: Hatchery returns on the Skagit, Snohomish, Skykomish, Puyallup, and Green rivers are tracked through state and co-managed tribal data sources.
FPC/DART (Fish Passage Center / Data Access in Real Time)
This is the power tool. The DART database provides daily fish counts at every Columbia and Snake River dam, historical passage data going back decades, and cumulative passage graphs showing exactly when runs are building, peaking, and tapering off.
Bonneville Dam is the key station for lower Columbia fishing. It is the first dam upstream from the ocean at river mile 146. Every fish bound for the Columbia Basin interior passes through Bonneville. When the daily count spikes, those fish were in the lower Columbia 3-7 days earlier and will reach tributaries like the Cowlitz, Kalama, Lewis, Sandy, and Clackamas within 1-2 weeks.
Columbia Basin Research (University of Washington)
UW's Columbia Basin Research program publishes PIT tag passage histories that reveal actual fish transit times between locations, run timing predictions based on early-season counts, and cumulative passage curves that show where you are in the run. If 30% of the historical spring Chinook run has passed Bonneville by mid-April, the bulk of the run is still ahead of you.
The "Subtract 1-2 Weeks" Timing Trick
This is the core of the strategy, and it is surprisingly underused.
How It Works
- Identify your target species and river. Say you want to fish spring Chinook on the Cowlitz.
- Find the relevant upstream counting station. For the Cowlitz, that is the Barrier Dam. For any Columbia tributary, Bonneville Dam is the first reference point.
- Check current counts against historical run timing. If peak passage at the Cowlitz Barrier Dam historically occurs in the last week of April, and this year is tracking 5 days ahead, the peak is likely around April 20-22.
- Subtract your transit time. The lower Cowlitz from the Columbia confluence to the barrier dam is roughly 50 river miles. At 5-10 miles per day, that is 5-10 days of transit. Subtracting from the barrier dam peak puts peak lower-Cowlitz fishing around April 10-15.
- Plan your trips around that window. You are using data, not guessing.
Refining the Estimate
- Warmer water temperatures accelerate migration. In a warm spring, subtract closer to 1 week. In a cold spring, subtract closer to 2-3 weeks.
- Higher flows accelerate migration. A freshette pushes fish upstream faster. Expect earlier hatchery arrivals than historical averages.
- Low flows cause staging. Fish hold in the lower river waiting for conditions to improve. This extends your lower-river fishing window.
- Species matter. Steelhead stage much longer than Chinook. A winter steelhead might spend a month in the lower 10 miles before pushing upstream.
A Real-World Example: Sandy River Spring Chinook
Historical data shows peak returns at Cedar Creek Hatchery in late May to early June. The Sandy from the Columbia confluence to the hatchery is roughly 30 miles. Spring Chinook travel 5-8 miles per day, putting transit at 4-6 days.
Spring Chinook start entering the Sandy in April, building through May. The fish counted at the hatchery in late May entered the lower Sandy in mid-May. The fish counted in early May entered the lower Sandy in late April.
The lower Sandy spring Chinook window runs from late April through mid-May, peaking about 5-7 days before the hatchery peak. Anglers who only watch hatchery arrival dates are fishing behind the peak in the section of river where most people actually fish.
How to Read Fish Count Data at Dams
Bonneville Dam: Your Columbia Basin Starting Point
- Daily adult counts by species: Separates adult Chinook, jack Chinook, steelhead, coho, sockeye, and shad.
- Current year vs. 10-year average: DART overlays the current year's cumulative count against the average. Above the line means a stronger run, below means weaker.
- Rate of increase: The slope of the cumulative passage curve tells you whether the run is building, peaking, or tailing off.
When Bonneville's daily spring Chinook count jumps from 500 to 3,000+ per day, that is your signal. Those fish will distribute into tributaries over the following 1-2 weeks. The Cowlitz, Kalama, Lewis, Sandy, and Clackamas will all see increased presence roughly 3-10 days after a Bonneville spike.
Other Key Counting Stations
- Willamette Falls: Relevant for upper Willamette system fish (North Santiam, South Santiam, McKenzie). Note: Clackamas-bound fish enter below the falls and are not counted here. For Clackamas timing, use Bonneville counts and North Fork Dam counts.
- Ice Harbor Dam (Snake River): Key for Grande Ronde, Clearwater, and Salmon River runs.
- Priest Rapids Dam (mid-Columbia): Key for Wenatchee, Entiat, and Methow river runs.
Early Season vs. Late Season: How Timing Changes Your Approach
Run timing is not uniform across the season. Early fish and late fish behave differently, and your strategy should shift accordingly.
Early season fish tend to be larger, fewer in number, and moving faster. Early spring Chinook on the Columbia are often the biggest fish of the year, entering the river at peak condition. The leading edge of the run is thin, so fish hard and cover water. Check dam counts daily. When you see the first consistent passage at Bonneville (50+ adult Chinook per day for spring Chinook), the first fish are entering the tributaries.
Peak season fish offer the highest density and most predictable holding patterns. This is when proven water fishes like the textbook says. It is also when pressure is highest. Fish weekdays, target less-accessible water, and work the hours other anglers skip.
Late season fish have been in freshwater longer. Condition deteriorates, numbers thin, and remaining fish are mostly upstream. Use the hatchery data in reverse: if returns are winding down, the lower river is empty and fish are all in the upper reaches. Adjust your location accordingly.
Species-Specific Run Timing Patterns
Spring Chinook
Columbia entry March through June, peaking in April-May at Bonneville. Tributary presence 1-3 weeks after passage. Spring Chinook are the most calendar-predictable species. Historical run timing curves are remarkably consistent year to year, making a 10-year average chart a reliable guide.
Fall Chinook
Columbia entry August through November, peaking September-October at Bonneville. They move faster than spring fish, with 1-2 weeks from dam passage to tributary arrival. When Bonneville counts start climbing in late August, Buoy 10 is firing at the river mouth. The overlap between ocean-entering and tributary-bound fish creates one of the most concentrated fishing opportunities in the PNW.
Coho
Columbia entry September through November, peaking in October. Coho are the most rain-dependent species, staging in lower rivers and estuaries until a freshette provides the flow signal to push upstream. In a dry fall, coho stack up in the lower river for weeks. The first significant fall rain event after coho start showing at Bonneville triggers a massive tributary push. Fishing 2-3 days after that rain, as flows start to drop, is often the best coho fishing of the entire season.
Winter Steelhead
River entry November through March. Peak hatchery returns February through April. The most difficult species to time using the subtraction method because they stage extensively. A fish counted at the hatchery in March may have entered the river in January. Use hatchery arrival curves rather than dam counts for this species. When the return curve starts its steep climb, the entire river from tidewater to the hatchery is loaded with fish at various stages of upstream migration.
Summer Steelhead
River entry May through October, depending on the system. Summer steelhead fishing is less about timing the initial entry and more about finding fish during their extended freshwater holding period. Focus on water temperature data rather than hatchery return timing. When mainstem temps push above 68°F, fish seek thermal refugia in cold-water tributaries and deep pools. That is where you should be fishing.
Combining Hatchery Data with Flow Data for Trip Planning
This is where it all comes together. Hatchery data tells you when fish should be present. Flow data tells you whether conditions are fishable.
The Decision Matrix
Before committing to a trip, answer three questions:
- Are fish present? Check dam counts and hatchery returns against historical timing.
- Are flows fishable? Flows between 100-150% of the seasonal median, on a falling trend, with 8+ inches of visibility.
- Is water temperature productive? Salmon: 50-65°F. Winter steelhead: 40-52°F. Summer steelhead: 52-58°F.
All three favorable: go. Two of three: go but adjust expectations. One of three: find a different river or wait.
The Perfect Storm
The absolute best fishing happens when hatchery data shows peak run timing, a freshette 2-3 days ago triggered a migration pulse, flows are now dropping and clearing, and water temperatures are in the optimal range. This combination happens three to five times per season on any given river. The anglers who recognize it are the ones with the memorable days.
Reading Historical Run Timing Charts
A 10-year run timing chart is a probability distribution. The steep upward section means fish density is increasing daily. The top of the curve is your highest-probability window. The long tail means diminishing returns.
Most runs have a steeper rise than fall. The leading 50% of the run passes in a tighter window than the trailing 50%. Be slightly early rather than slightly late.
How DriftLine Integrates Run Timing with Real-Time Conditions
The challenge is that this data lives in different places: DART for dam counts, USGS for flows, ODFW and WDFW for hatchery reports, NOAA for water temperature. Pulling it together means bouncing between five government websites.
DriftLine consolidates the river condition side into a single view. Current flow, trend direction and speed, gage height, and water temperature, all formatted for fishing decisions.
The multi-river dashboard is especially powerful for run timing. When DART shows a Bonneville spike, you can compare conditions across every tributary in your range in 30 seconds. The Cowlitz is blown out? The Sandy is dropping and clearing? The Kalama is low but fishable? That decision happens instantly instead of across multiple browser tabs.
Flow trend analysis shows you exactly where each river is in its clearing cycle after rain. That falling hydrograph is your countdown to fishable conditions overlapping with peak fish presence.
- Hatchery return dates mark the end of migration, not the beginning. Subtract 1-2 weeks from peak hatchery arrival to estimate peak fishing in the lower and middle river.
- Bonneville Dam daily counts are the single most valuable data point for Columbia Basin fishing. A spike means fish are distributing into tributaries over 1-2 weeks.
- Run timing curves are probability distributions. Use 10-year averages to identify high-probability windows, then adjust based on current-year counts.
- Species behave differently. Chinook are calendar-predictable. Coho are rain-dependent. Steelhead stage extensively.
- Combine hatchery timing with real-time flow data. Fish presence without fishable conditions equals frustration.
- Early is better than late. The leading half of most runs passes in a tighter window. Aim for the front of the peak.
- Build your own timing database. Log dates, counts, and conditions. After three seasons, you will have a personalized chart more valuable than any published source.
Frequently Asked Questions
Where can I find daily fish counts at Bonneville Dam?
The Fish Passage Center's DART database (www.cbr.washington.edu/dart) provides daily adult fish counts at Bonneville and every other Columbia and Snake River dam. Counts are updated daily during migration season, typically by mid-morning. You can view current-year counts, compare against the 10-year average, and see cumulative passage curves broken out by species.
How far in advance should I start watching run timing data?
Start monitoring 2-3 weeks before the historical run window begins. For spring Chinook at Bonneville, check daily starting in early March. For fall Chinook, early August. For coho, late August. This lead time lets you see the run develop and plan around the building phase rather than reacting after the peak passes.
Does hatchery return data work for wild fish timing too?
Yes, with caveats. Wild and hatchery fish of the same species generally migrate on similar schedules because they respond to the same environmental cues: photoperiod, water temperature, and flow. Some studies show wild fish tend to arrive slightly earlier on certain rivers. The hatchery data gives you a reliable baseline, and wild fish are typically within that same window.
How do I know if the run is stronger or weaker than average?
Compare the current year's cumulative passage count to the 10-year average for the same date on DART. Early-season counts can be misleading because warm days can advance timing without indicating a stronger total return. Wait until at least 20-30% of the historical run has passed before drawing conclusions about overall run strength.
What if there is no dam or hatchery on the river I fish?
Use the nearest counting station as a proxy. For any Columbia Basin tributary, Bonneville counts tell you when fish are entering the system. Add transit time based on your river's distance. For coastal rivers without counting stations, ODFW and WDFW publish creel surveys, run forecasts, and weekly fishing reports with catch-per-angler data.
How accurate is the 1-2 week subtraction estimate?
It is a reliable framework you should refine for your specific river. On a short tributary like the Sandy (30 miles), spring Chinook transit is closer to 5-7 days. On a longer system where the hatchery is 80+ miles from the confluence, subtract 2-3 weeks. Calibrate against your own catch records over multiple seasons for the most accurate estimate.
Do dam counts update on weekends and holidays?
Yes, fish counting at major Columbia River dams operates seven days a week during migration season, typically March through November. Counting accuracy can vary during high-flow events when turbidity makes visual counting difficult. DART will note any days where counts are estimated rather than observed.
Can I use hatchery data to predict ocean and estuary fishing?
Indirectly. Strong return forecasts mean higher encounter rates in ocean and estuary fisheries like Buoy 10. For timing, jack counts (precocious males returning a year early) are a leading indicator. A strong jack count in year one often predicts a strong adult return in year two. For in-season ocean timing, run forecast models are more useful than hatchery arrival data.
Conclusion
Hatchery return data is free, publicly available, and updated daily during migration season. It is also one of the most underutilized tools in any PNW angler's arsenal.
The 1-2 week subtraction method is simple enough to apply on your first try. Pull up the DART database, find the relevant dam or hatchery count, compare it to the historical average, and work backward to estimate when those fish were passing through your section of river. It takes ten minutes and immediately puts you ahead of every angler operating on rumors and gut feelings.
Layer that timing intelligence on top of real-time flow conditions, and you have a system for consistently being on the right water at the right time. Not every trip will produce a fish. But over the course of a season, the angler who reads the data will fish more productive days and waste fewer mornings standing on an empty river wondering where the fish are.
The data is there. The fish are talking through it. Learn to listen.