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 | 7 | 1263rd / 3422 |
| Sacks | 3 | — |
| Pass breakups | 0 | — |
| Interceptions | 0 | — |
| Forced fumbles | 0 | — |
| Tackles | 18 | — |
Where McKinley'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.
JD McKinley'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 24–45 | 4.5 | 2 | 0 | 0 | 0 | 0 | 0 | · | · | |
| 2 | @ | W 21–18 | 5.8 | 5 | 2 | 0 | 0 | 0 | 0 | · | · |
| 3 | W 49–7 | — | no stats recorded | ||||||||
| 4 | L 10–24 | 5.6 | 4 | 0 | 0 | 0 | 1 | 0 | · | · | |
| 5 | @ | L 31–39 | 6.8 | 3 | 1 | 1 | 1 | 1 | 0 | · | · |
| 6 | W 25–20 | 6.9 | 2 | 1 | 1 | 1 | 2 | 0 | · | · | |
| 7 | L 7–41 | 2.7 | 1 | 0 | 0 | 0 | 0 | 0 | · | · | |
| 8 | @ | L 20–59 | 6.9 | 4 | 3 | 1 | 1 | 0 | 0 | · | · |
| 9 | @ | L 10–31 | — | no stats recorded | |||||||
| 2026 · 7 games | 5.6 | 21 | 7 | 3 | 3 | 4 | 0 | · | · | ||
FBS rank among qualifying players
| Defense | 2026 | FBS rank |
|---|---|---|
| Tackles | 21 | 1232nd / 5664 |
| Solo | 7 | — |
| Tackles for loss | 3 | 596th / 2634 |
| Sacks | 3 | 147th / 1383 |
| QB hurries | 4 | 123rd / 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 · UCLA | ✓ LB | 53 | ~19 (2–34) | 2 | 36% |
| Wk 2 · Syracuse | ✓ LB | 86 | ~64 (33–75) | 5 | 74% |
| Wk 4 · Clemson | — | 65 | ~22 (2–40) | 3 | 34% |
| Wk 5 · UNLV | — | 60 | ~34 (4–60) | 3 | 57% |
| Wk 6 · Virginia Tech | — | 64 | ~24 (2–44) | 2 | 38% |
| Wk 7 · Wake Forest | ✓ LB | 62 | ~13 (0–62) | 1 | 21% |
| Wk 8 · SMU | ✓ LB | 68 | ~53 (27–62) | 4 | 78% |
| Season | 4 GS | 581 | 229 (107–313) | 20 | 39% |
16 LBs on the California roster, ordered by tkl
| # | Player | Pos | Class | Tkl | TFL | Sacks | INT | PD |
|---|---|---|---|---|---|---|---|---|
| 9 | AJ Tuitele | LB | FR | 52 | 4.5 | 3 | — | 0 |
| 3 | Kamar Mothudi | LB | SO | 37 | 0 | 0 | — | 0 |
| 32 | Tristan Jernigan | LB | SO | 31 | 0 | 0 | — | 0 |
| 19 | Odera Okaka | LB | SR | 22 | 2 | 0 | — | 0 |
| 33 | JD McKinley | LB | FR | 21 | 3 | 3 | — | 0 |
| Solomon Williams | LB | 18 | 4.5 | 2 | — | 0 | ||
| 21 | Aaron Hampton | LB | JR | 13 | 0 | 0 | — | 0 |
| 15 | Joshua Pierce | LB | JR | 8 | 0 | 0 | — | 0 |
| 4 | Justin Beadles | LB | SR | 7 | 0.5 | 0 | — | 0 |
| Jayden Wayne | LB | 7 | 1.5 | 1.5 | — | 0 | ||
| 36 | Jude McLellan | LB | SO | 1 | 0 | 0 | — | 0 |
| 45 | Beckham Barney | LB | FR | 1 | 0 | 0 | — | 0 |
| 6 | Emmanuel Okoye | LB | SO | — | — | — | — | — |
| 18 | Serigne Tounkara | LB | SO | — | — | — | — | — |
| 41 | Jaxon Pyatt | LB | FR | — | — | — | — | — |
| 57 | BJ Jones | LB | JR | — | — | — | — | — |
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. California depth chart →