About ko.lol
An independent League statistics project that shows its evidence
ko.lol is a desktop app and this website, built on one store of recorded ranked games. Both of them answer the same way: the number, how sure we are, how many games it stands on, and where it came from. Not a company, not affiliated with Riot Games, and free to use.
patch 16.14 regions EUW, Korea and NA counted
What does the store hold today?
Read live from the store at build time.
Why this exists
The market prints numbers. This project prints measurements.
Every other tool in this market prints a number. The number is usually correct arithmetic on the wrong question, or correct arithmetic on far too few games, and nothing on the screen tells you which. ko.lol exists because that is a fixable problem, and fixing it turns out to change nearly every screen.
Today the store holds 108,616 recorded ranked games from EUW, Korea and NA, with 1,085,944 player records and 47,183,210 item events inside them. Patch 16.14 is the newest one we have enough games to talk about.
The promise
Six rules, and a note on each one saying whether a test is watching it. Three of them are checked against every page the build produces, and a failure stops the deploy. The other three are rules the code follows, and saying which is which is the same promise as the rest of this page.
| the rule | what it means | what watches it |
|---|---|---|
| Never a naked number | Every estimate shows its 95% range, the games behind it, and one word for where it came from. A number without those cannot be checked, and a number that cannot be checked is marketing. | Checked on every built page. An estimate missing its range, its games or its word fails the build, and so does a percentage with a decimal point sitting anywhere with no game count attached. |
| Three answers, and a tie is one | A comparison says beats, too close, or not enough games. There is no fourth answer, and no comparison gets to crown a winner because the screen looked empty without one. | Checked on every built page. A fourth verdict word, or a fourth token in the markup, fails the build. |
| A floor, and silence under it | Under the games floor we print how many games there are and no number at all. Not a greyed out guess, not a smaller font. Nothing. | No test watches this one. One component owns the floor, and there is no way to ask it for a value under one. |
| We say whose games these are | Our store is high rank ranked solo games from three regions. That sentence is generated from the crawler's own state, so it changes itself the day the crawl changes. | Checked on every built page. A page that prints an estimate without naming the pool fails the build. |
| Modeled never wears a measured label | When we worked something out rather than counted it, the chip says Modeled. The draft read is Modeled with no games behind it, and it says so every time it prints. | No test watches this one. The word arrives with the number from the server, and the component prints the word it was given. |
| We name what we cannot measure | When the server does not measure something, the page says so instead of filling the gap with arithmetic on the wrong data. A matchup under its games floor is a count and no number, and a page whose data does not exist is not built. | No test watches this one. It is a decision about what to build, and no test can watch a page that was never written. |
What ko.lol will not do
These are not settings. They are the shape of the product.
- No memory reading, no input injection and no screen capture. The app reads Riot's own local APIs and match history, which is what Riot publishes for this, and nothing else on your machine.
- Nothing that reads as cheating. No enemy cooldown tracking, and nothing about other players that they cannot already see themselves.
- Nothing writes to your League client unless you turn that on yourself. The one tool that can set a rune page is off until you switch it on.
- No ads on this site and none in the app. The app is free and there is nothing to buy.
- No number without its evidence, anywhere, including in anything we ever write about ourselves.
Who builds it
Small, independent, and not connected to Riot Games.
ko.lol is an independent project. It is not a company and it is not part of Riot Games. The League trademarks and the game data belong to Riot, and the disclaimer at the bottom of every page says so in their words.
The parts you can check are on this site: the tier list is built from a public API response that carries its own formula, and how ko.lol computes every number walks through every mechanism behind it with the constants printed.
When we get something wrong
It gets logged, not quietly edited.
Numbers move for two reasons: more games arrived, or we changed something. The first kind happens nightly and the page stamp says when it last happened. The second kind is a correction, and corrections go on the changelog with the date and what changed.
A constant on a methodology page changing without an entry in that log would be exactly the thing this project exists to not do.
Getting in touch
There is no published address for this project yet, and this page is not going to invent one. An address that nobody reads is worse than an honest blank, so this section stays empty until there is one that gets answered.
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 .
ko.lol for desktop
Your champion pool, your matchups and your patch notes, on your desktop while you play.
Free. For Windows.