Fun & games

Elo/Glicko Rating Lab

Rate players from game results with Elo, Glicko-1 and Glicko-2; history chart and win odds.

Games (required)

One row per game. The score is from the first player's point of view. Games with the same period number form one Glicko rating period.

Games
#PeriodPlayerOpponentResult for player
1
2
3
4
5
6
Starting ratings (optional)

Players not listed start at 1500, RD 350, volatility 0.06 (Glickman's defaults for unrated players).

Starting ratings (optional)
#NameRatingRDVolatility σ
1
2
3

Glickman suggests 0.3–1.2; smaller values change the volatility more slowly.

34.6 lets an RD of 50 grow back to 350 in 100 periods.

Default: the two highest-rated players.

Try an example: Glickman's worked example (1500 vs 1400, 1550, 1700) · Small club league over three periods

How it works

Enter game results (win, draw, loss) grouped into rating periods and see the ratings under Elo (fixed K or FIDE-style K), Glicko-1 and Glicko-2, implemented exactly as in Mark Glickman's papers, with the rating deviation and volatility, a rating history chart and the win probability between any two players.

  • Elo: expected score E = 1 / (1 + 10^((R_opp − R)/400)); after every game R ← R + K(S − E) for both players, in input order. The FIDE-style option uses K = 40 for a player's first 30 games, then 20, and 10 once the player has reached 2400 (the age rule is not modelled).
  • Glicko-1 (Glickman 1999): all games of a period are rated together with each player's pre-period values; RD shrinks with games and grows by c per idle period: RD = min(√(RD² + c²·t), 350).
  • Glicko-2 (Glickman, "Example of the Glicko-2 system"): steps 1–8 on the μ/φ scale (÷ 173.7178) with the Illinois algorithm (ε = 0.000001) for the new volatility; players without games only have φ increased to √(φ² + σ²).
  • Win probability: Elo uses E above; Glicko uses E = 1 / (1 + 10^(−g(√(RD_A² + RD_B²))·(R_A − R_B)/400)) with g(RD) = 1 / √(1 + 3q²RD²/π²), q = ln 10 / 400. Draws count as half a win.

Sources

For scripts and AI agents

  • JSON API: POST https://eloglickoratinglab.usefulweb.site/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://eloglickoratinglab.usefulweb.site/mcp · tool name elo_glicko_rating_lab
Example request
curl -s -X POST https://eloglickoratinglab.usefulweb.site/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{"games":[{"period":1,"player":"Player","opponent":"A","score":"1"},{"period":1,"player":"Player","opponent":"B","score":"0"},{"period":1,"player":"Player","opponent":"C","score":"0"}],"players":[{"name":"Player","rating":1500,"rd":200,"volatility":0.06},{"name":"A","rating":1400,"rd":30},{"name":"B","rating":1550,"rd":100},{"name":"C","rating":1700,"rd":300}],"tau":0.5}'

Related tools

  • Random Generator – Random numbers, dice, coins, list picks, shuffles, fair teams, dates, strings and UUIDs.
Feedback