EPA = expected points added per play. Compared with every FBS WR/TE who qualifies
Computed from every play, garbage time excluded. FBS rank among players with enough volume
| Receiving | Value | FBS rank |
|---|---|---|
| Targets | 20 | — |
| Target share | 11.0% | — |
| Catch rate | 85.0% | — |
| Success rate per target | 75.0% | — |
| Yards per target | 15.0 | — |
| Explosive catches | 35.0% | — |
| Deep-target rate | 15.0% | — |
| 3rd-down targets | 6 | — |
| Red-zone targets | 4 | — |
Where Keller's plays went: throw and catch spots, air yards and yards after the catch, read from the play-by-play
Cole Keller'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
| Receiving | ||||||||
|---|---|---|---|---|---|---|---|---|
| Wk | Opponent | Result | Game score | Rec | Yds | Y/R | TD | Long |
| 1 | W 20–13 | 6.5 | 1 | 30 | 30.0 | 0 | 30 | |
| 2 | W 87–3 | 6.8 | 2 | 37 | 18.5 | 0 | 15 | |
| 3 | @ | W 26–13 | 8.4 | 3 | 40 | 13.3 | 2 | 20 |
| 4 | @ | W 46–20 | 7.1 | 3 | 21 | 7.0 | 1 | 11 |
| 5 | W 45–17 | 6.8 | 3 | 35 | 11.7 | 0 | 25 | |
| 6 | @ | W 27–24 | 9.6 | 4 | 108 | 27.0 | 1 | 57 |
| 7 | W 49–22 | 7.5 | 2 | 54 | 27.0 | 0 | 41 | |
| 2026 · 7 games | 7.5 | 18 | 325 | 18.1 | 4 | 57 | ||
FBS rank among qualifying players
| Receiving | 2026 | FBS rank |
|---|---|---|
| Receptions | 18 | 271st / 1994 |
| Yards | 315 | 148th / 1980 |
| Yards / catch | 17.5 | 39th / 461 |
| Touchdowns | 4 | 42nd / 824 |
| Long | 57 | — |
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 | Team plays | Est. snaps | Plays involved | Penalties | Snap share |
|---|---|---|---|---|---|---|
| Wk 1 · Liberty | ✓ TE | 49 | ~38 (18–49) | 2 | · | 78% |
| Wk 2 · Wagner | ✓ TE | 62 | ~34 (16–49) | 2 | · | 55% |
| Wk 3 · San Diego State | ✓ TE | 74 | ~57 (48–69) | 3 | · | 77% |
| Wk 4 · Old Dominion | ✓ TE | 79 | ~50 (42–60) | 4 | · | 63% |
| Wk 5 · Marshall | ✓ TE | 66 | ~44 (37–53) | 4 | · | 67% |
| Wk 6 · Georgia Southern | ✓ TE | 77 | ~56 (47–68) | 4 | 1 | 73% |
| Wk 7 · Georgia State | — | 68 | ~37 (17–53) | 2 | · | 54% |
| Season | 6 GS | 475 | 316 (270–378) | 21 | 1 | 67% |
8 TEs on the James Madison roster, ordered by rec
| # | Player | Pos | Class | Rec | Yds | TD | Tgt share | EPA/play |
|---|---|---|---|---|---|---|---|---|
| 0 | Cole Keller | TE | SR | 18 | 315 | 4 | 10% | +1.52 |
| 13 | KD Mosley | TE | JR | 8 | 64 | 3 | 6% | +1.03 |
| 82 | Thatcher Miller | TE | SR | 1 | 11 | 0 | 4% | +1.01 |
| 85 | Ryder Post | TE | JR | 1 | 4 | 0 | 4% | -0.16 |
| 44 | Max Roche | TE | FR | — | — | — | — | — |
| 84 | Brian Hnat | TE | SO | — | — | — | — | — |
| 86 | Ethan Gurela | TE | SO | — | — | — | — | — |
| 89 | Thomas Guillemette | TE | FR | — | — | — | — | — |
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 4+ plays per team game. James Madison depth chart →