Stint

Stint

Glossary

GameChart

This site's per-game page, and what every game link opens: player stints detailing the scoring margin and who was on the floor for every possession, plus lineup plus/minus. A graphical recreation of a game's boxscore, built from that game's own play-by-play.

Scoring Margin — the top section: the lead as it moved through the game, rebuilt from the play-by-play and checked against the final score.

Player Stints — the main section, one row per player. Each bar is a stint, an unbroken run of court time, carrying that player's stats and plus/minus for that exact stretch. This is where the scoring margin is attributed to the players who were on the floor for it.

Lineup plus/minus — the same idea for each five-man unit rather than each player.

The page is the GameChart; Scoring Margin and Player Stints are sections inside it. “GameFlow” is PopcornMachine’s term for their own version and is not used here.

How to read the small coloured numbers

Two measures appear across the site, written differently on purpose because they compare different things.

A rank compares team seasons. The coloured number beside a figure is that club's position among the league's teams for the selected season, where 1 is always best. Direction is applied, so rank 1 in Turnover % is the fewest turnovers and rank 1 in an Opponent column is the least allowed. Green is good, red is not.

A percentile compares single games. On a club's Game Log each game is placed against every team-game in that season, so 90th percentile beat 90% of them. Direction is applied here too, so a high percentile is always good.

One convention per unit of analysis: a season figure gets a rank, a single game gets a percentile.

The four factors

The box-score inputs behind offensive and defensive rating. Opponent columns are always what a club allowed.

eFG % — effective field goal percentage, counting a three as worth 1.5 twos: (FG + 0.5 × 3PM) / FGA. The single biggest driver of winning.

OREB % — share of available offensive rebounds collected: own OREB / (own OREB + opponent DREB).

Turnover % — turnovers per 100 possessions. Fewer is better for a club; in the Opponent column more is better, because that is turnovers forced.

FT rate — FTA / FGA, how often a club gets to the line relative to how much it shoots.

Ratings and pace

ORtg (also shown as Rating / 100) — points scored per 100 possessions. Pace-independent, so it compares clubs that play at different speeds. DRtg is points allowed per 100. NET is the difference.

Pace — possessions per game. Neither good nor bad on its own, so it carries no rank; it is the tempo everything else is measured against.

Possessions — counted from the play-by-play for every league, not estimated from a formula. A club's offensive and defensive possessions are one symmetric number, so ORtg and DRtg share a denominator. Counting rather than estimating is the only correct approach for the G League and Summer League, whose one-free-throw rule breaks any fixed FTA coefficient, and it is the better one everywhere else.

Why our ratings sit above the published ones — by about two points on both ORtg and DRtg against NBA.com, while NET agrees to a tenth. The reason is a rule. When a missed shot goes out of bounds off the defence and the attacking club keeps the ball, that is one possession, not two: nobody gave up control, so we subtract those team offensive rebounds. The Basketball-Reference formula has no team-rebound term at all, so it counts that trip twice. Measured against it over the 2025-26 NBA regular season, our count is 98.9 possessions per team-game against its 102.6 — a difference worth 4.2 points of ORtg.

That is bigger than the two-point gap we actually see against NBA.com, so the formula is not the whole story. NBA.com's advanced numbers are not simply that formula, and we have not reconstructed the rest of their method, so we will not pretend to explain all of it. What is certain is the direction our number moves and why it moves. NET is unaffected either way, because both sides share the denominator.

In the G League and Summer League the gap reverses, which is the clearest argument for counting rather than estimating. Those leagues shoot a single free throw worth two or three points, so the 0.44 coefficient every estimate leans on is simply wrong there. Our counted possessions land about half a possession per team-game above the formula rather than below it.

Wins and Losses splits

On a club's Four Factors tab, the Wins and Losses columns recompute the same figures over only that club's wins or losses, team and opponent side each getting its own column.

They are means of per-game values, while the Team and Opponent columns are possession-weighted season totals, so compare Wins against Losses directly and treat either against the season rank as directional. The gap is the point: a club ranked 6th in eFG % in wins and 28th in losses is fragile on shooting, while 10th and 12th means its losses come from somewhere else.

A split with fewer than three games shows a dash instead of a rank, because a rank off one or two games is noise.

Stints, lineups and on/off

A stint is an unbroken run of court time for one player, reconstructed by replaying every substitution in the gamebook. Each period starts from its own Starters line, so periods are independent.

