Tool
Who is the greatest NBA player of all time?
Every published ranking that could be found and verified, pooled into one. of them, from publications, placements.
Talking points
What the rankings say when you read them together
Each of these is computed from whatever sample is currently selected, so they change as you change the rules further down.
The result
The consensus ranking
Score is relative: the leader is set to 100. Ballots shows how many of the selected rankings named the player, against how many they were eligible for — the honest denominator, since a list published in 1996 cannot name a player who debuted in 2003. Switch on the era or position breakdowns and those rankings count toward a player’s denominator only when they name him: a ranking of the best 1960s players, or the best centers, cannot be read as having weighed Michael Jordan and left him out, so it is never counted against him. You can also remove individual rankings: open “show every one” below and click any of them. The table then shows how far each player moved as a result.
| # | Player | Ballots | Meta-score | |
|---|---|---|---|---|
Change the rules
Narrow the evidence further
Beyond the breakdown above, two blunter instruments: count only rankings published recently, or require a player to appear on a minimum number of them before they show up at all. Nothing is recomputed on a server — the whole ranking is rebuilt in your browser from the underlying placements.
Scoring from rankings (). Statistical leaderboards are always held out of the score, and fan votes are excluded from the corpus entirely — these are expert and editorial rankings only.
| Ranking | Year | Names | Covers | Counting? |
|---|
The independent check
The eye test against the box score
The horizontal axis scores players the same way but from career statistical leaderboards — Win Shares, VORP, BPM, PER and volume totals — which are never part of the ranking. Points off the diagonal are where reputation and production disagree.
Agreement
Where the sources agree, and where they argue
Each bar is the span between a player’s best and worst placement, with the median marked. Only rankings at least 50 names long count here, to a depth of 50, so every ranking drawn stops at the same point and the numbers are comparable. A short bar is consensus; a long one is an argument.
The shape of it
The full distribution, player by player
The same evidence as a density: where the rankings actually put each player, with the individual placements drawn underneath so you can see how many there are. A tall narrow peak on the left is agreement; a long tail to the right is dissent.
Two kinds of greatness
Breadth against peak
Across is how many rankings name the player at all. Up is the single best placement they achieved anywhere. Being named everywhere and being named first are different achievements, and the players who manage both sit in the top right.
Reputation over time
How the canon updates itself
The same players scored twice: once from the older half of the rankings, once from the newer half. Above the line means more recent writers rate them higher. Active and recently retired players are necessarily favored, since the older rankings could not name them.
What it is built on
The evidence base
Every ranking in the corpus, placed by how many names were captured from it. Hover any point for the publication and year; the rankings currently feeding the score are solid, the rest are faded.
Does the method matter
Robustness
Rank correlation between different ways of scoring the same placements. If the answer only holds under one formula it is an artefact of the formula; these mostly agree, which is the point. The informative exception is the career statistics, which are held out of the score.
Who is in the sample
Composition
Both panels describe the players in the current sample — and both are controls. Click a bar to restrict the ranking to that decade or position; click it again, or use the chip in the toolbar, to clear it.
Take the data
Download
All three files are generated in your browser from the data already loaded — no request leaves the page. The ranking reflects your current selection; the other two are the full corpus.
The placements file is the real unit of evidence: one row per player per ranking, with the published rank and the credit it earned. Everything on this page is derived from it, so you can reproduce or replace the scoring rule entirely.
Method
How it works, and what it can’t tell you
Nothing was recorded from memory. Where a page yielded only part of a list, the partial capture was recorded and the shortfall noted rather than padded.
The scoring rule
For a player at rank r on a list of captured length N, that listing earns
and the player's score is the total credit divided by the ballots they were eligible for, shrunk toward the corpus mean:
- The
0.40floor is what a player earns for being named at all, so broad agreement can outweigh one spectacular placement. - Dividing by
log(N + 1)puts long and short lists on equal footing — ranking #40 on a list of 100 is an achievement; #40 of 40 is last place. - The logarithm in r makes #1-versus-#10 matter far more than #90-versus-#100.
- Dividing by eligible ballots stops a player being punished for lists published before they debuted. The shrinkage term is what prevents someone eligible for three ballots and named first on all three from scoring a perfect 100.
- Only lists with a formal rank order are included. The NBA's own 35th Anniversary Team (1980) and 50 Greatest Players (1996) were captured and then excluded: they name members and decline to order them, and a list that ranks nobody has no rank information to aggregate. Scoring them meant inventing a position for every member — each of the 50 Greatest was credited as if he had finished seventh of fifty — which flattered the players who make honour rolls but place modestly on real rankings.
wis 1.0 for every expert list — fan votes are excluded from the corpus rather than down-weighted — multiplied by a length weight of log(N)/log(100). A ten-name listicle inflates the eligible-ballot denominator of every player it was never going to name, so it counts as a fraction of a ballot on both sides of the ratio. This barely touches the top (Spearman 0.998 against equal weighting; the top four do not move) and lifts exactly the mid-table players it should — Elvin Hayes, Kevin McHale, Jason Kidd. It is a precision correction, not a bias one: short and long lists name the same kind of player, with a median debut of 1984 in both.
Why the default is all-time lists only
Era and position lists answer a different question, and they introduce an eligibility asymmetry: a point-guard list cannot name Michael Jordan and a 1960s list cannot either. Turn them on with the filters above and see for yourself.
Worth knowing which way this cuts. Era lists were quietly handing modern players extra bites at the apple — a 2020s player can appear on the 2010s list, the 2020s list and the 21st-century list, while a 1960s player has one. Including them makes the ranking friendlier to recent players, not to older ones, which is the opposite of what most people expect.
Record linkage: telling players apart
The hazard is not spelling but family. Tim Hardaway and Tim Hardaway Jr. are different players, as are Gary Payton and Gary Payton II. Any normalization that treats a generational suffix as decoration merges a father with his son, so the suffix is part of the identity key and nothing crosses it.
Matching thresholds were calibrated against hand-labelled pairs rather than chosen by feel, and the calibration changed the design twice. Full-name edit distance proved unusable: genuine misspellings reach Jaro–Winkler 0.068 while different players start at 0.041, so the ranges overlap and a first version merged Charles Barkley with Charles Oakley. Surname distance separates cleanly, but surname alone then merged Dale Davis with Walter Davis. The final rule requires both to match closely.
De-duplicating sources: why overlap alone is the wrong test
The pool of plausible all-time greats is small, so two independent top-75 lists naturally share about 90% of their names. That agreement is the signal, not a double capture. What separates a re-capture from agreement is order: two captures of one published list rank the shared players almost identically, while two independent lists agree on membership and argue about the order. Sources are merged only when overlap is high and rank correlation is near-perfect. One pair correlated 0.982 across 73 shared players and is treated as a reprint; genuinely independent lists correlating 0.62 to 0.93 were all kept.
Limitations
- Recency runs one way. A list from 2011 cannot name a player who debuted in 2018. Dividing by eligible ballots corrects the arithmetic, but it cannot manufacture the judgement that was never made.
- Coverage is Anglophone and US-dominated. Several major outlets block automated access, so no UK or Spanish broadsheet ranking is here.
- Two players can share a name. One source lists two different Eddie Johnsons at adjacent ranks; without birth dates there is no way to separate them, so they are pooled. An acknowledged error, deep in the tail.
- Cumulative statistics are not neutral. They reward longevity, and BPM and VORP do not exist before 1973–74.
- Position coding is consequential. Whether Tim Duncan is filed at center or power forward changes which position looks strongest; his reference page lists both.