TOP OF LEAGUEHextech ladder
Top of League › How it works
How it works

How per-champion player rankings work

This page explains end to end how Top of League answers “who plays this champion best”: who gets on a board, how the score is computed, why exactly 30 games, which steps the data goes through, and what a board cannot tell you.

Contents

In one paragraph

Every champion has its own board. A player is on champion X's board when they are currently Master or above (or any tier if their Riot ID was added on the home page) and have exactly 30 recent Ranked Solo/Duo games on X, all within the last 90 days. Board order is Score = LP + 600 × (WR₃₀ − 0.5): Riot's official LP decides almost everything, the win rate over exactly those 30 games only breaks ties. Every number comes from the Riot Games API and is recomputed every 10 minutes.

Why rank per champion

Your overall rank answers “how good are you at League”, not “how good are you on Azir”. A Challenger with 400 Azir games and a Challenger on their fifth Azir game share a rank but clearly not a skill level on that champion. Mastery points do not help either: they measure playtime, not results.

A per-champion board fills that gap by looking only at players who have proven two things at once: they sit at the top of the ladder and they actually play the champion at that level. That is the information someone learning a champion needs: who to watch, who to learn from, on their own server.

Who gets on a board

A player appears on champion X's board when all four conditions hold at the same time:

  • Current tier Master or above in Ranked Solo/Duo, per the latest ladder snapshot. Master, Grandmaster and Challenger share one LP pool, so comparing LP across them is meaningful. Players added to the tracking list on the home page skip this condition.
  • Exactly the 30 most recent qualified games on X in the current split. Not “at least 30”: the newest 30 are taken, older games are dropped.
  • A qualified game is a queue-420 game that is not a remake and ended in the last 90 days.
  • No win-rate requirement. 12 wins out of 30 is still ranked, just lower.

Condition 3 keeps each board about current form: games older than 90 days do not count, so an old history on champion X is not enough to get on the board.

Add yourself to the tracking list

The home page has a Riot ID box. Anyone can add their own name or anyone else's, at any tier. The system looks up the Riot ID, reads the current tier and loads the Ranked Solo/Duo games of the last 90 days, usually within a few minutes.

The box then shows, for each champion, how many recent games are already counted, how many more are needed to reach 30, and the current rank if the player is already on the board. Tracked players have every Ranked Solo/Duo game counted, without the Master requirement.

Limits: at most 10 additions per IP address per day. Only public Riot data is used, and there is no live-game lookup.

The score

Score = LP + K × (WR₃₀ − 0.5) with K = 600. LP is the official rank points from the latest ladder snapshot. WR₃₀ is the win rate over exactly the last 30 qualified games on that champion.

Why K = 600? Master+ LP spans from 0 to over 3,000. With K = 600 the win rate can move a player by at most ±300 points (the extreme 0% or 100% case), in practice about ±60. Rank still dominates, as intended, while win rate is strong enough to break ties between two players on equal LP.

Players below Master are placed on the same scale with converted LP: every division below Master subtracts 100 (Diamond I = LP − 100, Diamond IV = LP − 400, Emerald I = LP − 500, Gold I = LP − 1,300). Example: Gold II 80 LP with 24/30 wins (80%) scores −1,320 + 180 = −1,140; Gold I 20 LP with 12/30 wins (40%) scores −1,280 − 60 = −1,340, so the Gold II player ranks higher. The win-rate term moves a player by at most ±300, so it can never jump more than about three divisions.

Example

PlayerLPWins / 30WR₃₀Score
A1,2001860%1,200 + 600 × 0.10 = 1,260
B1,2501240%1,250 − 600 × 0.10 = 1,190
C1,5001240%1,500 − 60 = 1,440

A passes B despite 50 fewer LP thanks to better form on this champion. C still sits above both: a 250 LP gap is a real rank gap, and win rate cannot reverse it.

Why exactly 30 games

Fixing the window at exactly 30 games gives one elegant property: everyone has the same sample size. Two win rates therefore compare directly, with no Bayesian shrinkage, no confidence factor and no other “minimum N games” threshold. This is what League of Graphs-style formulas lack.

