Computed from every play, garbage time excluded. FBS rank among players with enough volume
| Defense | Value | FBS rank |
|---|---|---|
| Havoc plays | 8 | 129th / 2758 |
| Tackles for loss | 7 | 71st / 2112 |
| Run stops | 23 | 132nd / 3422 |
| Sacks | 2 | — |
| Pass breakups | 1 | — |
| Interceptions | 0 | — |
| Forced fumbles | 0 | — |
| Tackles | 30 | — |
Where Onuoha'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.
3 seasons at 3 schools 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 | North Texas#56 · 6-2 | 8 | 56% | 32 | 5.5 | 1.5 | 0 | 1 | 8 |
| 2025 | Massachusetts#136 · 0-12 | 10 | 40% | 42 | 4.5 | 2.5 | 0 | 0 | 4 |
| 2024 | Rutgers#52 · 7-6 | 2 | 4% | 2 | 0 | 0 | 0 | 0 | 0 |
Past seasons are summed from ESPN box scores; success rates and snap shares come from the play-by-play. David Onuoha's team rank is that season's final TDC rank. A dash means the stat wasn't recorded.
David Onuoha'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 16–52 | 5.8 | 3 | 1 | 0 | 0 | 0 | 0 | · | · |
| 2 | W 44–6 | 8.8 | 6 | 4 | 1.5 | 1.5 | 0 | 0 | · | · | |
| 3 | @ | L 35–49 | 5.8 | 3 | 1 | 0 | 0 | 0 | 0 | · | · |
| 4 | W 63–14 | 6.3 | 1 | 1 | 1 | 0 | 0 | 0 | · | · | |
| 5 | @ | W 45–44 | 6.8 | 5 | 1 | 0.5 | 0 | 0 | 0 | · | · |
| 6 | W 50–10 | 7.8 | 6 | 2 | 0.5 | 0 | 3 | 0 | · | · | |
| 8 | @ | W 49–39 | 8.0 | 6 | 2 | 2 | 0 | 0 | 0 | · | · |
| 9 | W 48–41 | 6.8 | 2 | 2 | 0 | 0 | 0 | 1 | · | · | |
| 2026 · 8 games | 7.0 | 32 | 14 | 5.5 | 1.5 | 3 | 1 | · | · | ||
FBS rank among qualifying players
| Defense | 2026 | FBS rank |
|---|---|---|
| Tackles | 32 | 601st / 5664 |
| Solo | 14 | — |
| Tackles for loss | 5.5 | 181st / 2634 |
| Sacks | 1.5 | 506th / 1383 |
| QB hurries | 3 | 231st / 1549 |
| Passes defended | 1 | 898th / 1772 |
| 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 | Penalties | Snap share |
|---|---|---|---|---|---|---|
| Wk 1 · Indiana | ✓ DL | 46 | ~30 (12–46) | 3 | · | 65% |
| Wk 2 · UNLV | ✓ DL | 72 | ~47 (23–59) | 5 | · | 65% |
| Wk 3 · Texas State | ✓ DL | 71 | ~35 (14–55) | 3 | · | 49% |
| Wk 4 · Houston Christian | — | 63 | ~12 (6–18) | 1 | · | 19% |
| Wk 5 · Tulsa | — | 80 | ~49 (24–62) | 5 | · | 61% |
| Wk 6 · Charlotte | — | 57 | ~35 (14–55) | 6 | · | 61% |
| Wk 8 · Navy | — | 76 | ~50 (25–63) | 6 | 2 | 66% |
| Wk 9 · Florida Atlantic | ✓ DL | 85 | ~49 (24–62) | 3 | · | 58% |
| Season | 4 GS | 550 | 307 (196–394) | 32 | 2 | 56% |
22 DLs on the North Texas roster, ordered by tkl
| # | Player | Pos | Class | Tkl | TFL | Sacks | INT | PD |
|---|---|---|---|---|---|---|---|---|
| 10 | David Onuoha | DL | SR | 32 | 5.5 | 1.5 | — | 1 |
| 15 | Justin Benton | DL | SR | 20 | 0.5 | 0 | — | 0 |
| 42 | Brayden Knox | DL | SO | 20 | 5.5 | 2.5 | — | 0 |
| 91 | Davion Rhodes | DL | SR | 15 | 6.5 | 4 | — | 1 |
| 98 | Curlee Thomas IV | DL | SR | 12 | 1.5 | 1 | — | 1 |
| 58 | Nolan Clark | DL | SR | 8 | 1 | 0 | — | 0 |
| Dylan Williams | DL | 8 | 0.5 | 0.5 | — | 0 | ||
| 6 | Udoka Ezeani | DL | SR | 7 | 1.5 | 1 | — | 1 |
| 88 | Wesley Hudson | DL | SR | 7 | 0 | 0 | — | 0 |
| 11 | Steven Curtis | DL | SR | 6 | 2 | 1 | — | 0 |
| 93 | Terrell Washington | DL | JR | 6 | 0 | 0 | — | 0 |
| 23 | Christian Lorenzo | DL | SR | 5 | 1 | 0 | — | 0 |
| 96 | AJ Brown | DL | SO | 1 | 0 | 0 | — | 0 |
| 18 | Mo Diawara | DL | SR | — | — | — | — | — |
| 41 | Cason Applewhite | DL | FR | — | — | — | — | — |
| 51 | Keelene Bradley | DL | SR | — | — | — | — | — |
| 52 | Courage Osawe Jr. | DL | JR | — | — | — | — | — |
| 53 | Rohan Sturgeon | DL | FR | — | — | — | — | — |
| 92 | Grady Holmes | DL | FR | — | — | — | — | — |
| 94 | Caleb Lathan | DL | JR | — | — | — | — | — |
| 97 | Demetrie Morgan | DL | SR | — | — | — | — | — |
| 99 | Avion Carter | DL | SR | — | — | — | — | — |
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. North Texas depth chart →