← Back to the race

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:

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:

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

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:

StatAll-time leaderCareer total
PointsLeBron James42,184
ReboundsWilt Chamberlain23,924
AssistsJohn Stockton15,806
StealsJohn Stockton3,265

Limitations & caveats

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.