The price: the standard error of a 30-game win rate is 9.1 percentage points. A ±1 SD swing equals ±55 Score. That is acceptable for a tiebreaker but not reliable enough to reverse a real rank gap, which is exactly the behaviour we want. A 30-game window also measures current form rather than a whole season: someone who drops a champion for three months gradually falls off the board as old games expire.

Where the data comes from

  • Ladder snapshot (daily, 3 calls): every Challenger, Grandmaster and Master player with LP, wins and losses. Source of LP and of the Master+ gate.
  • Match id discovery (daily, one call per player): new Ranked Solo/Duo match ids since the previous crawl.
  • Match details (one call per match, each match fetched once): 10 participant rows with champion, win/loss, KDA and position are extracted; the raw JSON is discarded immediately. One call yields data for all 10 players, which makes crawling by match about 9× cheaper than crawling by player.
  • Ranking (every 10 minutes, no API calls): a single SQL query numbers each player–champion pair's games newest first, keeps exactly 30, computes the Score and writes one static JSON file per champion.

The whole system runs on a small server because it is bound by Riot's API rate limit, not by CPU. Limits are read from Riot's response headers and kept at 85% of the allowance.

Reading a board

  • Tier, LP: official rank at the latest snapshot.
  • WR last 30, W–L: win rate and wins–losses over exactly the last 30 qualified games on this champion, not the whole season.
  • KDA: (kills + assists) / deaths over those 30 games, for reference only; it does not enter the Score.
  • Score: the sorting value. Equal Scores are broken by higher LP, then more wins.
  • Last game: when the most recent game on this champion was played; inactive players stay on the board until others push them down or they drop out of Master.

What a board cannot tell you

Being explicit about limitations is what sets this board apart from existing ones. The following is stated plainly:

  • Master+ only (about 0.1% of players). Diamond players will not find themselves here.
  • A 30-game window carries ±9.1 pp of noise. That is the price of measuring current form instead of a whole season.
  • Game difficulty is not measured. Carrying and being carried both count as one win.
  • No per-role split yet. The same champion played mid and top shares one table.
  • The Riot API returns at most 10,000 Master players. On servers with a larger Master tier (VN), the lowest-LP Masters cannot be ranked.
  • Data refreshes once a day, not in real time.

Privacy and Riot policy

Only the current Riot ID is stored and displayed; after a rename the old name disappears, there is no name history. There is no live-game lookup and nothing that gives an in-game advantage. No betting, no paywall. The API key stays server-side. This site is not affiliated with Riot Games; board order is based on Riot's official rank and is not an alternative rating system.

Glossary

LP (League Points)
Riot's official rank points. From Master upwards there are no divisions; the three apex tiers share one continuous LP pool.
Master+
Master, Grandmaster and Challenger together; about 0.1% of ranked players.
WR₃₀
Win rate over exactly the last 30 qualified games on one champion.
Remake
A game ended early because someone never connected; no LP change, not counted.
Ladder snapshot
A full copy of the Master+ list with LP at one point in time, stored daily.

Frequently asked questions

I'm Diamond. Why can't I find myself?
The boards only cover Master and above, about 0.1% of players. That is a deliberate trade for data reliability.
How often is it updated?
Ladder snapshots and new matches are ingested daily; boards are recomputed every 10 minutes. Each board shows its update time.
Why exactly 30 games?
Everyone has the same sample size, so two win rates compare directly with no confidence factor. The standard error of 30 games is 9.1 percentage points: enough to break ties, not enough to reverse a real LP gap.
Is this an alternative to Riot's ranked system?
No. Board order is based on Riot's official LP; win rate only breaks ties. A board answers “who is best on this champion”, it does not re-measure overall skill.
Is a sub-50% win rate excluded?
No. A player with 12 wins out of 30 is still ranked, just below players with equal LP and more wins.
Where does the data come from?
From the Riot Games API (league-v4 and match-v5). Only the current Riot ID is stored and shown; no name history, no live-game lookup.

Tiếng Việt 한국어 日本語 繁體中文 简体中文 Español Português (BR) Français Deutsch Русский Türkçe ไทย Bahasa Indonesia