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 | 39 | — |
| Target share | 19.8% | 165th / 534 |
| Catch rate | 48.7% | 484th / 534 |
| Success rate per target | 38.5% | 431st / 534 |
| Yards per target | 6.6 | 398th / 534 |
| Explosive catches | 10.3% | 292nd / 534 |
| Deep-target rate | 10.3% | — |
| 3rd-down targets | 8 | — |
| Red-zone targets | 2 | — |
Where Harris's plays went: throw and catch spots, air yards and yards after the catch, read from the play-by-play
Kendall Harris'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 31–10 | — | no stats recorded | |||||
| 2 | @ | L 21–44 | 5.6 | 2 | 24 | 12.0 | 0 | 14 |
| 3 | L 17–20 | 4.5 | 1 | 10 | 10.0 | 0 | 10 | |
| 4 | L 20–46 | 5.7 | 3 | 26 | 8.7 | 0 | 13 | |
| 5 | @ | L 10–42 | 4.5 | 1 | 10 | 10.0 | 0 | 10 |
| 6 | @ | W 10–3 | 6.5 | 3 | 50 | 16.7 | 0 | 26 |
| 7 | L 15–23 | 6.5 | 4 | 47 | 11.8 | 0 | 16 | |
| 8 | @ | L 0–26 | 6.2 | 4 | 38 | 9.5 | 0 | 20 |
| 9 | L 23–36 | 7.4 | 4 | 79 | 19.8 | 0 | 33 | |
| 2026 · 8 games | 5.9 | 22 | 284 | 12.9 | 0 | 33 | ||
FBS rank among qualifying players
| Receiving | 2026 | FBS rank |
|---|---|---|
| Receptions | 22 | 272nd / 2089 |
| Yards | 284 | 275th / 2074 |
| Yards / catch | 12.9 | 207th / 460 |
| Touchdowns | 0 | — |
| Long | 33 | — |
| Defense | 2026 | FBS rank |
|---|---|---|
| Tackles | 1 | 4438th / 5664 |
| Solo | 0 | — |
| Tackles for loss | 0 | — |
| Sacks | 0 | — |
| QB hurries | 0 | — |
| 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 | Team plays | Est. snaps | Plays involved | Plays made | Penalties | Snap share |
|---|---|---|---|---|---|---|---|
| Wk 2 · Virginia Tech | — | 49 | ~15 (5–21) | 2 | · | · | 31% |
| Wk 3 · East Carolina | — | 64 | ~43 (28–52) | 3 | · | · | 67% |
| Wk 4 · James Madison | ✓ WR | 68 | ~51 (34–62) | 7 | · | 1 | 75% |
| Wk 5 · Georgia State | ✓ WR | 63 | ~45 (30–55) | 5 | · | · | 71% |
| Wk 6 · App State | ✓ WR | 81 | ~61 (40–74) | 6 | · | · | 75% |
| Wk 7 · Georgia Southern | ✓ WR | 56 | ~48 (32–56) | 6 | · | · | 86% |
| Wk 8 · Louisiana Tech | ✓ WR | 55 | ~41 (27–50) | 6 | · | · | 75% |
| Wk 9 · Marshall | ✓ WR | 76 | ~60 (39–73) | 9 | 1 | 1 | 79% |
| Season | 6 GS | 567 | 364 (305–424) | 44 | 1 | 2 | 64% |
13 WRs on the Old Dominion roster, ordered by rec
| # | Player | Pos | Class | Rec | Yds | TD | Tgt share | EPA/play |
|---|---|---|---|---|---|---|---|---|
| 8 | Josh Rodriguez | WR | FR | 30 | 377 | 0 | 19% | +0.24 |
| 7 | Kendall Harris | WR | JR | 22 | 284 | 0 | 17% | +0.19 |
| 11 | TJ Johnson | WR | SR | 18 | 307 | 3 | 14% | +0.10 |
| 1 | JJ Harrell | WR | SO | 9 | 120 | 0 | 12% | -0.12 |
| 14 | Zialis Blackmon | WR | FR | 3 | 61 | 0 | 6% | +0.29 |
| 12 | BJ Bedgood | WR | FR | 1 | 15 | 0 | 4% | -0.50 |
| 0 | Zion Agnew | WR | JR | — | — | — | 3% | -0.10 |
| 17 | Sidney Mbanasor | WR | SR | — | — | — | — | — |
| 19 | Brayden Myovela | WR | FR | — | — | — | — | — |
| 21 | Steven Bengu | WR | FR | — | — | — | — | — |
| 81 | Leroy Lewis | WR | FR | — | — | — | — | — |
| 82 | Trevion Campbell | WR | FR | — | — | — | — | — |
| 87 | Khaleed Cash | WR | 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. Old Dominion depth chart →