Lineup net rating is points per 100 possessions scored minus allowed while a specific five were on the floor together. On / Off is a club's net rating with a player on the floor against its net rating with them off it.

A game only feeds these numbers if every player's reconstructed minutes match the official box score. Games that fail are excluded and recorded in the data-quality report rather than published with numbers we cannot stand behind.

On the team pages, Off floor is the club's totals over those same games minus the player's on-floor totals, so the two halves add back to the season exactly. Nothing is estimated. A player who never sat for at least 100 possessions shows a dash instead of an off-floor rating. These rows are a player's whole season: someone traded mid-year carries the possessions he played elsewhere, and those rows are marked.

Summer League

The NBA's July competition. Three separate events — Las Vegas, Salt Lake City and the California Classic — shown here as one league, because the clubs are the same NBA franchises and the sample is small enough that splitting it would leave nothing to compare.

Two differences from the NBA proper matter when reading these numbers. Games are four ten-minute quarters, not twelve, so per-game totals are about a sixth lower than an NBA box; per-100 ratings are unaffected, which is the reason to prefer them here. And the NBA uses Summer League to trial rule changes, which have included a single free throw worth two points and a raised team-foul limit. Because of that, possessions for this league are counted from the play-by-play rather than estimated from free-throw attempts, and every box is checked against the ordinary scoring identity so a rule change cannot pass unnoticed.

Season types

The Type control splits a season into the competitions inside it. The default is Regular Season — folding the playoffs into a season average gives a deep run more weight than a first-round exit — except in the G League, which defaults to Full Season for the reason below.

Two buckets are kept separate because the leagues themselves do not count them. The NBA Cup Final and the WNBA's Commissioner's Cup Final are single games that count toward neither club's record nor its regular-season statistics — the qualifying games leading to them are ordinary regular-season games and are counted as such. The NBA's Play-In counts toward neither the regular season nor the playoffs.

The G League is divided differently, and it is the one league where the default hides part of the year. Its season is 50 games: a 14-game Showcase Cup to open, then the standings reset for a 36-game Regular Season. Both are the same season for a player's statistics, so Full Season is the two added back together — 50 games rather than 36. That is the G League default, because "Regular Season" there would quietly drop a quarter of everyone's year. Switch to Regular Season to ask how a club has done since the reset; leave it on Full Season to ask what a player did all year.

Playoff Picture

One page per league. Each row is a club, each column a finishing position, and the cell is that club's chance of ending there. The FAQ covers how it is built and how the four leagues' formats differ; the terms on the page itself are below.

Clinched — the club cannot now miss the postseason, whatever the remaining results. In a league with a play-in this means a place in the field, not a playoff berth, and the label says which. Eliminated is the same certainty in the other direction.

× — the club cannot finish in that position. This is arithmetic on wins, not a small number rounded down: a blank or a <0.1% means unlikely, a × means impossible. The two are worked out separately so they can never be confused.

Seed — finishing position in the standings, which is not always the bracket seed. The NBA's play-in can still reorder 7 and 8 after the standings are final.

Playoff line and play-in line — the gold rules down the grid and across the table. Solid marks the last place that goes straight to the playoffs, dashed the last place that reaches the play-in. Only leagues with a play-in show both.

SOS — strength of the schedule a club has left, ranked 1 for the hardest. Measured by opponents' scoring margin per 100 possessions rather than by their win-loss records, because two clubs on the same record are not the same problem.

xW — expected wins from those remaining games. Reported as a number of wins so it means something on its own: 2.0 from four games is a hard finish, 3.3 an easy one.

Seed swing — used to rank the games that matter most. How far one result moves the two clubs' expected finishing positions. Only positions that still mean something count, so a game between two eliminated clubs scores zero however much it moves them.

Tiebreak — each league's own published procedure, applied in its published order. The orders differ between leagues, and several differ again between a tie of two clubs and a tie of three or more.

Shot zones

Shots are bucketed by range, not by court area. The play-by-play records a distance from the basket and a shot type; it does not record where on the floor the shot was taken. A ten-foot shot from the baseline is outside the lane and a ten-foot shot from the middle is inside it, and one number cannot tell those apart, so these buckets never claim "paint".

FREQ is the share of a club's attempts that came from that zone, shown against the league average rather than ranked: taking more threes is a style, not a virtue. PPS is points per field-goal attempt from that zone and ignores free throws. Attempts that carry neither a distance nor a shot type are left out of the table and their share is stated under it; across the archive that is under a tenth of one per cent.

☕ Buy me a coffee Stint · independent basketball analytics