Elo Ranking Shot Stoppers
Because every ranking problem can be answered by Elo, right?
Shot stopping is the most valuable skill on the pitch. This is relatively common knowledge, and it makes sense if you think about the basic math. Most actions in a game of soccer are relatively low value. Even a visionary progressive pass can massage the probabilities of a goal just a few percentage points. When you stack up all the impacts of on field actions, they all pale in comparison to a stopped shot.
A shot of about 0.5 xG On Target has an equal chance of being scored as being saved according to the xG mode. This means that in the moment of the shot, the goalkeeper has the opportunity to significantly sway the outcome of the match. It’s rare for most field players to approach 0.5 expected value added or lost in a game, and some don’t even hit that much in a season. The difference between an average central midfielder and an elite one is just a handful of stopped shots at best.
That said, goalkeeper statistics are sometimes frustrating. It’s difficult to get good data and reduce it into a single number for comparisons due to the scale of shots it requires for any sort of certainty. G/xGOT is probably my personal favorite, but due to the fact that the xG numbers are so easy to impact from large events, it’s hard to trust that entirely.
Not only that, but at the top level goalkeeper form can be all over the place. For example, Zack Steffen’s general shot stopping stats have been putrid since his return to MLS, but in 2025 so far he’s looked excellent. Is this just a hot run of form, or is he returning to the level that earned him a move to Europe? Hard to say.
For that purpose I decided to build a modified Elo ranking to determine goalkeeper level. An Elo ranking is useful because it takes into account every performance, but also has a bias towards recent events that allows it to account for form. The math is fairly simple, and the output is useful for a direct comparison between individuals.
Typically an Elo model will have two opponents, each with their own individual rating. I did away with that and treated each shot as the opponent, and the xGOT as the starting point. Then, I used the goalkeeper rating (50 for a brand new keeper) to modify the expected likelihood of a save. The rating was then adjusted based on the shot outcome.
Because the overall number of shots that keepers face is relatively few, I also included a function to make the rating highly volatile in the early going - rapidly adjusting the rating over the first shots - before gradually making each shot less impactful and leveling off at 500 shots.
The early results were promising, based on the all time highest ranked shot stoppers (this is their absolute peak, not where they ended up or are currently):
Matt Turner (66.25)
Andre Blake (65.67)
Stefan Frei (65.11)
Tim Melia (63.97)
Bill Hamid (63.80)
The worst rated keeper with over 50 shots faced was William Yarbrough, if you’re curious.
The 5 best keepers in the year 2025:
Kristian Kahlina (61.19)
Roman Burki (61.06)
Andre Blake (58.71)
Stefan Frei (58.59)
Matt Freese (55.81)
The worst 5:
Sean Johnson (36.46)
Maxime Crepeau (37.45)
Zack Steffen (39.05)
John Pulskamp (39.13)
Chris Brady (41.55)
However, the issue I found is that ratings could update rather rapidly and a keeper with an above average career - someone we might think is very good - would quickly fall to below average after just a few poor games. I think that’s the fatal flaw, and it ties back to the earlier point regarding form. It’s actually very hard to determine just how good a goalkeeper is relative to his opposition. The really good ones - Turner and Djordje Petrovic, for example - don’t stay in the league long. Matt Freese being the 5th best keeper in the league despite only being 5 points above the “average” is a little hard to scale.
Also, because there isn’t two opposing competitors, Elo might not be the best approach. It’s more suited to a “gambling” style system where points are being split on both sides based on a predicted outcome.
Anyway, it wasn’t a bad way to spend an afternoon even if it isn’t a stunning outcome. I also made an awesome Tableau dashboard to present my findings. It’s got a lot of neat bells and whistles as well as a breakdown of a number of different shooting metrics.
That’s where the really interesting stuff is, and it’s very interactive. If you want to know which side a keeper defends well, or whether or not they’re good at the near or far post, or where they tend to let in penalties - it’s all in there.



