Why Rankings Feel Impossible Until They Click
Most people treat player rankings like a math problem. It isn't. I spent years arguing about this online, then actually tried to build a system that didn't make everyone angry, and learned a few things that don't show up in any listicle. Let's start with what most ranking systems get wrong, because that's where the frustration comes from. They weight goals too heavily. Everyone does this. When you sit down and actually try to rank players across eras, positions, and tactical systems, goals are a terrible primary metric. A striker scoring 40 goals in a possession-dominant system with world-class service is not comparable to a striker grinding out 18 in a direct counter-attacking side. That's not a nuanced take, it's just basic football literacy that gets ignored. I built a ranking framework around three pillars, and I still argue with about half the results, but the process at least holds together. The pillars are: decisive moments, positional influence, and longevity-adjusted peak. Decisive moments covers finals, derbies, championship-clinching games, and anything where the outcome genuinely mattered. Positional influence means you can't compare a goalkeeper to a winger the same way you compare two wingers. Longevity-adjusted peak prevents one glorious three-year run from eclipsing seven solid ones.
Here's the practical part. I use a weighted spreadsheet, but the weights aren't equal. For forwards, xG over xA gets a heavier multiplier than total goals. For midfielders, progressive carries and passing networks matter more than key passes. For defenders, clearances into the box and aerial duel win rates in high-leverage situations separate the guys who park the bus from the guys who actually stop chances. I wrote this down once and someone told me it was overcomplicated. It took me four years to realize they were using a Twitter thread from 2016 as their source material. One specific problem I ran into that almost broke the whole system involved comparing Pelé, Maradona, and Messi head to head. Every ranking algorithm I saw gave them nearly identical scores because the available data for Pelé is contested, Maradona's numbers skew heavily toward one tournament, and Messi's later career includes a massive volume of matches that dilute peak impact metrics. My workaround was to create an era-weighting factor. Pre-1990 data gets a higher uncertainty multiplier, and tournaments count double relative to regular league play during eras where competitive balance was lower. It's imperfect, but it stops you from accidentally ranking someone based on incomplete records. Another pitfall nobody mentions: domestic dominance inflates reputation faster than actual performance does. Players who dominate weaker leagues while also playing in Europe get ranked higher than players who thrive in highly competitive environments. I saw this repeat across multiple forums. The fix is simple. Cross-reference UEFA coefficient strength for the era in question, or use league competitiveness indices if you want to go deeper. You'll drop at least three commonly top-ranked players by half a tier once you apply that filter.
If you're building your own ranking, here's the order I found that works. Start with era segmentation. Group players into five-decade brackets: pre-1970, 1970-1989, 1990-2004, 2005-2019, and 2020 onward. Then rank within each bracket using position-adjusted metrics. Only after that do you create cross-era comparisons, and you do it through head-to-head team strength and era difficulty multipliers rather than raw stat comparisons. This took my ranking time from roughly nine hours per major list down to about forty minutes once I had the spreadsheet automated. The biggest mistake beginners make is letting narrative override data. I had a colleague who insisted certain players deserved top-five placement purely because of World Cup finals appearances. Finals appearance matters, but winning them twice in four years and losing the final three times in ten years are not the same thing. I adjusted my scoring to reward final wins at a significantly higher rate than final appearances, and the rankings shifted accordingly. It's one of those changes that sounds obvious only after you've argued about it for six months. For people who want an actual downloadable framework, I host mine on GitHub under a permissive license. The repo includes the spreadsheet template, the era-weighting factors I use, and a short readme explaining how the metrics differ by position. You can find it by searching for the project name alongside "soccer ranking framework." No paid version exists, and I don't plan to make one. The code is straightforward enough that anyone familiar with basic data analysis can modify it.
Get the Full Details

If you're looking for existing tools instead of building something, FBref and StatsBomb offer the closest publicly available data for this kind of work. Both have underlying models that approximate what I described, though neither gives you the exact weighting system for cross-era comparison without some manual adjustment. It's faster to download their raw datasets and apply your own filters than to fight their pre-built rankings, which tend to favor recent eras regardless of how you slice the data. There's no final answer here. Any ranking system will disappoint someone, usually the person whose favorite player got bumped two spots. That's just the nature of the exercise. What matters is that the method holds up under scrutiny and doesn't collapse when you throw weird edge cases at it. My system fails predictably with players from African and Asian leagues before the 2000s because of data scarcity, and I stop arguing with anyone who tries to rank those players above European contemporaries using incomplete statistics. The workaround is transparency: note the data gaps and adjust expectations accordingly.