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.

Player A expected score24.0%
Player B expected score76.0%
Result for AA changeA new ratingB changeB new rating
A wins+24.31524.3−24.31675.7
Draw+8.31508.3−8.31691.7
B wins−7.71492.3+7.71707.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 differenceHigher-rated playerLower-rated player
050.0%50.0%
5057.1%42.9%
10064.0%36.0%
15070.3%29.7%
20076.0%24.0%
30084.9%15.1%
40090.9%9.1%
60096.9%3.1%
80099.0%1.0%

Which K-factor to use

KUsed for
40FIDE: new players until 30 games; players under 18 rated below 2300
20FIDE: rated below 2400
10FIDE: has reached 2400 at any point
32A common default for clubs, games and leaderboards
16 to 24Slower, 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.