Metric Hoops — Home

Team Pages

Overview

Playstyle Profile

A six-spoke radar of the team’s identity — Offensive Rating, Defensive Rating, eFG% (shooting efficiency counting threes as worth more), Rebounds, Pace (how fast they play), and Turnovers. The further a spoke reaches, the better the team is at that thing. Two spokes are flipped so that further-out always means better: Defensive Rating (allowing fewer points is good) and Turnovers (committing fewer is good).


How a spoke's length is set

This is nota percentile against the rest of the league that season — each raw stat is stretched onto a fixed 0–100 scale using two anchor points calibrated across NBA history, then clamped so it can never go below 0 or above 100. A truly historic outlier season still just reads as a full spoke, it doesn’t break the chart.

Hovering a point instead shows two different numbers on purpose: the team’s raw stat for that axis, and separately its percentile rank against every other team that season (100th = best in the NBA, 50th = exactly middle of the pack). The percentile answers “how good was this team that year,” while the spoke’s length answers “how good is this, on an absolute scale that means the same thing in 1985 and in 2025.”


What each axis actually measures

  • Offensive Rating — an estimate of points scored per 100 possessions: the team’s points per game, scaled against an estimated number of possessions per game. It’s an approximation, not the league’s official advanced stat, since it doesn’t fully account for the opponent’s pace and rebounding the way the true formula does.
  • Defensive Rating — the same approach mirrored for points allowed per 100 possessions. Lower is better, which is why this spoke is flipped.
  • eFG%— effective field-goal percentage: shooting efficiency adjusted so a made three counts for more than a made two, since it’s worth an extra point on the same attempt.
  • Rebounds — total rebounds per game, offensive and defensive combined.
  • Pace — an estimate of how many possessions per game the team plays through (shot attempts, adjusted for free throws, minus offensive rebounds, plus turnovers). Higher means a faster-playing team, not necessarily a better one.
  • Turnovers — turnovers per game. Fewer is better, which is why this spoke is flipped too.

Every raw number is built from real per-game box scores for the season and game type (Regular Season or Playoffs) currently selected on the page — not a career or multi-season blend.


The 0–100 anchor points

Each axis has its own low anchor (→ 0) and high anchor (→ 100), picked to comfortably bracket real NBA team-seasons:

Offensive Rating: 98 → 0 · 120 → 100

Defensive Rating: 118 → 0 · 100 → 100 (flipped)

eFG%: 48% → 0 · 60% → 100

Rebounds: 38 RPG → 0 · 56 RPG → 100

Pace: 85 → 0 · 110 → 100

Turnovers: 16 → 0 (flipped) · 9 → 100

A team landing outside an anchor (a historically extreme pace or rebounding season, for example) just clamps to 0 or 100 rather than overshooting the chart.


The dashed league-average line

Built by averaging every team’s raw stats for that season first, then running that single average team through the exact same 0–100 formula above — it is not an average of each team’s already-scored spokes. That’s why the dashed line drifts a little from season to season as league-wide pace and efficiency change, while the anchor points themselves never move.


How far back the data goes

Every season back to 1979-80— the season the 3-point line was introduced and this site’s box-score data begins — for both Regular Season and Playoffs.

One era caveat: for seasons before about 1983, some of the league’s original team-level shooting totals have a known data-quality issue (stored as zero instead of missing). For those seasons, the site rebuilds the team’s shooting numbers from real individual player box scores from the same games instead — the final stat is accurate, it’s just sourced a different way for that stretch of NBA history.

Roster

Possession Outcomes

A Sankey flow diagram for the team’s top 7 players by points + rebounds + assists combined. Each player is a node on the left; each possible outcome is a node on the right. The width of the ribbon connecting them reflects volume — a thicker ribbon means that outcome happens more often for that player.


Three data tiers, most detailed first

The categories shown depend on what data is available for that player and season — it quietly upgrades to the best tier it can:

Made FG · Missed FG · Shooting Foul · Off Foul · Bad Pass · Lost Ball

Made FG · Missed FG · Foul Drawn · Turnover

Points · Rebounds · Assists

The first (6-way) tier uses real play-by-play tracking to split fouls into shooting vs. offensive, and turnovers into bad passes vs. lost balls. The second (4-way) tier is the fallback for seasons or players without that play-by-play detail: Made/Missed FG are estimated from field-goal attempts × field-goal %, Foul Drawn is estimated as free-throw attempts ÷ 2 (roughly two free throws per shooting foul), and Turnover is the season’s raw turnover rate, undifferentiated by type. The third tier is a last resort when neither shot-volume nor play-by-play data exists at all — it isn’t possession outcomes, just a basic points/rebounds/assists split, so the ribbons mean something different than in the other two tiers.


How far back the data goes

Field-goal-attempt-based data (the 4-way tier) goes back to 1979-80, same as the rest of the site’s box scores. The richer 6-way play-by-play breakdown — the one that splits foul and turnover types — is only available from 2005-06onward, since that’s when that level of play-by-play tracking begins in the dataset.

Game Logs

Performance Consistency

Shows how much the team’s output bounces around game to game across points, rebounds, and assists. Rather than a single average, each stat is drawn as a spread — the typical range the team lands in, versus the league average — so you can see whether a team is metronomically steady or wildly boom-or-bust. A wide spread means an unpredictable team; a tight one means you know what you’re getting every night.

Payroll

Salary Cap Position

A horizontal gauge showing where the team’s total guaranteed payroll for the selected season falls against four league-wide dollar thresholds. The colored zones on the bar (green → yellow → orange → red → darker red) mark each threshold; the team’s actual payroll is the solid-filled portion.


The four thresholds

  • Salary Cap— the league’s target payroll level. It’s a softcap: teams routinely spend above it using various league-approved exceptions, so being over isn’t unusual on its own.
  • Luxury Tax — the threshold above which a team starts paying the league a dollar-for-dollar (and progressively steeper) tax penalty for every dollar of payroll above it.
  • 1st Apron and 2nd Apron — hard restriction lines introduced by the 2023 CBA. Crossing them locks a team out of more and more common roster-building tools (certain trade exceptions, cash in trades, sign-and-trades, and more as you go from the 1st to the stricter 2nd apron).

Where the dollar figures come from

For seasons the league has officially announced (2023-24 through 2026-27), the exact real thresholds are used, sourced from the NBA league office’s own announcements. For seasons without an official number yet, the tax and apron lines are projected from that season’s cap using fixed ratios averaged from the three confirmed seasons:

Luxury Tax ≈ Cap × 1.2151

1st Apron ≈ Cap × 1.2671

2nd Apron ≈ Cap × 1.3452


What counts toward the total

Guaranteed salary only — a player’s Team Option or Qualifying Offer year is excluded from the total, since that money isn’t locked in yet (matches the “Excludes Team Options and Qualifying Offers” note under the chart).


How far back the data goes

Team payroll and cap-line data go back to 1990-91. One caveat: the apron lines are a real rule only starting with the 2023-24 season’s CBA — aprons didn’t exist before then. For older seasons, the apron-style lines still shown on the gauge are the modern projection formula applied backward for visual consistency, not an actual rule that existed that year.