Computed from every play, garbage time excluded. FBS rank among players with enough volume
| Defense | Value | FBS rank |
|---|---|---|
| Havoc plays | 3 | 1078th / 2758 |
| Tackles for loss | 3 | 519th / 2112 |
| Run stops | 31 | 30th / 3422 |
| Sacks | 1 | — |
| Pass breakups | 0 | — |
| Interceptions | 0 | — |
| Forced fumbles | 0 | — |
| Tackles | 58 | — |
Where Stuhlsatz's plays went: throw and catch spots, air yards and yards after the catch, read from the play-by-play
The play-by-play names the defender on breakups, interceptions and tackles, but not the man in coverage on every throw, so true times-targeted isn't in the text. Coverage plays is the closest stand-in; exact targets come from hand charting.
2 seasons since 2014 · box-score totals, snap share estimated from play-by-play
| Season | Team | G | Snaps | Tkl | TFL | Sacks | INT | PD | Havoc |
|---|---|---|---|---|---|---|---|---|---|
| 2026 so far | Wyoming#120 · 5-3 | 7 | 73% | 59 | 1.5 | 0.5 | 0 | 0 | 3 |
| 2025 | Wyoming#114 · 4-8 | 12 | 41% | 40 | 1.5 | 0 | 0 | 1 | 3 |
Past seasons are summed from ESPN box scores; success rates and snap shares come from the play-by-play. Ethan Stuhlsatz's team rank is that season's final TDC rank. A dash means the stat wasn't recorded.
Ethan Stuhlsatz's box score, game by game, from ESPN, with a 0–10 game score for each (hover it for how it works). Click a result for the full game
| Defense | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Wk | Opponent | Result | Game score | Tkl | Solo | TFL | Sacks | Hur | PD | INT | TD |
| 1 | @ | L 13–35 | 8.0 | 15 | 3 | 0.5 | 0 | 1 | 0 | · | · |
| 2 | W 21–13 | 8.1 | 11 | 5 | 0.5 | 0.5 | 2 | 0 | · | · | |
| 3 | @ | L 10–24 | — | no stats recorded | |||||||
| 4 | W 27–10 | 5.0 | 3 | 0 | 0 | 0 | 0 | 0 | · | · | |
| 5 | @ | L 0–28 | 7.4 | 10 | 7 | 0 | 0 | 1 | 0 | · | · |
| 6 | @ | W 16–13 | 6.0 | 3 | 1 | 0.5 | 0 | 1 | 0 | · | · |
| 7 | W 41–23 | 6.0 | 6 | 2 | 0 | 0 | 0 | 0 | · | · | |
| 8 | W 28–14 | 6.8 | 11 | 4 | 0 | 0 | 0 | 0 | · | · | |
| 2026 · 7 games | 6.8 | 59 | 22 | 1.5 | 0.5 | 5 | 0 | · | · | ||
FBS rank among qualifying players
| Defense | 2026 | FBS rank |
|---|---|---|
| Tackles | 59 | 93rd / 5664 |
| Solo | 22 | — |
| Tackles for loss | 1.5 | 1272nd / 2634 |
| Sacks | 0.5 | 1127th / 1383 |
| QB hurries | 5 | 71st / 1549 |
| Passes defended | 0 | — |
| Defensive TD | 0 | — |
Estimated snaps from a model trained on real NFL snap counts. Ranges in brackets are where the real number lands 80% of the time: wide for a single game, tighter over the season. How it works
| Game | Start | Opp. plays | Est. snaps | Plays made | Snap share |
|---|---|---|---|---|---|
| Wk 1 · Colorado State | ✓ LB | 67 | ~67 (34–67) | 14 | 100% |
| Wk 2 · Northern Colorado | ✓ LB | 62 | ~62 (31–62) | 11 | 100% |
| Wk 4 · Hawai'i | ✓ LB | 67 | ~26 (3–47) | 3 | 39% |
| Wk 5 · North Dakota State | ✓ LB | 70 | ~70 (36–70) | 11 | 100% |
| Wk 6 · San José State | ✓ LB | 66 | ~53 (27–62) | 3 | 80% |
| Wk 7 · Northern Illinois | ✓ LB | 73 | ~66 (34–73) | 5 | 90% |
| Wk 8 · Air Force | ✓ LB | 78 | ~54 (27–64) | 11 | 69% |
| Season | 7 GS | 548 | 398 (334–478) | 58 | 73% |
8 LBs on the Wyoming roster, ordered by tkl
| # | Player | Pos | Class | Tkl | TFL | Sacks | INT | PD |
|---|---|---|---|---|---|---|---|---|
| 42 | Ethan Stuhlsatz | LB | SR | 59 | 1.5 | 0.5 | — | 0 |
| 34 | Steven Perez | LB | FR | 54 | 5.5 | 1.5 | — | 0 |
| 26 | Gary Rutherford | LB | SO | 52 | 3 | 2 | — | 0 |
| 46 | Dash Bauman | LB | SO | 16 | 1 | 0 | — | 0 |
| 33 | Parker Moore | LB | FR | 6 | 1 | 0 | — | 0 |
| 16 | Karson Butts | LB | SO | — | — | — | — | — |
| 28 | Boston Gable | LB | FR | — | — | — | — | — |
| 40 | Dante Bruley | LB | FR | — | — | — | — | — |
Stats, EPA and usage come from CollegeFootballData.com and refresh daily. FBS ranks only count players with enough volume for the stat to mean something. Qualifying for EPA takes —+ plays per team game. Wyoming depth chart →