Methodology & sources
Every bar in The Climb is a sourced number. This page documents where the data comes from, how the running totals are built and what the known limitations are.
What the charts show
Four synchronized races track the NBA’s leaders in four stats, driven by one shared clock. A toggle switches every chart between two views:
- Career totals — each bar is the player’s cumulative career total through the end of that season. Retired players keep their final total and hold their place until someone climbs past them.
- Per-game · season — each bar is that single season’s per-game average (season total ÷ games played). The board resets and reshuffles every year, so you watch who led the league each season — Wilt’s 50.4 points a game in 1961–62, and so on. Because every season is an independent leaderboard with heavy turnover, this view moves furiously. To move like a real horserace chart, the bars glide between seasons; the numbers shown are exact at each whole season, and the scrubber snaps to whole seasons so a figure you stop on is always a real one.
- Per-game · career — each bar is a player’s running career per-game average (career total ÷ career games to date), updated every season, for players with at least 400 career games. Because it is cumulative, it climbs slowly and stays sticky like the totals race, and a player holds their final average after retiring. This answers “best per-game over a whole career” — Jordan and Wilt at 30.1 points a game, Magic at 11.2 assists.
Each chart shows the top 20. A small glowing star (✦) marks any player who is among the top 20 on two or more charts at the same moment — a scorer who also rebounds, a passer who also gets steals. In the career view, a player’s bar dims once the clock passes their final season, since they’ve stopped climbing and are only holding their total.
The four stats:
- PTS Points — from the 1946–47 season
- REB Total rebounds — from 1950–51
- AST Assists — from 1946–47
- STL Steals — from 1973–74
Source
All figures are the official season totals published by Basketball-Reference.com, pulled from each season’s totals page (e.g. /leagues/NBA_2024_totals.html, and /leagues/BAA_1947_totals.html for the league’s first three seasons under its original name, the Basketball Association of America). One season’s page lists every player’s totals for that year; summing them in chronological order yields each player’s running career total.
How a running total is built
- For each season from 1946–47 to 2024–25, every player’s single-season total for the stat is read from that season’s page.
- Players are identified by their unique Basketball-Reference player ID (e.g.
jamesle01), so totals accumulate correctly even for players with identical names or accented spellings. - A player traded mid-season appears on Basketball-Reference as one row per team plus a combined-total row (labeled
2TM,3TMorTOT). We keep only the combined row, so each season is counted exactly once. - Totals carry forward through seasons a player did not play, so retired legends stay on the board and get chased down rather than disappearing.
Per-game qualifier
Both per-game views need a minimum sample so flukes can’t top the board, mirroring the NBA’s own rate-stat rules. Per-game · season requires games played ≥ 70% of that season’s schedule (schedule length is taken as the most games any player logged that year, which auto-scales to lockout- and pandemic-shortened seasons). Per-game · career requires at least 400 career games before a player appears. Players below these thresholds are omitted from the relevant per-game view; their career totals are unaffected.
Verification
The computed final (2024–25) all-time totals match Basketball-Reference exactly. A few anchors:
| Stat | All-time leader | Career total |
|---|---|---|
| Points | LeBron James | 42,184 |
| Rebounds | Wilt Chamberlain | 23,924 |
| Assists | John Stockton | 15,806 |
| Steals | John Stockton | 3,265 |
Limitations & caveats
- Regular season only. Playoff totals are not included.
- NBA/BAA only. Statistics a player accumulated in the rival American Basketball Association (ABA, 1967–1976) are not part of these NBA career totals — this affects players like Julius Erving and Moses Malone.
- Stats began when the league began tracking them. Rebounds were not recorded before 1950–51 and steals not before 1973–74. Those early years are intentionally left blank, never zero-filled, and each chart only starts racing once its stat exists. Blocks and turnovers (also first tracked in 1973–74) are not shown here.
- Recency. Totals run through the completed 2024–25 season. Current standings will shift as active players keep accumulating.
- Always spot-check any single figure against Basketball-Reference before citing it.
Build
Data was scraped once into data/raw_seasons.json (25,171 player-seasons), then reduced to cumulative keyframes in data/data.json by a script (build.mjs). The page is static HTML/CSS/JavaScript with no tracking and no external dependencies beyond the web fonts. Built with AI assistance; the data pipeline is open and reproducible.