SCOUTTEAMSign In
Methodology

Every number on this site is one of three things, and it says which. This page publishes the definition and the formula behind each one — including the awkward cases, where a metric does not measure quite what its name suggests. Where a figure comes from a charting vendor instead of from play-by-play, it says that too.

measuredTaken directly from a source feed — a box score, or the charting corpus.12
derivedComputed by us from play-by-play or from measured inputs. The formula is stated.55
estimatedA proxy or heuristic. Always labelled as such in the UI, never presented as measured.3
70 of 70
1st & Long Success Ratederivedsuccess_rate_1st_long
Share of 1st and-8-or more plays that gained at least 50% of the yards needed.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
1st & Medium Success Ratederivedsuccess_rate_1st_med
Share of 1st and-4-to-7 plays that gained at least 50% of the yards needed.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
1st & Short Success Ratederivedsuccess_rate_1st_short
Share of 1st and-3-or less plays that gained at least 50% of the yards needed — the standard down and distance success threshold.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
2nd & Long Success Ratederivedsuccess_rate_2nd_long
Share of 2nd and-8-or more plays that gained at least 70% of the yards needed.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
2nd & Medium Success Ratederivedsuccess_rate_2nd_med
Share of 2nd and-4-to-7 plays that gained at least 70% of the yards needed.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
2nd & Short Success Ratederivedsuccess_rate_2nd_short
Share of 2nd and-3-or less plays that gained at least 70% of the yards needed.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
3rd & Long Success Ratederivedsuccess_rate_3rd_long
Share of 3rd and-8-or more plays that converted the first down.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
3rd & Medium Success Ratederivedsuccess_rate_3rd_med
Share of 3rd and-4-to-7 plays that converted the first down.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
3rd & Short Success Ratederivedsuccess_rate_3rd_short
Share of 3rd and-3-or less plays that converted the first down.
MethodComputed from real play by play distance and yards gained data for the season, gated to plays with a real EPA value.
3rd Down Carry Sharederivedthird_down_carry_share
The share of the team's 3rd down rush attempts that go to this back — how much the offense leans on him as a runner on the money down.
MethodThis back's 3rd down carries ÷ the team's total 3rd down carries (all rushers, QB included), from real play by play attribution with garbage time excluded. A deployment/usage fact, not an efficiency claim.
3rd Down Profile: Longderivedthird_down_dist_long
Share of a team's 3rd downs that were 3rd and-8-or more.
MethodReal 3rd down play count in the long bucket divided by total real 3rd down plays for the season.
3rd Down Profile: Mediumderivedthird_down_dist_med
Share of a team's 3rd downs that were 3rd and-4-to-7.
MethodReal 3rd down play count in the medium bucket divided by total real 3rd down plays for the season.
3rd Down Profile: Shortderivedthird_down_dist_short
Share of a team's 3rd downs that were 3rd and-3-or less.
MethodReal 3rd down play count in the short bucket divided by total real 3rd down plays for the season.
3rd Down Reception Sharederivedthird_down_reception_share
The share of the team's 3rd down catches made by this back — how much of the 3rd down passing production runs through him as a receiving outlet.
MethodThis back's 3rd down receptions ÷ the team's total 3rd down receptions, from real play by play attribution with garbage time excluded. Catches only — the data has no incomplete pass receiver attribution, so this is not full target share. Thin sample; a usage fact, not efficiency.
aDOTestimatedadot
Average Depth of Target — how many yards downfield, on average, this player's targets travel in the air.
MethodReal value from the charting corpus where available (a resolved player season with a charted average depth of target). Otherwise, a proxy: a weighted average of real per zone depth constants (short/deep, measured from this site's own exact air yards data) over this player's own real pass_zone tag distribution. Unavailable when neither source has data for this player season.
Avg Depth of Tacklederivedavg_depth_of_tackle
On average, how far downfield this defense makes its run tackles. Lower means it's stopping ball carriers closer to (or behind) the line — a sign of a stout run front.
MethodTackle-weighted average of each run defender's average depth of tackle (charting corpus). Lower is better.
Blitz Ratederivedblitz_rate
How often this defense sends extra pass rushers (a blitz) on a given dropback. A tendency, not a quality signal — sending more blitzes isn't inherently better defense; whether it pays off is what EPA vs Blitz measures.
MethodShare of this defense's charted dropbacks faced that were blitzes (charting corpus).
Blown-Block Ratemeasuredblown_block_rate
Share of a blocker's snaps where he was beaten. LOWER is better. This replaced Pass Block Efficiency on 2026-08-13: that was the old vendor's judgment composite and ranked the other way round, so this is a different metric with a different name, not the same one re-sourced.
MethodBlown blocks ÷ blocking snaps — our own division on the supplier's counting columns, never a published rate. Gate: at least 100 blocking snaps, linemen and tight ends.
Chunk-Run Rate (10+)derivedoff_explosive_rush_rate
How often this offense breaks a run for 10 or more yards — its explosive run rate on the ground.
MethodShare of rush plays gaining 10+ yards (the standard explosive run threshold, the same one used for the player level explosive run rate), over rush plays with a recorded gain.
Chunk-Runs Allowedderiveddef_explosive_rush_rate
How often this defense gives up a run of 10+ yards. Lower is better.
MethodShare of rush plays faced that gained 10+ yards, over rush plays faced with a recorded gain — the defensive mirror of chunk-run rate.
Completion %measuredcomp_pct
Share of a passer's attempts that were completed.
Methodpass_comp ÷ pass_att × 100, from the CFBD season box score (ingest_week.py). Stored on a 0–100 scale, not 0–1. Percentile gate: at least 25 attempts.
Coverage Yards/Snap Allowedderivedcoverage_yards_per_snap_allowed
How many yards this secondary gives up for every snap it spends in coverage — a real, if partial, coverage-quality proxy. Lower is better. Not the same as EPA allowed; no coverage-EPA-allowed figure exists in the charting corpus.
MethodTotal receiving yards allowed divided by total coverage snaps across the secondary (CB/S), charting corpus.
Defensive EPA/Play Allowedmeasureddef_epa_per_play
The same EPA model, from the defense's side — how many points the defense allows per snap versus expectation. Lower is better.
MethodCFBD's play level EPA model, averaged across all defensive plays in the season.
DvPderiveddvp
A player's own EPA, adjusted for how strong their opponents were overall that season. Despite the name, this is NOT a position specific 'how has this defense performed against WRs/RBs' stat (specs/dvp-methodology-hardening.md) — it uses each opponent's overall defensive EPA allowed, the same number regardless of which position the player plays. A real position specific version would need a separate 'EPA allowed by opponent position' build this pipeline doesn't have yet.
MethodFor each game a player has real attributed rushing/receiving plays in, their own average EPA that game is compared against that specific opponent's season-long def_epa_per_play (that opponent's overall defensive rate across their full season, not scoped to just this one game). Averaged across all the player's games, then centered against the league wide average EPA per real snap that season.
Elusivenessderivedelusive_pct
How hard this back is to bring down — PFF's Elusive Rating (broken/missed tackles forced blended with yards after contact), as a percentile vs FBS.
MethodPFF composite `elusive_rating` from the charting corpus, percentile ranked against all FBS running backs meeting the season attempt floor (not just the team's own backs). Vendor composite — not independently reconciled against its stated inputs.
EPA per Carryderivedepa_per_carry
Expected Points Added per rush attempt — a measure of per carry rushing efficiency.
MethodSum of play level EPA over every play_players row where this player was the rusher, divided by carry count. Requires a minimum carry volume to appear as a percentile.
EPA per Targetderivedepa_per_target
Expected Points Added per pass thrown a player's way, including incompletions — a measure of per target efficiency, not just per catch.
MethodSum of play-level EPA over every play_players row where this player was the target, divided by target count. Requires a minimum target volume to appear as a percentile (specs/percentile-engine.md §2.2).
EPA vs Blitzderivedepa_vs_blitz
How efficient this offense is specifically on the dropbacks where the defense sent a blitz — measures whether extra rushers disrupt this quarterback and this protection.
MethodDropback-weighted average EPA on blitzed dropbacks only, across the team's charted quarterback(s) (charting corpus).
Explosive Catch Ratederivedexplosive_rate_rec
The share of a player's targets that resulted in a reception gaining 15 or more yards — the standard public convention for an explosive pass play.
MethodReal attributed receiving plays (play_players ⋈ plays), count of yards_gained >= 15 divided by total attributed targets. Requires at least 10 targets to appear as a percentile.
Explosive Run Ratederivedexplosive_rate_rush
The share of a player's carries that gained 10 or more yards — the standard public convention for an explosive run.
MethodReal attributed rushing plays (play_players ⋈ plays), count of yards_gained >= 10 divided by total attributed carries. Requires at least 10 rush attempts to appear as a percentile.
Fantasy Points (Half-PPR)derivedfantasy_points_half
Season fantasy points with half a point per reception.
MethodIdentical to standard scoring, plus 0.5 per reception (fantasy_scoring.py). Gate: 25 pass attempts, 10 carries or 10 targets.
Fantasy Points (PPR)derivedfantasy_points_ppr
Season fantasy points with a full point per reception.
MethodIdentical to standard scoring, plus 1.0 per reception (fantasy_scoring.py). Gate: 25 pass attempts, 10 carries or 10 targets.
Fantasy Points (Standard)derivedfantasy_points_std
Season fantasy points under standard scoring — no point for a catch.
MethodPassing yards × 0.04, passing TD × 4, interception − 1, rushing yards × 0.1, rushing TD × 6, receiving yards × 0.1, receiving TD × 6. Receptions score nothing. Summed from the CFBD box score (fantasy_scoring.py). Gate: 25 pass attempts, 10 carries or 10 targets.
Front-7 Returning Snapsderivedfront7_returning_snaps
How much of this defensive front seven returns from last season — the defensive-front counterpart to OL continuity. Returning experience, not quality.
MethodShare of this season's front seven (interior DL / edge / linebacker) defensive snaps played by players who also logged front seven snaps for the same team last season, on the charting vendor's own stable player id.
Havoc Ratederivedhavoc_pct
How often this defender makes a disruptive, splash play — a tackle for loss, sack, forced fumble, interception, or pass breakup — as a share of his snaps. Percentile vs FBS.
Method(tackles for loss + sacks + forced fumbles + interceptions + pass breakups) ÷ defensive snaps, from the charting corpus's real event counts, percentile ranked vs all FBS front seven/LB players meeting the season's snap floor. Season total event counts (not split run plays only vs pass plays only), so the value is the same in both Run Block and Pass Pro Trenches modes — consistent with how Havoc Rate is standardly reported. Replaced an earlier version of this column that held PFF's overall defensive grade percentile instead of a splash play rate (fixed 2026-07-27).
Line Pressure (QB-Adj)derivedline_pressure_rate
How often this offensive line itself creates a pressure on the QB — with pressure the quarterback brought on himself (holding the ball too long, breaking the pocket early) subtracted out. Lower is better: it means less of this offense's pressure originates with the line.
MethodFor the team's charted quarterback(s): pressures allowed × the share of that pressure attributable to the line or tight end (charting corpus's own three way partition of pressure blame: self / line+TE / other), divided by dropbacks faced, weighted by dropbacks across QBs.
Man Coverage (Yards Allowed / Snap)derivedypcs_man
Yards allowed per coverage snap when a defensive back is in man coverage, ranked. Fewer is better and the percentile is inverted, so the letter reads high is good. Rendered as a letter on the Matchup chips.
MethodYards ÷ coverage snaps, both summed across the three man coverage splits from the pass-defence view. The man/zone grouping is ours; SIS publishes a per-split rate only. Gate: 50 coverage snaps in man. THERE IS NO ZONE COUNTERPART, deliberately: the same construction in zone does not repeat year to year — +0.165 at a 50-snap gate and +0.184 at 100 for defensive backs, and negative for linebackers (−0.022, −0.120) — against +0.289 and +0.335 for man. In zone the yards that arrive in a defender's area are largely the other ten players' doing.
Offensive EPA/Playmeasuredoff_epa_per_play
Expected Points Added per offensive snap — how many points a play is worth, on average, relative to a league-average expectation for that down, distance, and field position.
MethodCFBD's play level EPA model, averaged across all offensive plays in the season.
OL Continuity Indexderivedol_continuity
How much of this offensive line returns from last season — a returning-experience measure, not a quality grade. A high number means the same linemen are back together; a low number means a rebuilt line whose cohesion is a hypothesis, not a track record.
MethodShare of this season's offensive-line (C/G/T) snaps played by linemen who also logged OL snaps for the SAME team last season. Computed on the charting vendor's own stable player id (not our cross-mapped id, which resolves interior linemen too sparsely to trust). Unmeasurable — shown as no value — for the earliest season, which has no prior year to return from.
Pace (excl. garbage time)estimatedpace_seconds_per_play_xgt
The same estimated seconds per play pace figure, with garbage time snaps removed — garbage time is when pace is most distorted from a team's real, competitive tempo.
MethodSame estimate as pace_seconds_per_play (assumes an even game-clock split between the two teams), computed only over snaps outside garbage time.
Pass Ratederivedpass_rate
The share of a team's offensive plays that were pass attempts, including sacks (a sacked dropback is still a passing play, not a rush) — scrambles are excluded (recorded as rushes).
MethodComputed from play by play play type classification for the season.
Pass Rate (excl. garbage time)derivedpass_rate_xgt
The same pass rate, with garbage time plays removed — a team up big empties the bench and runs clock; a team down big abandons the run. Both distort pass rate in ways that have nothing to do with real tendencies.
MethodComputed from play by play play type classification for the season, excluding plays flagged garbage time (a real blowout: more than 28 points apart in the 4th quarter with under 5 minutes left).
Pedigree vs Productionderivedpedigree_read
How this season's on field production compares to the player's recruiting pedigree — a plain comparison of two already real percentiles, never a blended score. A player with no recruiting rating on file is never treated as a 0: strong production with no pedigree is called out as a distinct, positive read instead of being penalized or ignored.
Methoddelta = production_pct − talent_pct when both exist: |delta| < 20 reads "Playing to pedigree," ≥ +20 reads "Outperforming pedigree," ≤ −20 reads "Underperforming pedigree." When talent_pct is null (no real recruit_rating — the common case, confirmed live 2026-07-30: only ~65-71% of real depth chart players have one), production_pct ≥ 50 reads "Unranked, outproducing"; below 50, no read is shown (not a penalty, just nothing notable to flag). Real correlation check (specs/player-grade-v2.md §2.2, WR 2024): recruit_rating vs. same-season production percentile, r=0.109 — essentially independent, so a large gap describes two real facts that don't happen to agree, not a predictive miss (there is no prediction being made). FND-09.
Points per Scoring Opportunityderivedpoints_per_opportunity
Real points scored per drive that reached the opponent's 40-yard line or closer — rewards teams that convert scoring chances into points, not just teams that move the ball into range.
MethodReal drives reconstructed from play by play (grouped by game and drive number). A drive counts as a scoring opportunity if any play in it starts at the opponent's 40 or closer. Points scored on that drive come directly from the real change in that team's own score across the drive, so it captures the actual outcome — touchdown, field goal, missed kick, or turnover — without guessing at point values.
Pressure Generatedderivedpressure_generated_rate
How often this front seven generates pressure on the quarterback, full stop — the raw (non-true pass set) pass rush pressure rate.
MethodTotal pressures divided by total pass rush opportunities across the front seven (interior DL / edge / linebacker), charting corpus.
Pressure Ratemeasuredpressure_rate
Share of a defender's pass rushes that produced a pressure. This replaced Pass Rush Win Rate on 2026-08-13 — a “win” was the old vendor's judgment, where a pressure is an observed event.
MethodPressures ÷ pass rushes, our own division on counting columns. The stickiest pass rush signal measured on our own data (year over year r=0.61, against 0.32 for sacks). Gate: at least 100 pass rush snaps, qualified by usage, not listed position — roster feeds disagree about what to call an edge rusher.
Run Stopderivedrun_stop
A front seven defender's run defence grade, 0-100 against every qualified defensive lineman and linebacker at the same volume. It blends how far downfield he makes his tackles with how often those tackles come behind the line. Rendered as a letter on the Matchup chips.
MethodTwo components, blended by measured year over year persistence (player_grades.GRADES['run_stop']): average tackle depth, and tfl ÷ combinedTackles. Gate: 20 combined tackles, which is why only about a third of charted front seven players carry the grade — the excluded ones average 77 defensive snaps against 445 for the graded. THE DIVISION IS PER TACKLE, NOT PER SNAP: per snap it measures how much a player tackles, not what his tackles achieved (tacklesShortofFirst ÷ snaps carries +0.705 with tackle rate, which the registry zero-weights as a role). Average tackle depth is the one figure on this site read from a value SIS computes instead of derived from counting columns; it is inverted, ranked and blended, never shown. Team level validity: the team mean tracks def_rush_epa at −0.582. Overlap with PASS RUSH is +0.588, carried by the TFL half — a sack is a tackle for loss — against +0.318 for tackle depth alone; 21% of graded players still differ by 30 percentile points or more between the two.
Rush Sharederivedrush_share
The share of his team's carries that go to this back — a deployment fact, not an efficiency claim.
Methodplayer rush_att ÷ the sum of rush_att across every player on that team-season (ingest_week.py). Stored 0–1. Gate: at least 10 carries.
Rush Success Ratederivedoff_rush_success_rate
How often this offense's runs stay 'on schedule' — gaining enough yardage for the down and distance to keep the drive healthy.
MethodShare of rush plays on 1st–3rd down that meet the standard Football Outsiders/SP+ success rule (50% of needed yards on 1st down, 70% on 2nd, 100% on 3rd) — the exact same success test used elsewhere in the pipeline, scoped to runs. 4th down runs are excluded (no standard threshold is defined for 4th down).
Sack Rate Allowedderivedoff_sack_rate
The share of a team's dropbacks (pass attempts, including sacks) that ended in a sack. Lower is better.
MethodSacks taken divided by (pass attempts + sacks), from play by play play type classification for the season.
Sack Rate Generatedderiveddef_sack_rate
The share of the opponent's dropbacks that this team's defense turned into a sack.
MethodSacks generated divided by opponent dropbacks faced, from play by play play type classification for the season.
SP+ Overall Ratingmeasuredsp_overall
A single number team strength rating combining offense, defense, and special teams, adjusted for opponent strength.
MethodCFBD's SP+ model (external, not computed by this site).
Stuff Ratederivedstuff_rate
The share of a player's carries that gained 0 or fewer yards — stopped at or behind the line of scrimmage. Lower is better.
MethodReal attributed rushing plays, count of yards_gained <= 0 divided by total attributed carries. Requires at least 10 rush attempts to appear as a percentile.
Success Ratederivedsuccess_rate
The share of plays that gained enough yardage to be considered successful (roughly: 50% of yards needed on 1st down, 70% on 2nd, 100% on 3rd/4th).
MethodComputed per play against CFBD's success rate threshold definition, averaged over the season.
Target Sharederivedtarget_share
The share of his team's targets that go to this player — every pass thrown his way, not only the ones he caught.
Methodplayer targets ÷ the team season's total charting targets, both from the charting corpus (backfill_charting_sourced_fields.py). Available only for players the charting corpus covers: a player with no charted receiving line has no target count at all, so no target share is shown. Until 2026-08-06 those players carried receptions ÷ team receptions instead — a catch share under a target share's name — which put two incompatible formulas in one column; that value was removed (specs/target-share-single-basis.md). An FBS team's attributed shares sum to about 0.97 on average — the denominator is the team's real charted target total, and the small remainder belongs to charted players who could not be matched to a roster entry. Stored 0–1. Gate: at least 10 qualifying receptions (the gate counts completions, not targets — see epa_target_n).
TPS Rush Win Ratederivedtrue_pass_set_rush_win_rate
This front seven's pass rush win rate on the same honest, true pass set dropbacks — the defensive mirror of True Pass Set PBE.
MethodWeighted by snaps, average of each front seven player's (interior DL / edge / linebacker) true pass set pass rush win rate (charting corpus).
True pass set PBEderivedtrue_pass_set_pbe
This offensive line's pass block efficiency on honest dropbacks only — screens and play action plays stripped out, so a line can't inflate its number just by calling more quick-and-easy throws.
MethodWeighted by snaps, average of each offensive lineman's (C/G/T) true pass set PBE (charting corpus), franchise resolved to team via the charting team map.
Turnover Ratederivedoff_turnover_rate
The share of a team's offensive plays that ended in a turnover (fumble lost or interception). Lower is better.
MethodTurnovers committed divided by total offensive plays, from play by play play type classification for the season.
Turnovers Forced Ratederiveddef_turnover_rate
The share of the opponent's offensive plays that this team's defense turned into a turnover.
MethodTurnovers forced divided by opponent's total offensive plays, from play by play play type classification for the season.
Unassisted Pass EPAderivedunassisted_pass_epa
This offense's passing efficiency with the easy stuff — screens and play action — stripped out. What's left is production the quarterback and receivers earned on a standard, no-help dropback.
Method(Total EPA − screen-play EPA − play action EPA) ÷ (total dropbacks − screen dropbacks − play action dropbacks), across the team's charted quarterback(s). Assumes screens and play action are non-overlapping charted play tags, the standard vendor convention.
Usagemeasuredusage_overall
A player's overall share of their team's offensive touches (CFBD's own usage metric).
MethodCFBD's /player/usage endpoint.
vs Man (Yards / Route)derivedyprr_man
A receiver's yards per route run against man coverage, ranked against every qualified receiver at his position. Rendered as a letter on the Matchup chips.
MethodYards ÷ routes run, both summed across SIS's three man coverage splits (cover 0, cover 1, man 2) from the receiving view's split captures. THE MAN/ZONE GROUPING IS OURS — SIS publishes a yards-per route figure per individual split, so dividing inside one split would reproduce its column; the aggregation into man and zone is a taxonomy it does not publish. PER ROUTE, NEVER PER TARGET: per target the figure does not repeat year to year (WR +0.122, TE +0.053, both under the 0.20 bar) because a receiver's targets inside one coverage are few and mostly his quarterback's choice. Per route it repeats at +0.244 (WR) and +0.303 (TE). Gate: 40 routes in that coverage; shrunk toward the population mean before ranking so a 41-route sample cannot top the board.
vs Zone (Yards / Route)derivedyprr_zone
A receiver's yards per route run against zone coverage, ranked against every qualified receiver at his position. Rendered as a letter on the Matchup chips.
MethodYards ÷ routes run, both summed across every non-man coverage split from the receiving view. Same construction and the same gate as vs Man. Repeats at +0.283 (WR) and +0.326 (TE) year over year — the strongest of the coverage splits.
WOPRestimatedwopr
Weighted Opportunity Rating — combines target share and share of the team's air yards into one usage number.
Method1.5 × target share + 0.7 × air yards share. Air yards are exact where CFBD's play text includes a catch location marker (~11% of plays overall, more in 2025); otherwise a based on receiving yards proxy is used (docs/data-audit.md §2). Defined only where a target share is — a player outside the charting corpus has no WOPR (specs/target-share-single-basis.md).
Yards After Contact / Carryderivedyco_per_carry
Average yards this team's ball carriers gain AFTER first contact — a measure of run-game physicality and broken tackles, largely independent of blocking.
MethodTotal charted yards after contact divided by total charted carries across the team's ball carriers (charting corpus), franchise resolved to team via the charting team map.
Yards Allowed per Coverage Snapmeasuredyards_per_coverage_snap
Receiving yards surrendered per snap this defender spent in coverage. LOWER IS BETTER, and the leaderboard ranks it that way. A defender nobody throws at scores well, so it measures outcome, not necessarily skill.
MethodThe charting vendor's own computed figure, passed through from the charting coverage table. Gate: at least 100 coverage snaps, CB/S/DB/LB only.
Yards per Attemptmeasuredyards_per_attempt
Passing yards per attempt — volume-neutral passing efficiency. Counts incompletions in the denominator, so it penalises inaccuracy in a way yards per completion does not.
Methodpass_yards ÷ pass_att, CFBD season box score. Gate: at least 25 attempts.
Yards per Carrymeasuredyards_per_carry
Rushing yards per carry. Unadjusted for situation, defence or blocking — a rate, not a quality judgment.
Methodrush_yards ÷ rush_att, CFBD season box score. Gate: at least 10 carries.
Yards per Receptionmeasuredyards_per_reception
Receiving yards per catch. Depth-of-target and yards-after-catch both feed it, and it says nothing about how often the player was thrown at.
Methodrec_yards ÷ receptions, CFBD season box score. Gate: at least 10 targets.
Yards per Route Runmeasuredyprr
Receiving yards per route run — the true per opportunity denominator for a receiver, because the denominator is every route run, not only the plays targeted. A low target share drags it down; a low catch rate does too.
MethodThe charting vendor's own computed yprr, passed through from charting_receiving_summary (backfill_charting_sourced_fields.py) — not recomputed by us. Gate: at least 50 routes, WR/TE/RB/FB only.