Back to blog
ELOMarch 28, 20266 min read

ELO Ratings: Skill-Based Competitive Rankings

The ELO leaderboard brings competitive skill-based rankings to your Discord server. Borrowed from chess and widely adopted in competitive gaming, the ELO system adjusts player ratings based on match outcomes and opponent strength. Beat someone rated higher than you and gain a lot of points; lose to someone lower and take a bigger hit.

How It Works

Every player starts at a base rating (default: 1200). When two players — or two teams — face off, the bot calculates the expected outcome based on their rating difference. The actual result is compared to the expectation, and every participant's rating is adjusted accordingly:

  • Win against a stronger opponent — large rating gain
  • Win against a weaker opponent — small rating gain
  • Lose to a stronger opponent — small rating loss
  • Lose to a weaker opponent — large rating loss
  • Draw — small adjustment toward the expected outcome

The system is self-correcting. Over time, players gravitate toward a rating that accurately reflects their skill level relative to the competition.

Setting It Up

  1. Use the /leaderboard create command and select ELO as the scoreboard type.
  2. Name your scoreboard — e.g., "Chess Ladder" or "Smash Bros Rankings".
  3. Pick the match format — 1v1 (the default) or a fixed team size from 2v2 up to 8v8. You can change it later in the dashboard under Match format, and the board still ranks players individually either way.
  4. Configure the K-factor. This controls how much ratings change per match:
    • Low K-factor (10-16) — Ratings move slowly. Better for established ladders where stability matters.
    • Medium K-factor (20-32) — Balanced movement. Good default for most communities.
    • High K-factor (40+) — Ratings swing quickly. Good for short events or when you want fast rank movement.
  5. Set the starting ELO if you want something other than the default 1200.
  6. Optionally enable ELO decay — inactive players gradually lose rating points. You can set the decay interval (daily, weekly, or monthly) and the amount lost per period.

Recording Matches

Hit the leaderboard's Submit result button to record a match result. You are already filled in as player 1; pick the players on each side and the winner (or a draw). The opponent is pinged in a private match thread to Confirm or Disagree, and if nobody disagrees the match counts on its own after 3 hours. The bot then handles all the math and updates every participant's rating — on a team match, everyone on the winning side gains the same amount — and posts one result line with the rating change and the new rank.

The leaderboard displays each player's current ELO rating along with match statistics: matches played, wins, draws, losses, and the time of their last match.

Queue, Challenges and Rank Roles

Rather not arrange matches by hand? With the Queue button on, the bot pairs players of similar rating, runs a ready-check and opens a private match thread, with voice if you want it. The players vote on the result; after 3 hours the match is settled from the votes cast, and nobody can queue again before voting on their last match. On a 1v1 board, Challenge invites a specific player, and every settled 1v1 match thread carries a Rematch button.

A new ELO board also creates Bronze, Silver, Gold, Platinum and Diamond rank roles at its first match (the bot needs Manage Roles) and tells each player by DM when they move up. The full feature list is on the Discord ELO bot page.

What It's Good For

  • 1v1 and team competitive games — Fighting games, chess, card games, racing duels, 5v5 shooters — any head-to-head format where you want a meaningful skill ranking.
  • Ongoing ranked ladders — Keep a persistent ranking that evolves as players compete. No need for season resets (though you can if you want).
  • Fair matchmaking — Use the ratings to pair players of similar skill for more competitive and enjoyable matches.
  • Tournament seeding — Use ELO ratings to seed brackets for tournaments, ensuring top players don't eliminate each other in early rounds.

Tips and Best Practices

  • Start with a moderate K-factor. A K-factor around 32 is a solid starting point. You can always adjust it later based on how your community responds.
  • Use decay for active ladders. If your ladder is meant to reflect current skill, enable decay so that inactive players gradually drop, making room for active competitors.
  • Require a minimum number of matches. Communicate to your community that ratings become meaningful after around 10-15 matches. Early ratings are volatile and don't reflect true skill yet.
  • Don't change K-factor mid-season. Changing the K-factor affects how much future matches shift ratings, which can feel unfair to players who built their rating under different rules.
  • Track match history. ELO boards show detailed stats per player. Use these to identify your most active players, track rivalries, and celebrate milestones (first player to 2000 ELO, longest win streak, etc.).

When to Choose Something Else

ELO requires head-to-head match results — 1v1 or team vs team. If your competition doesn't have matches at all, use Classic or High Score instead. If you're ranking creative submissions rather than competitive play, Image Rating is the right choice.