Smash Ultimate Dataset + Elo Calculations


Since I’ve started hosting my Elo rankings for ultimate and melee many people have asked me for the data. I had been somewhat busy and the data had, uh, issues, but I’ve cleaned up some data for the most important of Ultimate tournaments and released them here. The details are below.

If there is interest, I can also release the Melee counterpart. Additionally, below is the general algorithm I use for Smash Ultimate.


Get it here!

If you use it, it would be nice, but of course not necessary, to mention this site and me for compiling it and for the source.

This is the set information for a selection of large majors (>800 entrants) in Super Smash Bros Ultimate. Here are the fields

Field Description
winner_global_id player id of the set winner
winner_char character code for winner; can be None and often is
winner_name player name; does not include sponsors and is not unique
loser_global_id As expected
loser_char As expected
loser_name As expected
winner_score Set score of winner (Can be 3 or 2 or 0); can be None
loser_score Set score of loser (Can be -1 if disqualified or forfeit); can be None
tournament_name name of tournament
endDate Unix timestamp of when the set was reported to finish
round Integer representing the round; negative represents lower bracket

Note that character information only exists when reported, i.e mostly in streamed matches. I would recommend imputing them based on known character mains if you are doing character driven analysis.

The following tournaments are included

Genesis 6
Frostbite 2019
2GG: Prime Saga
Pound 2019
Umebra Japan Major
Get On My Level 2019
Momocon 2019
Smash'N'Splash 2019
CEO Fighting Game Competitions 2019
Albion 4

Elo Methodology

The base Elo algorithm has some issues within the context of Smash Ultimate. First, a priori we know that players care more or less about a tournament relative to its prestige, and that prestige in Smash is correlated with entrant number (i.e the tournament tiering). However, we also know that it is not a linear increase; players take S-tiers (>1200 entrants) only a little less seriously than a Super Super Major like Genesis (>2000 entrants). So that needs to be factored in.

Secondly, Smash sets due to the short time frame and momentum are a unit, and that due to momentum a 3-0 is almost, but not quite like winning 3 times in a row.

Thirdly, Smash is played in a double-elimination bracket, unlike Swiss in chess or round robin in leagues like the NBA or NFL. This can present problems, where people who have long loser bracket runs gain more Elo than their upper bracket counterparts. That doesn’t seem right, so upper bracket winners are given a bonus for their wins so as to reward upper bracket play.

Fourthly, as is used by FIDE, it makes sense that Tweek, or MkLeo, or Dabuz who have a great deal of history should be given the benefit of a doubt. They’re not likely to suddenly rise in skill or suddenly decrease in skill. If one of them (especially Tweek) loses to someone significantly below them, we shouldn’t shift as much. On the contrary, new players should have the opportunity to show their stuff. So a seperate experience factor is given to each player inversely proportional to their number of recorded sets.

With that out of the way, let’s define some variables

Let \(elo_i\) be the elo of the ith player.

Let \(n\) be the number of entrants

Let \(R\) be the result of the game, either 0 if player 1 lost or 1 if they won

Let \(s_i\) be the set score of player i

Let \(b\) be 1 if upper bracket, 0 otherwise

Let \(w_i\) be 1 if player i won, 0 otherwise

Let \(h_i\) be the history length of player i

$$elo_1’ = elo_1 + 20 * (1 + b * 0.5 * w_1)(\min(\frac{5}{h_1} + 0.4, 2))(1.95 + \frac{-1.82}{1 + (\frac{n}{1040.56})^{1.762}})|s_1 - s_2|^{0.9} (R - \frac{1}{1 + 10^{-\frac{elo_1 - elo_2}{400}}})$$

Contact me at or @stu2b50 on Twitter

← Back