KO.LOL League of Legends Stats ko.lol Download

How we score champion picks

Measured impact, pulled toward the role average, with who is playing in the score

A pick score answers "should I play this champion here". This page says what that score stands on, why it asks who is sitting in the seat, and why it is allowed to answer "any of these works".

Pull toward the role
2,000 pseudo games of the role average
Games a cell needs
30 before any score exists
Pairs covered
791 champion and role cells on patch 16.14
Scored
475 the rest sit under the floor and ship null
Mastery measured
241 cells with the split measured on both sides
Patch
16.14 the patch every constant here is read from

On patch 16.14 the tier list covers 791 champion and role pairs and scores 475 of them. The rest sit under the 30 game floor and ship null.

Every scored cell is a champion in a role with at least 30 recorded games. Its win impact is measured against the role average and pulled toward it with 2,000 pseudo games before anything is ranked, so a lucky week never crowns a pick. On top of that sits a mastery split that measures how the champion does under first-time pilots against practiced ones, where both sides have the games to say.

The score is for average pilots by construction. The moment the desktop app knows who is actually playing, from the client, the pick advice conditions on their games on the champion and their recent form, and says so in a note. When it does not know, the note says it assumes average pilots. Neither state invents a player stat.

These numbers come from 108,616 ranked games we recorded on EUW, Korea and NA, found by following Diamond players and the people they play with. That is not every rank and it is not every region. Everything on this page is patch 16.14. Counted up to .

What does a pick score stand on?

Three measured parts, one published formula, and a floor under all of it.

The score is a weighted sum of three parts, and the weights ship inside every tier list response: 0.5 on win impact, 0.25 on presence, 0.25 on mastery. Win impact is wins per 100 games against the average pick in the role, with its 95% range. Presence is how much recorded play stands behind the cell. Mastery is the pilot split below. Each part is scaled 0 to 100 before the weights, and the response ships the per-cell component values, so the sum can be redone from what is printed.

Before any ranking, the win impact is pulled toward the role average with 2,000 pseudo games. A cell with 30 games lands nearly on the role average; a cell with twenty thousand barely moves. The same response carries the games floor and the tier cutoffs, so no page and no client can print a constant the server has quietly retuned.

Check it: open https://api.ko.lol/v1/tierlist?patch=16.14 and read the formula block and any entry's components. This page reads the same response.

Why does who is playing change the answer?

The same champion is a different pick under a first-time pilot.

One table for everyone, against a score that asks who is playing

What most tools publish

One table for everyone. But a pick recommendation lands on a person, and the measured store says the person matters.

What we do instead

The mastery term splits every cell's games into first-time pilots, games 3 and under on the champion this patch, and practiced ones, and measures the gap. The split needs 30 games on each side. Below that it reports null, and the score carries on without the term rather than guessing. On patch 16.14, 241 of the 475 scored cells have the split measured on both sides.

In the desktop app the same idea goes one step further. When the client reports who is in the lobby, pick scores use that player's games on the champion and their recent form, and the response states its conditioning in a note. When the client reports nothing, the note says the score assumes average pilots. The one thing that never happens is an invented player stat: no tag, no tilt meter, no grade conjured from ten games. How we read a draft covers the model that fills the gaps, and why everything it prints says Modeled.

When do we call a tie?

Two overlapping ranges do not separate, and pretending they do is invention.

The three answers, and there is no fourth

beats too close not enough games

Every pick carries a range, and ranking runs on the pulled numbers behind those ranges. When the top picks' ranges overlap, the honest reading is that the games cannot tell them apart, so the screen says any of these works and shows the tied picks as equals. Sorted lists on other tools always crown one, on margins the second decimal cannot carry.

The same grammar runs everywhere on this site: beats, too close, not enough games, and there is no fourth verdict. Bans follow the same honesty: the ban suggestion is the biggest measured threat, never "most likely to be picked", because likelihood is not the question a ban answers.

Worked example: mastery, measured

Ahri mid on patch 16.14, straight off the live tier list.

Score
62 out of 100 for Ahri mid
Games
3,496 games recorded on patch 16.14
Wins
1,792 of those recorded games
Mastery split
measured both sides clear of the side floor

Ahri build and runes for patch 16.14

Ahri mid stands on 3,496 games on patch 16.14, of which 1,792 were wins, and scores 62 of 100. Its measured win impact against the mid average:

+0.8 wins per 100 games(range -0.5 to 2.1) 3,496 games Pooled 36% of this is borrowed from similar championsthe range covers zero, so this could go either way

The server's own basis line for the cell: wins 0.8 per 100 vs the mid average · 3,496 games on 16.14 · first-time players measured (3,220 games) · no clear move vs 16.13 (+6.0, range -3.6 to +15.6)

The mastery split for this cell is measured: 3,220 games under first-time pilots against 276 games under practiced ones, both sides clear of the 30 game side floor. At 29 games on either side the term would report null and the score would carry on without it.

Recomputing the Ahri mid score from the shipped parts 108,616 ranked games from EUW, Korea and NA, found by following Diamond players and the people they play with
part component, 0 to 100 weight
win impact 58 0.5
presence 77 0.25
mastery 57 0.25
weighted sum 62.5 prints as 62
The three component values and the three weights both come from the same tier list response, so this sum is a check a reader can redo. The recomputed value rounds to the printed score; the small gap before rounding is the rounding itself, not a hidden term.

How to check us

  1. Every pick on screen shows a range, a game count and a provenance word, and a pick made with no player data carries the "assumes average pilots" note. A pick without those is a bug, not a style choice.

  2. Recompute the score above. The components and the weights are in https://api.ko.lol/v1/tierlist?patch=16.14, along with the pull strength, the games floor and the tier cutoffs. Nothing in the formula is unpublished.

  3. Find a tie. Where two picks' ranges overlap this site says so and shows both. Then open the same role on any sorted-list competitor and count how often they crown exactly one.

  4. Compare any aggregator's champion table on the same patch: one table for everyone, no player term, no range on any row. The difference is the whole page you just read.

Honest limits: what a pick score does not know

We do not measure tilt, mood, or off-role comfort. Personal terms come only from what the client reports, and the gaps in a live draft are filled by the draft model, which is labeled Modeled with no games behind it, every time.

The mastery split is an association over recorded games, not a promise about your next game: players who reach their fourth game on a champion this patch chose to keep playing it, and match data cannot separate that choice from the practice.

The measured pool leans high rank on a few regions, as the pool note above says. The full ranking this page's example comes from is on the tier list, with the same floors and the same ranges.

ko.lol for desktop

Your champion pool, your matchups and your patch notes, on your desktop while you play.

Free. For Windows.

Download