Computed from every play, garbage time excluded. FBS rank among players with enough volume
| Defense | Value | FBS rank |
|---|---|---|
| Havoc plays | 5 | 269th / 2573 |
| Tackles for loss | 2 | 627th / 1909 |
| Run stops | 3 | 1912th / 3262 |
| Sacks | 0 | — |
| Pass breakups | 3 | — |
| Interceptions | 0 | — |
| Forced fumbles | 0 | — |
| Tackles | 23 | — |
Where Willis'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.
4 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 | James Madison#47 · 7-0 | 6 | 57% | 27 | 5 | 1 | 1 | 2 | 5 |
| 2025 | James Madison#19 · 12-2 | 5 | 8% | 7 | 0 | 0 | 0 | 1 | — |
| 2024 | Cincinnati#70 · 5-7 | 6 | 17% | 7 | 0 | 0 | 0 | 0 | 0 |
| 2023 | Cincinnati#93 · 3-9 | 8 | 44% | 12 | 0 | 0 | 2 | 0 | 1 |
Past seasons are summed from ESPN box scores; success rates and snap shares come from the play-by-play. Ken Willis's team rank is that season's final TDC rank. A dash means the stat wasn't recorded.
Ken Willis'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 20–13 | 7.1 | 7 | 6 | 1 | 0 | 0 | 0 | · | · | |
| 2 | W 87–3 | 8.8 | 7 | 5 | 1 | 1 | 0 | 0 | · | · | |
| 3 | @ | W 26–13 | 8.2 | 7 | 4 | 2 | 0 | 0 | 1 | · | · |
| 4 | @ | W 46–20 | 5.8 | 1 | 1 | 0 | 0 | 0 | 1 | · | · |
| 5 | W 45–17 | 4.7 | 2 | 1 | 0 | 0 | 0 | 0 | · | · | |
| 6 | @ | W 27–24 | 8.2 | 3 | 2 | 1 | 0 | 0 | 0 | 1 | · |
| 7 | W 49–22 | — | no stats recorded | ||||||||
| 2026 · 6 games | 7.1 | 27 | 19 | 5 | 1 | 0 | 2 | 1 | · | ||
FBS rank among qualifying players
| Defense | 2026 | FBS rank |
|---|---|---|
| Tackles | 27 | 560th / 5406 |
| Solo | 19 | — |
| Tackles for loss | 5 | 136th / 2447 |
| Sacks | 1 | 489th / 1212 |
| QB hurries | 0 | — |
| Passes defended | 2 | 336th / 1588 |
| Defensive TD | 0 | — |
| Interceptions | 2026 | FBS rank |
|---|---|---|
| Interceptions | 1 | 109th / 526 |
| Return yards | 0 | — |
| Pick-sixes | 0 | — |
| Fumbles | 2026 | FBS rank |
|---|---|---|
| Fumbles | 0 | — |
| Lost | 0 | — |
| Recovered | 1 | — |
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 · Liberty | ✓ CB | 66 | ~64 (26–66) | 7 | · | 97% |
| Wk 2 · Wagner | ✓ CB | 67 | ~66 (27–67) | 7 | · | 99% |
| Wk 3 · San Diego State | ✓ CB | 77 | ~69 (28–73) | 8 | 1 | 90% |
| Wk 4 · Old Dominion | ✓ CB | 68 | ~27 (0–45) | 3 | 2 | 40% |
| Wk 5 · Marshall | ✓ CB | 81 | ~27 (0–45) | 2 | · | 33% |
| Wk 6 · Georgia Southern | ✓ CB | 65 | ~24 (0–40) | 2 | 2 | 37% |
| Season | 6 GS | 490 | 277 (210–308) | 29 | 5 | 57% |
21 DBs on the James Madison roster, ordered by tkl
| # | Player | Pos | Class | Tkl | TFL | Sacks | INT | PD |
|---|---|---|---|---|---|---|---|---|
| 24 | Jayon Harvey | S | JR | 49 | 1.5 | 0 | — | 3 |
| 31 | Seth Gathers | S | SO | 33 | 0.5 | 0 | — | 3 |
| Ken Willis | CB | 27 | 5 | 1 | 1 | 2 | ||
| 14 | KJ Flowe | S | JR | 21 | 2 | 0 | — | 4 |
| 16 | TJ McGill | S | SR | 16 | 0 | 0 | — | 1 |
| 6 | DJ Kelly | CB | SO | 14 | 0 | 0 | 4 | 3 |
| 25 | Terrence Jones | S | JR | 10 | 1.5 | 0 | — | 0 |
| 7 | Roddrey McWilliams | CB | SO | 7 | 0 | 0 | — | 1 |
| 11 | LaRon Dues | CB | FR | 7 | 1 | 0 | — | 1 |
| 1 | Damier Minkah | CB | SR | 4 | 0 | 0 | — | 0 |
| 27 | Jamal Olford | CB | SO | 4 | 0 | 0 | 1 | 1 |
| 22 | Chase Regan | S | JR | 3 | 0 | 0 | — | 0 |
| 30 | D'Kwan Thomas | S | FR | 3 | 0 | 0 | — | 0 |
| 35 | Joshua Prince | S | JR | 1 | 0 | 0 | — | 0 |
| 41 | George Lovelace | CB | JR | 1 | 0 | 0 | — | 0 |
| 7 | Javis Mynatt | S | SR | — | — | — | — | — |
| 18 | Jase Rhodes | S | FR | — | — | — | — | — |
| 28 | Kamden Jennings | CB | FR | — | — | — | — | — |
| 32 | Chase Miller | S | SR | — | — | — | — | — |
| 33 | Trey Gibson | CB | FR | — | — | — | — | — |
| 47 | Kevin Kabasele | S | 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. James Madison depth chart →