Elo Rating Calculator
Enter two players' Elo ratings and a K-factor to see each player's win probability and how many rating points they gain or lose for a win, a draw or a loss. It uses the standard Elo formula (400-point scale) and runs in your browser.
| Result for A | A change | A new rating | B change | B new rating |
|---|---|---|---|---|
| A wins | +24.3 | 1524.3 | −24.3 | 1675.7 |
| Draw | +8.3 | 1508.3 | −8.3 | 1691.7 |
| B wins | −7.7 | 1492.3 | +7.7 | 1707.7 |
How the Elo formula works
1. Expected score of player A: E = 1 / (1 + 10^((Rb − Ra) / 400)). It is A's chance of winning, counting a draw as half a win.
2. New rating: Ra′ = Ra + K × (S − E), where S is 1 for a win, 0.5 for a draw and 0 for a loss.
Example: A is rated 1500 and B 1700, with K = 32. A's expected score is 1 / (1 + 10^(200/400)) = 0.240. If A wins, A gains 32 × (1 − 0.240) = 24.3 points and B loses the same amount. The underdog gains more for a win than the favourite would.
Win probability by rating difference
| Rating difference | Higher-rated player | Lower-rated player |
|---|---|---|
| 0 | 50.0% | 50.0% |
| 50 | 57.1% | 42.9% |
| 100 | 64.0% | 36.0% |
| 150 | 70.3% | 29.7% |
| 200 | 76.0% | 24.0% |
| 300 | 84.9% | 15.1% |
| 400 | 90.9% | 9.1% |
| 600 | 96.9% | 3.1% |
| 800 | 99.0% | 1.0% |
Which K-factor to use
| K | Used for |
|---|---|
| 40 | FIDE: new players until 30 games; players under 18 rated below 2300 |
| 20 | FIDE: rated below 2400 |
| 10 | FIDE: has reached 2400 at any point |
| 32 | A common default for clubs, games and leaderboards |
| 16 to 24 | Slower, steadier ladders |
Rate a whole league with the API
This calculator handles one game between two players. To rate a full match history, with teams, doubles, free-for-alls, draws, or Glicko-2 and OpenSkill as well as Elo, send the log to Skill Rating API. It replays every match and returns each player's rating and a leaderboard:
curl -X POST "https://skill-rating-api.p.rapidapi.com/rate" \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_KEY" -H "X-RapidAPI-Host: skill-rating-api.p.rapidapi.com" \
-d '{"algorithm":"elo","params":{"k":32},"matches":[{"teams":[["ana"],["ben"]],"winner":0},{"teams":[["ben"],["cat"]],"ranks":[0,0]}]}'
The free plan covers 200 requests a month; see docs and pricing.
Frequently asked questions
How is an Elo rating calculated?
First work out the expected score: E = 1 / (1 + 10^((Rb − Ra) / 400)), where Ra is your rating and Rb your opponent's. After the game your new rating is Ra + K × (S − E), where S is 1 for a win, 0.5 for a draw and 0 for a loss and K is the K-factor.
What K-factor should I use?
FIDE uses 40 for new players (until 30 rated games, and for players under 18 rated below 2300), 20 for everyone else below 2400 and 10 once a player has reached 2400. Many clubs and games use 32, which makes ratings move faster. A higher K reacts quicker but is noisier.
What does a 200-point Elo difference mean?
The higher-rated player is expected to score about 76.0% of the points, roughly 3 out of 4. A 100-point gap is about 64.0% and a 400-point gap about 90.9%.
Why did I gain only a few points for a win?
Elo rewards surprise. Beating a lower-rated player was expected, so S − E is small. Beating a higher-rated player, or drawing with one, moves your rating much more. The points one player gains are exactly the points the other loses when both use the same K.
Can I calculate Elo for a whole league, teams or doubles?
Yes, with Skill Rating API: send the full match log to POST /api/public/v1/rate and it replays every match and returns each player's rating and a leaderboard. It supports Elo, Glicko-2 and OpenSkill, teams, free-for-alls, draws and match weights.
Last updated 2026-10-24. Part of Skill Rating API.