Matchup table
Row character's win rate against column character
Pick a stage to see if counterpicks actually change anything. Tap any cell to see that matchup on every stage. A star marks a stage where the matchup plays clearly differently from its all-stages number.
row character favored
column character favored
too close to call
clear stage effect
How this works
Counting wins isn't enough
A few great players can skew a character's results. Hungrybox on Puff, Armada on Peach and Axe on Pikachu won so much that raw win rates make those characters look better than they are. So we control for skill level: every player gets a skill rating, a bit like Elo, and a character only gets credit when their players win more than those players' ratings predict.
Counter wheel
Every arrow points from the winner to the loser
Here are the ten most-played characters. Solid arrows are matchups the data is sure about, and dashed arrows are close calls. Pick a character to see who they beat and who beats them.
beats
loses to
thicker = more lopsided
Blind pick
If you had to pick without seeing your opponent's character
The best way to pick blind
Game theory calls this a Nash equilibrium: a way of picking that nobody can beat on average. It's worked out over all ten characters. The other seven never make the mix, because each of them loses to at least one of these three.
The fine print
What went into this
offline tournament games from start.gg where both players' characters were reported.
players, each with a skill rating. Players are matched by start.gg account, so someone who changed tags, like iBDW to Cody Schwab, still counts as one person.
50/50
is how an even matchup reads once skill is taken out. When a strong player wins a lot, most of the credit goes to their rating instead of their character.