Hot Rivers — Which Runs Are Surging?
Daily Passage — Bonneville Dam Live
Daily Passage — Lower Granite Dam Live
Annual Run Size by Dam
Daily Passage by Destination River New
Cumulative Run Timing — Bonneville
Cumulative Run Timing — Lower Granite
Run Timing by River New
Basin Destination by Year New
Ocean Age × Origin (IDFG Style) New
Returning Adults by Drainage Beta
Hatchery vs Wild — Bonneville
Hatchery vs Wild — Lower Granite
Adult Length Distribution
Adult Length vs Ocean Age New
Columbia Basin Migration Flows New
Per-River Migration Flows New
Entry-Gate Detections by River New
Migration Timing by Year — Dams New
PTAGIS Detection Sites — Map
Streamflow & Fish Detections Live
Select a river and click "Load Flow Data" to fetch live streamflow
Data from USGS National Water Information System (waterservices.usgs.gov)
How to Use This Dashboard
Every chart on this site is interactive. Here are the key things you can do:
Legend Controls:
- Single click a year or river in the legend to hide/show it
- Double-click a legend entry to isolate it — only that item will show. Double-click again to restore all.
Dropdowns & Buttons:
- Use dropdown menus (top-left of charts) to switch between views — dam totals, individual rivers, smoothing modes, etc.
- On the Run Timing chart, the dropdown lets you pick Bonneville (BON) or Lower Granite (LWG) scaling and filter to individual rivers. Single-river views color lines by year so you can compare across seasons.
Chart Interaction:
- Hover over any line or bar to see detailed data — fish counts, percentages, PIT tag info, expansion factors
- Click + drag to zoom into a region. Double-click to reset zoom.
- Use the camera icon in the top-right toolbar to download a chart as a PNG image
What Can You Learn?
- Dam Passage — Compare this year's daily fish counts to historical patterns. Is the run early, late, big, or small?
- Run Timing — Track cumulative progress: what % of the run has passed? How does each river compare?
- Destinations — Where are the fish going? Basin destination shows estimated returns per river system. The "expansion" number in the hover tells you how many real fish each PIT tag represents (e.g., 5x means each tagged fish represents ~5 total fish). This is calculated by dividing the DART dam count by the number of PIT tags detected.
- Fish Biology — Size distributions and ocean age help understand the population mix (1-ocean vs 2-ocean fish).
- Migration Flows — Sankey diagram traces fish from Bonneville through each dam to their final destination river. Width of each band = number of fish. Use the year dropdown to compare across years.
- Fish Biology — Click any fish dot on the growth scatter to open its full tag history on PTAGIS. Orange diamond markers are fish with a single adult measurement only (age is estimated from length).
Dam & Site Abbreviations:
About SteelheadTracker
SteelheadTracker is a passion project that tracks Columbia Basin steelhead migration using publicly available data from DART (Columbia Basin Research), PTAGIS (PIT Tag Information System), USGS (water data), and NOAA (weather forecasts).
Data Sources:
- DART — Dam passage counts (daily & annual)
- PTAGIS — PIT tag detection data (individual fish tracking)
- PTAGIS Detection Sites — PIT tag monitoring site locations and metadata
- USGS — Streamflow and water temperature
- NOAA — River flow forecasts
- Columbia Basin Dam Map — Overview of dam locations in the basin
How It Works:
A build script fetches the latest DART dam passage data and combines it with precomputed PIT tag analysis (basin destinations, growth, origin classification). Charts are rendered client-side using Plotly.js — no server computation needed.
Methodology Notes:
- Destination and returning adult charts use calendar year for consistency with dam passage data
- H/W classification from DART uses the "Wild Steelhead" column reported by dam operators
- PIT-based H/W uses release site information to infer hatchery vs wild origin
- Basin destinations are based on post-dam PIT detections at tributary sites
- Charts marked "Beta" are under active development and may have known limitations
A Note on the Numbers:
Estimating how many steelhead are heading to each river turns out to be a genuinely hard problem. We only have PIT tags in a fraction of the fish, and those tags have to be expanded out — multiplied by factors that can range from 10× to 50× or more — to estimate total basin destinations. I've done my best to cross-reference DART dam counts, PIT tag detections, and the v117p expansion model to produce something useful, but I'm not a fisheries biologist with access to better data, and I'm not a mathematical genius. There are real limitations here: expansion factors vary by year and river, some rivers have very few PIT tags to work with, and the entry gate detection efficiency isn't 100%. If you spot something that looks off, or you have expertise that could improve the methodology, I'd love to hear from you. This is the best I could do with what's publicly available — and I think it's still pretty useful.
Contact & Support:
Built by Paul Van Valkenburg — paul.vanvalkenburg@gmail.com
If you find this project useful and want to support its development — whether that means buying me a beer, helping me take my wife out to dinner to repair the damage this site has done to my marriage, or just keeping the servers running — any contribution is appreciated. Donate via PayPal
Want to receive updates? Email me to join the mailing list.