Height
How good were you at your best?
Your 3 best seasons, each one measured by how far above that year's elite you were. Then I average them.
This is the peak. High here means nobody in your era could do what you did those years.
APEX Galaxy
Right is how high they peaked, up is how long they stayed great, forward is how far they pulled away from everybody else. Look at the top corner. That's probably who the stats say is the GOAT of GOATs. Then search CR7 and get mad with me.
Every star is one athlete's whole career. Three things to look at:
By default you're seeing the top 125 from each sport plus the outliers, 0 stars total. If you want the full thing, check Show everybody and all 0 athletes in the data show up. It gets crowded.
Quick idea first. Every season, every league has an elite tier, basically the best players that year (around the top 1 in 8 who played enough). All three axes measure you against that group. So a 1965 season gets compared to 1965, not to 2025. That's the only fair way I could find to put Bill Russell's era and Jokić's era on the same map.
How good were you at your best?
Your 3 best seasons, each one measured by how far above that year's elite you were. Then I average them.
This is the peak. High here means nobody in your era could do what you did those years.
How long did you stay great?
A straight count of how many seasons you finished inside the elite tier.
One monster year counts once. Fifteen really good years count fifteen times. Reggie Miller is my guy here: 11 elite seasons and never once the best in the league. Derrick Rose is the flip side. MVP at 22, then the injuries. One elite season. Still hurts.
How far ahead of everyone were you?
The gap between you and the next best player that season. I take your 2 biggest gaps.
Being #1 is one thing. Being #1 by a mile is this. Barry Bonds in the early 2000s is the answer, and nobody on the map scores higher.
Heads up: Height and Separation end up pretty close for most people, since the highest peaks usually come with the biggest gaps. Length is where careers really split apart.
The GOAT score mixes the three axes. Right now it's Height %, Length %, Separation %.
I didn't just pick those numbers. I tried every combination in 5% steps and kept the one that lined up best with the all-time lists people already argue about: ESPN's #NBArank, The Athletic's NHL99 and NFL 100, Joe Posnanski's Baseball 100, FourFourTwo's top 100, and a few more. That mix is the Experts preset.
You don't have to agree with it. Drag the sliders under Your GOAT formula and watch the stars resize. The #1 at the top changes too.
Me? I'm a Longevity guy. Anybody can have a year. CR7 has 19 elite seasons, and Brady has 18. Flip to Longevity and LeBron takes #1, which is fair, I guess.
Where the model and I don't agree: Jordan 7th in the NBA. Kobe 24th. Maradona 24th in soccer. Take it up with the numbers.
Scores are scaled so 50 is the average of a sport's top 100 and 99 is the single best career on the map.
This was the hardest part. Every sport gets one "season value" number, using the best all-around stat I could get for it, and that number goes up against that season's elite.
Soccer was the worst to fit in, which is kind of ironic considering why I built this. The only stat I could find for every era was league goals.
| NBA | Win Shares + VORP, per 82 games |
|---|---|
| NHL | Points per 82 games (defensemen scaled up so they're not buried under forwards) |
| MLB | Hitters: OPS+ above average × plate appearances. Pitchers: ERA+ above average × innings |
| NFL | Approximate Value from Pro Football Reference, per 17 games |
| Formula 1 | Points per race, using today's points system for every era |
| Tennis | Wins weighted by how big the tournament was, minus half-weighted losses |
| Soccer | League goals per 34 matches |
First, a problem I ran into. Height, Length and Separation move together. If you were great at your peak you usually lasted and usually lapped people too, so on the default map almost everybody sits on one diagonal from bottom-left to top-right. It's true, but it hides the interesting stuff.
So there's a second layout called Style view. Height stays on the X axis. The other two become "compared to your peak":
Zero is "about what you'd expect." Now the three axes barely overlap, and the weird careers end up at the edges where you can actually see them. Brady, Gordie Howe, Zlatan and Djokovic go straight up. Aaron Judge, SGA and George Mikan fall to the floor.
The GOAT score rewards players who were great at everything. That leaves out a certain kind of guy, the one who was elite at one thing and just okay at the rest. Those are some of the most interesting careers on here, so I tagged about 100 of them. Turn on Show the outliers and their names light up in the color of the axis they break. It works on any layout, but Style view is where they make the most sense.
How I picked them: in each sport, take the top 50 on one axis, then keep the 5 whose GOAT rank is furthest behind. Anyone who wasn't already in the default view got added.
I'd rather tell you now than have you find it. NBA, NHL, MLB, F1 and tennis use every player in league history, so the elite tier is legit. NFL and soccer use a smaller group I put together, which is why their cards say lower data confidence.
Data: Basketball Reference, the Lahman Baseball Database, the NHL Stats API, f1db, Jeff Sackmann's tennis data, Pro Football Reference, Wikipedia.
| Drag | Spin the galaxy |
|---|---|
| Scroll | Fly toward wherever your cursor is |
| Right-drag | Slide around |
| Click a star | Open that player's card |
| Shift + click | Add them to a side-by-side comparison |
| Search | Jump to anyone, even players outside the default view |
| Axis menus | Swap an axis for GOAT score, era, debut year and a few others |
| Esc | Back to the start |
I started this during the World Cup, watching USA casuals go back and forth with football fans about who the real GOAT of GOATs was. Naturally I'm biased. CR7 is the greatest athlete of any sport (he is). But I wanted to actually back that up instead of just guess.
Most GOAT debates end up at stats anyway, so I leaned into that. The hard part was making the stats fair across sports that have nothing in common, which is what the whole elite-tier thing is about.
For the record, the model has CR7 19th overall and 3rd in soccer. I'm still working on that.
If you leave without being completely pissed off about where your guy landed, or who's missing, I'll call that a win. I love sports, I love numbers, and I like getting into people's heads. This is all three.
Babatunde Gbadegesin, Technology and Information Design at the University of Maryland. Data pipeline in Python, galaxy in three.js.
Loading the galaxy