about

What this site is.

A statistics hub for every NBA player, team, and season since 1946 — with an era-adjusted lens running through every page so cross-decade comparisons aren't apples-to-oranges.

What's here

  • 4,000+ player profiles with career and season-by-season stats, awards, championships, and an era-adjusted multiplier showing how each player's career compared to the league average of their playing years.
  • Era-adjusted leaderboards — the closest answer this site has to the "Wilt vs Jordan vs LeBron" debate.
  • Era comparison — how scoring, rebounding, assists, and shooting % have moved decade by decade since 1946.
  • GOAT calculator — tunable weights across awards, longevity, peak, recognition, and playoff performance, with a one-click era-adjusted toggle.
  • Compare 2–4 players side-by-side; build a starting five from any era.
  • Per-season hubs with standings, MVP / Finals MVP / scoring leader, and full league averages for the year.

Data sources

  • Wyatt Walsh's Kaggle Basketball Dataset — the foundation for player info, season stats, and game logs through 2022-23.
  • Basketball-Reference — current and recent standings, scraped nightly, since the Kaggle dataset stops in 2023.
  • NBA API for current-season per-game stats; awards and championship rosters compiled from public sources.

Stats are refreshed nightly at 04:00 UTC.

How era-adjustment works

For each player season (≥30 GP), the player's PPG / RPG / APG is divided by the league average of qualifying players in that same season. The career ratio is the GP-weighted average of those season ratios. So Wilt's 30.1 career PPG vs his era's ~12 PPG league average lands at a 2.56× career multiplier — and his single-season 50.4 PPG in 1961-62 hits 4.09×, the most dominant scoring season ever recorded.

For shooting percentages (FG%, 3P%, FT%) the gate is "made at least one shot in that category" rather than attempts, since the underlying dataset omits attempts columns for 2014+ seasons.

Tech

Static site, generated by a Python build script with Jinja2 templates. The output is plain HTML/CSS/JS — no server-side rendering, no database queries at request time. Everything you click was pre-computed at build time, including the era ratios and rankings.