THE 48 INDEXNBA PLAYER PERFORMANCE

THE METHOD

How The 48 Index works

A box-score performance rate, scaled to 48 minutes. A consistent way to follow players, compare their recent games and catch up on the NBA.

Reviewed October 14, 2026Independent · Not an official NBA statistic

What the index measures

The 48 Index combines a player’s recorded box-score contributions into Offensive and Defensive indexes. Their sum is the Overall Index. Every game is scaled to the same 48-minute basis, then game-level scores are averaged across the selected sample.

Read it as a performance rate. A score of 30 is an index value, not 30 points scored. It does not predict what a player would actually produce if they stayed on court for all 48 minutes.

Higher values mean more contributions under these weights. Scores can be negative and have no fixed upper limit. The index is not a 0–100 rating, a percentile, a wins estimate or a possession-based efficiency metric.

The formulas

Start with the recorded statistics from one game. Calculate the two raw contributions below, then multiply each by 48 ÷ minutes played.

Offensive Index

[PTS + 0.4 × FGM − 0.7 × FGA
− 0.4 × (FTA − FTM) + 0.7 × AST
+ 0.7 × OREB − TO − 0.4 × Offensive PF]
× 48 ÷ MIN

Defensive Index

[STL + 0.7 × BLK + 0.3 × DREB
− 0.4 × (Defensive PF + Unclassified PF)]
× 48 ÷ MIN
Overall Index = Offensive Index + Defensive Index
Box-score weights before the 48-minute adjustment
ContributionWeightIndex
Points+1.0Offense
Field goals made+0.4Offense
Field goals attempted-0.7Offense
Missed free throws-0.4Offense
Assists+0.7Offense
Offensive rebounds+0.7Offense
Turnovers-1.0Offense
Offensive personal fouls-0.4Offense
Steals+1.0Defense
Blocks+0.7Defense
Defensive rebounds+0.3Defense
Defensive + unclassified personal fouls-0.4Defense

PTS = points; FGM/FGA = field goals made/attempted; FTM/FTA = free throws made/attempted; AST = assists; OREB/DREB = offensive/defensive rebounds; TO = turnovers; PF = personal fouls; STL = steals; BLK = blocks; MIN = minutes played.

Every field-goal attempt carries −0.7. A make adds +0.4 back, alongside the points scored. An isolated missed field goal therefore costs 0.7; a missed free throw costs 0.4; a turnover costs 1.0. A missed shot is not treated as an automatic loss of possession. Three-pointers receive their value through points scored, with no separate three-point bonus.

A worked example

Illustrative · Not a real game

Suppose a player records the following line in 32 minutes. The example uses the same scoring function as the player rankings.

PTS24
FG9/18
FT4/5
AST6
OREB2
DREB6
STL2
BLK1
TO3
PF3

The three personal fouls consist of one offensive, one defensive and one unclassified foul.

Apply each weight to the example
ContributionCalculationRaw value
Points24 × 1+24.00
Field goals made9 × 0.4+3.60
Field goals attempted18 × -0.7-12.60
Missed free throws1 × -0.4-0.40
Assists6 × 0.7+4.20
Offensive rebounds2 × 0.7+1.40
Turnovers3 × -1-3.00
Offensive personal fouls1 × -0.4-0.40
Steals2 × 1+2.00
Blocks1 × 0.7+0.70
Defensive rebounds6 × 0.3+1.80
Defensive + unclassified personal fouls2 × -0.4-0.80

The raw Offensive contribution is 16.80; the raw Defensive contribution is 3.70. The scale factor is 48 ÷ 32 = 1.5.

Offensive25.2016.80 × 1.5
Defensive5.553.70 × 1.5
Overall30.7520.50 × 1.5

Compared with Game Score

New to these terms? Read plus-minus versus a box-score index, or browse basketball stats explained.

The combined raw contribution uses the same box-score weights as Game Score, as defined by Basketball-Reference . Because every personal foul is counted once, Overall Index = Game Score × 48 ÷ minutes played for the same input statistics.

The relationship between the two measures
FeatureGame ScoreThe 48 Index
Box-score weightsThe published Game Score weightsThe same weights when combined
Playing timeActual game contributionScaled to 48 minutes
Offense / defenseOne combined scoreA custom split; the sum preserves the total
Across gamesThe formula scores one gameArithmetic mean of each selected game’s Per48 score

In the worked example, Game Score is 20.50. The Overall Index is 30.75 after the 48-minute adjustment. The split and averaging rules are our presentation of these contributions, not a new set of underlying Game Score weights.

Which games count

The default: latest 20 recorded games

Each player’s default index is the arithmetic mean of their latest 20 recorded, positive-minute appearances across all seasons and competitions. The twenty games belong to that player; they are not the league’s latest twenty fixtures or a fixed calendar period. A traded player keeps one identity across teams. A retired player can still appear because the archive is included.

Sample index = sum of game-level Per48 scores ÷ games averaged

Every included game counts equally. For example, Per48 scores of 48 and 16 average to 32, even if one game involved 10 minutes and the other 30. We do not combine the raw contributions and divide by total minutes. Fewer recorded appearances use the available sample where eligibility permits.

Eligibility is separate from the score sample

The default leaderboard requires an average above 10 minutes in the selected sample and at least 20 qualifying appearances in the scoring scope. Games-played eligibility is checked before limiting the scoring sample to the latest twenty. If the available data is sparse, the game minimum adapts to the available maximum; the average-minutes threshold relaxes when no players have more than 10 MPG.

