About this project
A number that tells the truth about a fighter.
For time immemorial a debate has raged in the MMA community. Who is the GOAT?? Jon Jones, Georges St-Pierre, Khabib. Look anywhere online and you will see these names thown around plus many more. This site aims to settle the debate for good. Official UFC rankings are decided by a panel. Panels have opinions, politics, and blind spots. MMA ELO has none of those things. Win, and your number goes up. Lose, and it goes down. Beat a highly-rated opponent, and it goes up a lot. Thirty years of fights, reduced to a single comparable figure per fighter per division.
How it works
ELO is a rating system originally developed for chess. Every fighter starts at a baseline rating of 1500. After each fight, points transfer from loser to winner, how many depends on how surprising the result was. An underdog who wins gains more than a favourite who does the same.
Divisional ratings are independent. A fighter who competes at both Lightweight and Welterweight has two completely separate ELO scores. Moving up in weight doesn't carry your rating with you; you start fresh at 1500 in the new division. This mirrors reality: being the best lightweight in the world tells you very little about how you'd fare against the best welterweights.
Pound-for-pound is career-spanning. The P4P rating runs across all weight classes and never resets. It answers a different question: not "who is the best in this division?" but "who is performing at the highest level, wherever they compete?"
Why ELO over other systems?
ELO is transparent, deterministic, and has no free parameters to tune after the fact. Given the same fight history, two independent implementations will always produce the same ratings. There's no secret sauce.
More sophisticated models can incorporate finish method, round, striking stats, or takedown numbers. But those models are harder to audit, easier to overfit, and tend to reward style over winning. ELO's simplicity is a feature: the only thing that matters is whether you beat the person in front of you.
The K-factor — which controls how much a single fight moves your rating — is set at 40. Higher than classical chess (where it's often 10–32), because MMA upsets are more common and careers are shorter. A fighter shouldn't need fifty fights before the model has a useful opinion about them.
Standing on shoulders
This project would not exist without Trevor Hicks, who built the original UFC ELO engine and shared it openly. The Python pipeline at the heart of this site. The scraper, the ELO calculation logic, the fight-by-fight processing its all built on his work.
If you want to understand where this all started, his YouTube walkthrough is the place to go.
Watch Trevor's videoThe scraper targets UFCStats.com for fight data and UFC.com/rankings for the official ranking snapshots. Rankings are matched to fighters by name, with manual overrides for known discrepancies. The pipeline runs weekly via GitHub Actions.