Source and collection
All game data comes from the official Riot Games API, read with a production key. A collector on our own server gathers games around the clock from 15 of Riot's League of Legends servers.
Collected are Ranked Solo/Duo, Ranked Flex, ARAM and Arena. Every game is stored once, however many of its ten players the collector comes across. Remakes are dropped.
The data page shows the collection live: games in the last 24 hours and 30 days, by server, rank and queue, and a check whether one of your own games is in the sample.
The sample
ggez.gg does not have every game that is played. It collects a share of all games, and that share is steered on purpose:
- By server: each server gets a share of the daily target that follows how many games are started there, with a minimum share for small servers. Before October 2026 every server got the same share, which made "all regions" lean toward small servers.
- By rank: more games are collected from high ranks than their share of the player base. The current target shares are printed on the data page.
Because of the second point, a filter that spans several ranks is weighted back to the real player base before a rate is shown. A game's rank is the rank of its lobby.
Time window and patches
Every stats page names the window its numbers cover: one patch, or the last 30 days.
The collector moves to a new patch as soon as it sees the first games on it. About an hour later the tier list can show that patch alone. The stats pages open on the new patch by default once it has 300,000 games from Emerald and above, which is about two days after release. Until then they open on the last 30 days, because a new patch is too thin per champion and role in its first hours.
The 30-day window mixes patches. Right after a patch it still consists mostly of games from the patch before, so a champion that was just changed can read differently there than on the patch alone.
When a row is shown
A champion in a role is listed in the tier list when it has enough games in the chosen filter. The minimum is 0.5 % of the filter's games, at least 100 and at most 2,000 games. In very large filters, where 0.5 % is more than 2,000 games, a row under the 0.5 % is listed only when the role is a real role of the champion: at least 10 % of its games.
A champion's build page for a lane other than its main one is offered to search engines from 1,000 games in that lane.
Where a sample is below its minimum, the page says so instead of printing a rate.
How a tier is calculated
A raw win rate from a few hundred games swings by several points from luck alone. Before tiering, every win rate is pulled toward the average of the filter by adding 400 games at that average. A champion needs about 400 games of its own before its rate outweighs the average.
The tier is the distance of that adjusted rate from the filter's average, in percentage points:
| Tier | Adjusted win rate | Also needed |
|---|---|---|
| S | +2 points or more | 25 % of the champion's games in this role and 400 games |
| A | +1 to under +2 points | the same as S |
| B | 0 to under +1 points | nothing |
| C | −1.5 to under 0 points | nothing |
| D | below −1.5 points | nothing |
The extra condition for S and A keeps pocket picks out of the top: a champion that wins in a role where only a few specialists play it is capped at B.
The tier uses the win rate only. Pick rate and ban rate are shown next to it and do not move the tier.
Matchups and patch changes
A lane matchup gets a page from 20 games. It appears in tables and is offered to search engines from 100 games. A split of a matchup by rank or patch prints a win rate from 200 games; below that no rate is printed.
The patch pages compare a champion's win rate on a patch with the patch before. A champion gets a figure once 200 of its games are on the patch. Only champions Riot changed in that patch count as its winners and losers; a champion that moved without a change is listed separately. A patch article without any measured change stays out of search engines.
Player profiles
A profile reads the player's rank, games and mastery from the Riot Games API when it is opened or updated. The head shows how old the data is.
- Comparison values (CS per minute, vision, damage, deaths) are the distance from the measured average of the player's rank in the same role, in percent. A value is coloured only from 35 % distance; smaller differences are normal variation.
- LP per game is exact where we have a rank snapshot before and after the game. Without snapshots the value is an estimate and is marked as one.
- "Place" in an opened game ranks the ten players by one score from damage to champions, gold, KDA and vision score. It is our score, not Riot's.
Ladders, Worlds, AI coach
The ranked ladders are Riot's ladders, read on a schedule. Each ladder page states how old its copy is; the ladder is not live.
Worlds games, picks, bans and results come from Leaguepedia (CC BY-SA 3.0). The solo queue games of Worlds players are games of their known accounts, read through the Riot Games API.
The AI coach reads a player's numbers from Riot and from this data when asked. Most comparisons use the measured average of the player's rank and role. What it concludes from them is a language model's judgement: it can misread a game or be wrong. In a live game Riot shows champions, spells and bans only, so the coach cannot know items or gold. We publish no accuracy rate, because we have no measurement yet that we could stand behind.
Known limits
- A sample, not a census. Rare picks and small servers have wide margins; the game count next to a rate tells you how far to trust it.
- Win rates describe who plays a champion as much as the champion. A hard champion played mostly by specialists looks stronger than it is for a first-time player.
- Role detection follows Riot's position field. Lane swaps and off-meta roles can land in the wrong role.
- Numbers differ between stats sites. Samples, rank filters and windows are not the same, so a few tenths of a point between two sites is expected.
Citing these numbers
The statistics ggez.gg computes itself are free to quote and republish under CC BY 4.0: name ggez.gg and link the page. Give the patch or date and the filter (rank, role, server) with the figure. What the licence does not cover is listed on the about page. Machines can read the same numbers through the MCP server and the REST API.
If a number here looks wrong, tell us through the contact form with the page and the filter you used.