An average above 10 MPG does not mean every included appearance lasted more than 10 minutes. By default, all positive-minute appearances count. The separate minimum-minutes-per-game setting can exclude short appearances before selecting the latest qualifying games. A zero-minute appearance receives no index.

Other selections

  • Recent games: choose a game window across the full archive; season and competition do not restrict that sample.
  • Season & competition: average all qualifying appearances in the chosen scope. Regular season, preseason, playoffs, play-in and NBA Cup finals are stored separately. “All competitions” includes them; All-Star exhibitions are excluded.
  • Latest Game: a player’s latest recorded appearance within the past 15 calendar days, with more than 10 minutes. A short latest outing is not replaced by an older game.
  • Draft Class: a draft-year cohort, not official NBA rookie eligibility. The preset uses up to 20 appearances in the cohort season and chosen competition.
  • All Time: the average across the available archive, not lifetime points, a career-total score or a complete history of the NBA.

Source minute precision is preserved. A rounded minute value stays rounded; a source with seconds retains those seconds. Overtime games are still scaled to 48 minutes using the player’s recorded playing time.

Stat Leaders shows conventional per-game box-score averages and shooting percentages from total makes divided by total attempts. Those values are not Per48 indexes. Percentage categories require at least 5 field-goal attempts, 2 three-point attempts or 2 free-throw attempts per game respectively; three-point categories require complete three-point data throughout the sample.

How personal fouls are handled

Every box-score personal foul receives a −0.4 raw penalty. Offensive fouls affect Offense; defensive fouls affect Defense. When a reliable split is unavailable, an unclassified personal foul counts as defensive for this index, and the source uncertainty is retained and disclosed. No appearance is removed simply because its foul split is incomplete.

For some loose-ball, flagrant and double-personal fouls, clear possession context can determine the side. These are contextual assignments, not official NBA foul subtypes. Alternate records must agree on the game, player and total personal fouls before being used.

There is no additional technical-foul term. We use personal fouls recorded in the player’s box score; technical-foul events do not trigger a separate penalty. Moving a personal foul between the offensive and defensive buckets changes the split but leaves Overall unchanged.

How Watch Score works

Watch Score is a separate, experimental 0–100 rating for games worth catching up on. It combines four signals:

Watch Score components
SignalWeightWhat it measures
Late-game tension35%Time within six points in the final five minutes, late lead changes and overtime
Competitiveness25%Time within six points throughout the game and lead changes
Standout performances25%The two highest actual game contributions, weighted 70% / 30%, against earlier games in the same competition
Comeback15%The eventual winner’s recovered deficit, or a losing team’s recovery when the final margin is six points or less
Calculation details and incomplete feeds

Late-game tension combines time within six points in the final five minutes (70%), up to two lead changes in the final minute (20%), and overtime (10%). Competitiveness combines time within six points over the full game (70%) and up to twelve lead changes (30%). Ties do not count as lead changes. A twenty-point recovery reaches the maximum comeback component.

Actual player contribution is Overall Per48 × minutes ÷ 48. The two leading contributions are weighted 70% and 30%, then compared with up to 2,000 earlier games in the same competition. At least twenty reference games are required. The 80th–100th percentile maps to 0–100 for this component.

A missing or insufficient play-by-play feed receives no rating. A final-score shortfall of up to three points may receive an estimate only when the winner is unchanged and the conservative Watch Score range is no wider than fifteen points. The displayed estimate is the midpoint of that range. Larger or uncertain discrepancies remain unrated.

This rating is a transparent heuristic, not a validated prediction that everyone will enjoy a game.

Sources and limitations

Completed games are refreshed through the existing hourly update process. An hourly target is not a guarantee of instant source availability. Failed updates retain previously saved results. Missing history and unclassified fouls are disclosed; the archive should not be read as complete NBA coverage.

The box score has limits. These indexes do not measure screens, spacing, off-ball movement, matchup difficulty, opponent strength, defensive positioning or every possession a player influences. The Defensive Index is a weighted box-score component, not a comprehensive ranking of NBA defenders.

Short appearances can produce extreme Per48 rates. Minutes and games filters help with sample selection, but do not make those estimates certain. The index also does not adjust for pace, position, era or teammate effects. Treat it as one lens alongside actual minutes, box scores, game context and watching the player.

The idea grew out of morning catch-ups in Istanbul: following Alperen Şengün and other favorites after the overnight NBA games. Selim Yörük created The 48 Index as an independent fan project.

Common questions

Does a higher index mean a better player?

It means a higher performance rate under this formula and sample. It does not establish overall player quality, team impact or who would win a matchup.

Why 48 minutes?

An NBA regulation game lasts 48 minutes. Using a common time basis makes performance rates easier to compare across different playing time. It is an extrapolation, not a prediction.

Does the dashed chart line change the score?

No. The dashed line is a trailing 20-game moving average shown for trend context. It does not change the leaderboard formula or its equal weighting of selected games.

Is Form the same as the index?

No. Form compares the average Overall Index from the latest 20 recorded games with the previous 20. It is a change measure; the index is the level of performance.

Does a new season reset a player’s default index?

No. Latest-20 mode follows the player across the full recorded archive. Select season and competition if you want a season-specific sample.

Can I change the calculation?

Yes. Open Filters, choose your game window or season scope, adjust minutes and eligibility, then click Run. The scoring weights stay the same.

Is The 48 Index affiliated with the NBA?

No. It is an independent NBA fan project. Its custom splits, ranking selections and Watch Score are not official NBA statistics.

See the numbers in the rankings