Ping Pong

How Elo works

The math behind the rankings, and how your rating moves after every match.

The basics

Every player starts at 1500. After each match, both players' ratings shift by the same amount in opposite directions — the winner gains what the loser loses. There are two things that decide how big that shift is: how surprising the result was, and how lopsided the score was.

Seasons

Every calendar month is its own season, and only that month's matches count toward it. On the 1st, everyone's season rating starts over at 1000.

Seasons also pay a win bonus: the winner gains 1.2× the normal amount, while the loser still loses the normal amount. In an even 21-15 game that's +25 / -21 instead of ±21, so ratings climb as more games get played.

The all-time leaderboard never resets and uses classic Elo, starting at 1500 with no bonus. The first season (September 2026) was also played under classic rules.

1. How surprising was it?

Before the match, the rating gap between the two players estimates the winner's odds of winning. If the ratings are equal, it's a coin flip.

expected = 1 / (1 + 10^((loser's Elo − winner's Elo) / 400))

The lower the winner's expected chance was, the bigger the upset — and the bigger the rating swing.

2. How lopsided was the score?

A 21-20 nail-biter isn't the same evidence of a skill gap as a 21-5 blowout, so the score margin scales the rating shift, capped at 2× so one wild game can't swing things too far.

multiplier = 1 + |winner's score − loser's score| / 20 (capped)
ScoreMultiplier
21-201.05×
21-151.30×
21-101.55×
21-51.80×
21-12.00×

3. Put it together

change = 32 × (1 − expected) × multiplier

32 is the "K-factor" — how fast ratings move for a group this size. The winner's rating goes up by that amount; the loser's goes down by the exact same amount.

Worked example

Two 1500-rated players play to 21-15:

  • expected = 0.50 (equal ratings, coin flip)
  • multiplier = 1 + 6/20 = 1.30×
  • change = 32 × (1 − 0.50) × 1.30 = 21

Winner: 1500 → 1521 (+21)
Loser: 1500 → 1479 (-21)

Why upsets matter more

If a 1400-rated player beats a 1600-rated player 21-15, the winner was only expected to win 24% of the time — so the swing is much bigger: +32 instead of the 21 points an evenly-matched game would move. Beating someone better than you is worth far more than farming easy wins against someone worse.

A note on edits

Ratings aren't stored — they're recalculated from the entire match history every time the page loads, in the order matches were played. That's why editing or undoing an old match in the admin panel correctly ripples through every rating after it, instead of leaving things out of sync.

Try it yourself

Expected Win Chance

50%

Margin Multiplier

1.30×

Rating Change

+21 / -21

Winner: 1500 → 1521 · Loser: 1500 → 1479