Snap share
54%
8 of 8 started · likely 41–60%
Tackles
30
692nd of 5664 in FBS
Solo
21
Tackles for loss
5
229th of 2634 in FBS
Sacks
1
620th of 1383 in FBS
Interceptions
1
145th of 627 in FBS

Advanced

Computed from every play, garbage time excluded. FBS rank among players with enough volume

DefenseValueFBS rank
Havoc plays7214th / 2758
Tackles for loss2830th / 2112
Run stops32180th / 3422
Sacks0—
Pass breakups5—
Interceptions0—
Forced fumbles0—
Tackles25—

Charting

Where Willis's plays went: throw and catch spots, air yards and yards after the catch, read from the play-by-play

Passes defended
5
5 broken up · 0 intercepted
QB hurries
0
as the play text names the rusher
Tackles after a catch
22
12 yds per catch on those
YAC on those catches
4.0
yds after the catch before his tackle
Coverage plays
27
PBUs + INTs + tackles after a catch

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.

Career

4 seasons at 2 schools since 2014 · box-score totals, snap share estimated from play-by-play

SeasonTeamGSnapsTklTFLSacksINTPDHavoc
2026 so farJames Madison#59 · 7-2854%3051147
2025James Madison#19 · 12-258%70001—
2024Cincinnati#70 · 5-7617%700000
2023Cincinnati#93 · 3-9844%1200201

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.

Game Log

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

6.7 avg. game scoreBest: 8.8 vs Wagner (Week 2)3 of 8 games at 8.0+
Defense
WkOpponentResultGame scoreTklSoloTFLSacksHurPDINTTD
1LibertyW 20–137.1761000··
2WagnerW 87–38.8751100··
3@San Diego StateW 26–138.2742001··
4@Old DominionW 46–205.8110001··
5MarshallW 45–174.7210000··
6@Georgia SouthernW 27–248.23210001·
7Georgia StateW 49–22—no stats recorded
8@App StateL 31–346.6210002··
9TroyL 21–244.0110000··
2026 · 8 games6.7302151041·

2026 Season Stats

FBS rank among qualifying players

Defense2026FBS rank
Tackles30692nd / 5664
Solo21—
Tackles for loss5229th / 2634
Sacks1620th / 1383
QB hurries0—
Passes defended4134th / 1772
Defensive TD0—
Interceptions2026FBS rank
Interceptions1145th / 627
Return yards0—
Pick-sixes0—
Fumbles2026FBS rank
Fumbles0—
Lost0—
Recovered1—

Snaps by Game

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

GameStartOpp. playsEst. snapsPlays involvedPlays madePenaltiesSnap share
Wk 1 · Liberty✓ CB66~64 (26–66)·7·97%
Wk 2 · Wagner✓ CB67~66 (27–67)·7·99%
Wk 3 · San Diego State✓ CB77~69 (28–73)·8190%
Wk 4 · Old Dominion✓ CB68~27 (0–45)·3240%
Wk 5 · Marshall✓ CB81~27 (0–45)·2·33%
Wk 6 · Georgia Southern✓ CB65~24 (0–40)·2237%
Wk 8 · App State✓ CB75~68 (27–72)·4·91%
Wk 9 · Troy✓ CB75~2 (0–6)31·3%
Season8 GS640347 (263–386)334554%

Position Room

21 DBs on the James Madison roster, ordered by tkl

#PlayerPosClassTklTFLSacksINTPD
24Jayon HarveySJR521.50—3
31Seth GathersSSO4410—3
Ken WillisCB305114
14KJ FloweSJR262.50—6
16TJ McGillSSR2600—1
6DJ KellyCBSO220046
11LaRon DuesCBFR1220—2
25Terrence JonesSJR111.50—0
7Roddrey McWilliamsCBSO700—1
27Jamal OlfordCBSO50012
1Damier MinkahCBSR400—0
22Chase ReganSJR400—0
30D'Kwan ThomasSFR300—0
35Joshua PrinceSJR100—0
41George LovelaceCBJR100—0
7Javis MynattSSR—————
18Jase RhodesSFR—————
28Kamden JenningsCBFR—————
32Chase MillerSSR—————
33Trey GibsonCBFR—————
47Kevin KabaseleSJR—————

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 →