How It Works

1. Per-player metrics

For every participant in every one of your last 20 Solo/Duo ranked games, four rate stats are computed from the raw match data (t = game length in minutes):

Vision score is taken straight from the match data as a fifth metric.

2. Pairing players by role

Players are then matched up role against role — top vs top, jungle vs jungle, mid vs mid, bot vs bot, support vs support — using the position Riot records for each participant (teamPosition, falling back to lane/role on older matches).

This matters more than it sounds. Averaging four teammates into one number and comparing it against five enemies mostly measures role mix: a support's ~1.2 CS/min sitting next to an ADC's ~8 averages into a figure that describes nobody, and a game where your support roamed while theirs farmed shows up as a gold gap that never existed. Two players in the same role are doing the same job, so the gap between them means something.

The pair containing you is set aside as your own lane matchup (section 7) and never counts toward the verdict — the question is what the matchmaker gave you, not how you played. So a verdict normally rests on the 4 remaining roles, and on games where you filled a different position, each role is scored from however many games it was actually paired in.

Support is reported but not scored, unless support is a role you played in at least one of the games analysed. The thresholds in section 4 are absolute gaps calibrated for players who farm and deal damage; a support pair trips them on style rather than skill. One support roams while the other sits bot, and the gold, damage, CS and ward-score gaps that follow say which support picked which job — not which team got the weaker player. For someone who never queues support, that's noise with a vote on their verdict, so it's removed from the score. Its numbers still appear in full in the comparison chart, marked as not counted.

3. Averaging each role pair

For a role r paired in n games, each of the five metrics is averaged across those n games, once for your side and once for theirs:

4. Scoring one role

For each of the five metrics, we take diff = avgAlly − avgEnemy and convert it into points, using a "dead zone" so small gaps are ignored:

Each metric can swing a role's score by its full weight in either direction, so score(r) runs from −100 (your player lost that matchup on everything) to +100. The weights are the same for every role, and for the four scored roles they don't need to be role-specific: comparing like with like already handles it. A jungler isn't punished for farming less than a mid, because the number they're measured against is another jungler's.

The dead zone is an absolute gap, though, and that's exactly where support breaks down. A 2-point ward-score threshold is meaningful between two ADCs and meaningless between two supports who end games on 40 and 70; a 20 gold/min gap separates a roaming support from a lane-sitting one rather than a worse player from a better one. Rather than invent a second set of support-specific thresholds and pretend they're calibrated, support is scored only for the players who actually play it (section 2).

5. Combining the roles

The scores of the counted roles are averaged into one performance score, weighted by how many games each role was actually paired in, so a role seen twice can't outweigh one seen twenty times:

The result stays on the same −100 … +100 scale. Alongside it we count how many roles came out ahead and behind — that's the "enemies win 3 of 4 role matchups" line above the chart, and the worst role is the one named in the verdict. An uncounted support is absent from all of it: it can't be the worst role, and it isn't in the denominator.

6. The teammate streak signal

A single bad game is noise, so we also look at each unique teammate's own last 3 ranked games (independent of the game they played with you) and tally wins/losses across all of them:

A teammate counts as "on a losing streak" if they lost more of their last 3 than they won, and vice versa for "winning streak." The adjustment is added straight onto the score from step 5.

7. Turning the score into a verdict

The final score = performanceScore + adjustment is read together with your own win rate W = wins / totalGames over the 20 games. Both must point the same direction:

8. Worked example

Here's a full run through the formulas above. You played mid in all 20 games, so your own lane is set aside — and since you never queued support, the support pair is measured and shown but left out of the score. That leaves three scored roles. Bot was only paired in 18 of the games (two remakes had no recorded position for it):

9. The self-check

Before blaming the team, your own numbers are checked against the enemy who played your role — your direct opponent, not teammates doing a different job. With K = KDA and D = damage/min:

The same numbers power the "Your lane" tab in the comparison chart, so you can see the matchup that produced the message.

10. Honest limitations