Computed from every play, garbage time excluded. FBS rank among players with enough volume
| Defense | Value | FBS rank |
|---|---|---|
| Havoc plays | 2 | 1191st / 2577 |
| Tackles for loss | 2 | 630th / 1914 |
| Run stops | 9 | 665th / 3269 |
| Sacks | 0 | — |
| Pass breakups | 0 | — |
| Interceptions | 0 | — |
| Forced fumbles | 0 | — |
| Tackles | 15 | — |
Where Thomas'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 at 2 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 | App State#99 · 5-2 | 4 | 32% | 15 | 1.5 | 0 | 0 | 0 | 2 |
| 2025 | Old Dominion#32 · 10-3 | 13 | 39% | 37 | 5 | 3 | 0 | 1 | 2 |
Past seasons are summed from ESPN box scores; success rates and snap shares come from the play-by-play. Keshawn Thomas's team rank is that season's final TDC rank. A dash means the stat wasn't recorded.
Keshawn Thomas'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 | W 55–3 | — | no stats recorded | ||||||||
| 2 | @ | W 27–24 | 4.8 | 2 | 1 | 0 | 0 | 0 | 0 | · | · |
| 3 | W 26–21 | 5.9 | 2 | 0 | 0 | 0 | 3 | 0 | · | · | |
| 4 | @ | L 31–41 | 6.3 | 7 | 1 | 0.5 | 0 | 0 | 0 | · | · |
| 6 | L 3–10 | 6.4 | 4 | 3 | 1 | 0 | 0 | 0 | · | · | |
| 7 | @ | W 35–32 | — | no stats recorded | |||||||
| 8 | W 34–31 | — | no stats recorded | ||||||||
| 2026 · 4 games | 5.8 | 15 | 5 | 1.5 | 0 | 3 | 0 | · | · | ||
FBS rank among qualifying players
| Defense | 2026 | FBS rank |
|---|---|---|
| Tackles | 15 | 1409th / 5416 |
| Solo | 5 | — |
| Tackles for loss | 1.5 | 1058th / 2453 |
| Sacks | 0 | — |
| QB hurries | 3 | 157th / 1387 |
| 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 | Opp. plays | Est. snaps | Plays made | Snap share |
|---|---|---|---|---|
| Wk 2 · East Carolina | 73 | ~15 (2–27) | 2 | 21% |
| Wk 3 · Charlotte | 59 | ~46 (23–54) | 2 | 78% |
| Wk 4 · NC State | 78 | ~50 (25–59) | 7 | 64% |
| Wk 6 · Old Dominion | 81 | ~43 (22–51) | 4 | 53% |
| Season | 487 | 154 (59–203) | 15 | 32% |
9 LBs on the App State roster, ordered by tkl
| # | Player | Pos | Class | Tkl | TFL | Sacks | INT | PD |
|---|---|---|---|---|---|---|---|---|
| 10 | Colton Phares | LB | SR | 51 | 5 | 1.5 | 2 | 4 |
| 15 | Alex Mitchell | LB | SR | 42 | 1.5 | 0 | — | 1 |
| 5 | Carson Sloan | LB | JR | 24 | 3 | 1 | — | 3 |
| 13 | Keshawn Thomas | LB | SR | 15 | 1.5 | 0 | — | 0 |
| 16 | Kevin Henderson | LB | JR | 3 | 0.5 | 0 | — | 0 |
| 52 | Michael Mcclenton | LB | FR | 3 | 1 | 0 | — | 0 |
| Brooks Yurachek | LB | 3 | 0 | 0 | — | 0 | ||
| 22 | BJ Junius | LB | FR | 1 | 0 | 0 | — | 0 |
| 49 | Randy Marion III | LB | 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. App State depth chart →