GPGames Played
Count of distinct matches in which the player accumulated any minutes during the selected season. Used as the denominator for per-game averages (PPG, RPG, etc.).
Definitions and formulas for every stat in the site. Hover any dotted-underlined abbreviation on a table or tile to jump straight to the relevant entry here.
Count of distinct matches in which the player accumulated any minutes during the selected season. Used as the denominator for per-game averages (PPG, RPG, etc.).
Player's minutes for one game, sourced from the scorekeeper's box-score MIN column (authoritative) when available, otherwise inferred from substitution intervals. Fractional values reflect the underlying inferred-minutes path; box-score minutes are whole numbers.
Step 7.7's box-score scrape replaces inferred minutes with scorekeeper-recorded ones as it backfills. `minutes_source` on the underlying row records which path produced the value.
Total minutes across all games this season divided by Games Played. A rough proxy for how much the coach trusts a player on the floor.
Sum of made FG (2 or 3 pts each, based on shot type) plus made free throws (1 pt each).
Total points across all games this season divided by Games Played. The most basic measure of a scorer; doesn't account for efficiency or shot volume.
Combined total of offensive and defensive rebounds for one game. Box scores split these into OREB and DREB in some views but we report the combined figure on most tables.
Total rebounds (offensive + defensive) across all games this season divided by Games Played.
Passes that directly lead to a teammate's made field goal. Scorekeeper-credited; conventions vary slightly by gym.
Total assists divided by Games Played. A rough proxy for a player's playmaking volume.
Times the player took the ball away from an opponent and gained possession for their team without a foul.
Total steals divided by Games Played.
Times the player legally deflected an opponent's field goal attempt out of its path to the basket.
Total blocks divided by Games Played.
Bad passes, offensive fouls, traveling, etc. — any play that ends the player's team's possession via the player's mistake. Lower is better.
The team's win count and loss count for the season, separated by a dash (e.g., '14-7'). Derived per-match from team_match_stats by comparing points scored to points allowed — there is no dedicated outcome column on the schema, but every match has both scores populated.
Displayed in basketball standings convention — three decimal places, leading zero dropped for fractional values (.875, .700, .500, .000) but kept as '1.000' for a perfect record. For U Sports, every regular-season game is decided so the denominator equals games played.
Total points the team's opponents scored across the season, divided by games played. The defensive counterpart to PPG. Lower is better.
Per-game margin: how many points (on average) the team outscored its opponents by. Equivalent to (Total points − Total opponent points) / GP. A first-pass team-strength signal that doesn't normalise for pace; for that, see NetRtg.
Sign-color-coded across the site: green positive, red negative, '+' prefix on positive values.
Includes layups, jump shots, and three-pointers — every shot from the floor, free throws excluded. Reported as 'made-attempted'. We follow NCAA box-score convention: FG includes 3-pointers (do NOT subtract).
Doesn't weight three-pointers vs. two-pointers — a 3-for-10 night is the same 30% as a 3-for-10 night on layups. Use eFG% (or TS%) when shot mix matters.
Tinted on the page: <40% red, >50% green. Same thresholds for both genders for v1 (documented limitation).
Reported as 'made-attempted'. The 3PM portion gets the half-weight bump in eFG% to reflect the extra point.
A specialist's stat; many bench players have tiny denominators and wild 3P%. The page tints <30% red and >37% green.
Reported as 'made-attempted'. FTA enters TS% via the 0.44 multiplier (an approximation for the number of possessions that ended in FTs).
Lower bar than FG% — anything below 70% draws the eye. Page tints <70% red, >80% green.
Single number that captures how efficient a player is at putting the ball in the basket across all three shot types (2pt FGs, 3pt FGs, FTs). The 0.44 in the denominator approximates the share of FTAs that came from a normal possession (vs. and-1s).
Page tints <50% red, >58% green. NBA league-average is ~57%; college roughly 52%.
Corrects FG% for the extra point that 3-pointers are worth. Always ≥ FG% (equality only when no threes are attempted).
Page tints <45% red, >53% green.
John Hollinger's per-minute composite of nearly every box-score stat (scoring, rebounding, assists, steals, blocks, turnovers, fouls) calibrated against league-wide pace and possessions so that the league average comes out to 15.0. It's NOT a measure of a player's defense and doesn't capture context (who you played with / against). Useful as a quick efficiency tier: >25 elite, 20–25 great, 15–20 above average, 10–15 below average, <10 poor.
Page tints: >25 elite (deep green), 20–25 great (green), 10–20 unmarked (league band), 5–10 yellow, <5 red.
Of all the rebounds available in a team's games this season (offensive + defensive on both sides), the percentage the team itself collected. 50% means the team rebounded as well as its opponents on average; 55%+ is a strong rebounding edge. More informative than raw rebound totals because pace and miss rate inflate the denominator on faster / worse-shooting teams.
v2 computes opp TRB via a self-join on team_match_stats — the other team's row in the same match.
Estimates the fraction of team possessions that ended with a turnover. The 0.44 multiplier on FTA approximates the share of free-throw trips that came from non-and-1 fouls (i.e., consumed a possession). Lower is better; league-average TOV% in college is typically 15-19%.
Not tinted on the page — directionality matters (lower is better) but gender/league-specific benchmarks aren't wired up yet.
Sum of points the player's team scored MINUS points allowed during the player's on-court minutes. A high single-game +/- can come from being on the floor during a hot run (often just luck); season-level +/- is more stable but still strongly affected by lineup quality. Use alongside NetRtg for a possession-normalised view.
Color-coded across the site: green if positive, red if negative, '+' prefix on positive values.
Per-100-possessions scoring rate while the player was on the floor — possession-normalised so the number is comparable across teams of different paces. Higher is better. League average is roughly 100–110; elite teams push 115+.
The flip side of OffRtg — opponents' scoring rate per 100 possessions during the player's minutes. **LOWER is better.** League average is roughly 100–110.
On the Player Page Skill Radar, the DefRtg axis is INVERTED so a higher radar percentile means a better (lower) defensive rating — same direction as every other axis.
The on-court differential between how well the team scored and how well it defended per 100 possessions, while the player was on the floor. Combines the two ratings into a single 'how much did this lineup outscore the opponent' number.
Sign-color-coded across the site: green positive, red negative, '+' prefix on positive values.
Percentage of the team's possessions the player 'used' (ended with a shot attempt, free throw, or turnover) while on the floor. A 'role' indicator more than a quality one — high-USG players carry more of the offense; low-USG players are spot-up shooters or defenders. League average is by definition 20% (5 players × 20% = 100% of possessions).
Not tinted on the page — high USG isn't inherently good or bad. v2 computes a minutes-weighted approximation over the season; precise possession-weighted version is a future revision.
Denominator for OffRtg (and reflects the volume of basketball this player participated in). A player with 200 possessions across the season swings advanced metrics by a fraction of a player with 800.
Tempo measure: estimated number of possessions the team consumes per 40 minutes of basketball. Higher pace means faster game (more possessions for both teams); lower pace means a grind-it-out style. Pace itself isn't 'good' or 'bad' — it provides context for the ratings: a 110 OffRtg at pace 75 is more impressive than the same OffRtg at pace 85.
v2 reports each team's per-match pace from team_match_stats; season-level Pace on the Team Hub is a simple average across the team's games (the possessions-weighted mean is a future refinement; the gap is negligible at this dataset size).
Same as a single player's +/- but for a specific 5-player combination. Useful for evaluating lineup chemistry, but watch the MIN column — many lineups only log a handful of minutes and the +/- swings wildly.
Per-100-possessions scoring rate while these five players were all on the floor together.
Per-100-possessions points allowed while these five players were all on the floor together. Lower is better.
On-court scoring differential per 100 possessions for the specific 5-player combination. Combines the two lineup ratings into a single comparable figure.
A three-value flag (clean / best_effort / unavailable) on every match recording how well the substitution-event chain in the play-by-play parsed. CLEAN: no anomalies. BEST_EFFORT: one or more anomalies recovered without raising — some interval gaps may exist. UNAVAILABLE: the strict pipeline produced no usable intervals (though in practice many label='unavailable' matches still have full play-by-play data; the page renders them when present).
Displayed as a colored badge in the Match Page header: clean=neutral, best_effort=amber, unavailable=red. Advanced and lineup tables surface an extra disclaimer when the underlying minutes came from a best-effort reconstruction.
The Skill Radar's 0–100 percentile values are computed by ranking the player against everyone else in the same season and same league/gender who played at least 5 games AND accumulated at least 100 total minutes. Players below that threshold are excluded from the cohort entirely (so they don't skew the rankings). Cohort sizes are typically 300–500 qualifying players per season-gender, which makes the percentile ranks meaningful.
If the cohort drops below 20 qualifying peers the radar is hidden in favour of a 'cohort too small' note. If the player viewed didn't meet the 5g/100m bar themselves, the radar shows 'Insufficient minutes' instead.
Defensive Rating is one of the few stats where LOWER is better (fewer points allowed per 100 possessions). To keep the radar visually consistent — where 'further from the centre = better' on every axis — the DefRtg percentile is computed on DESCENDING raw values: the lowest DefRtg in the cohort becomes the 100th percentile, the highest becomes the 0th. The radar's caption flags this explicitly.