Skip to content
Back to blog

Team Up Blog

League of Legends Inhouses: Rating Players by Role, Not Just by Win

| Team Up | 11 min read

One Elo number per player breaks in a five-role game. Here's how to run LoL inhouses in Discord with separate ratings per role, fair handling for autofill, and team balance that survives contact with a support main playing jungle.

league-of-legendsinhouseelorating-typesguide

Every League inhouse group eventually has the same argument. Someone with a high rating gets put on a team, the team loses, and half the lobby points out that he was autofilled support and hasn't played the role since Season 9. The rating said he was good. The rating was measuring the wrong thing.

This is not a flaw in Elo. It is a flaw in applying a 1v1 chess rating to a game where one player occupies one of five structurally different jobs, gets assigned to a job they didn't pick roughly a fifth of the time, and wins or loses as a unit of five. A single number per player can't hold that.

This guide is about fixing it: giving each player a separate rating per role, deciding what to do when someone plays off-role, and balancing inhouse teams from ratings that actually mean something. It uses Team Up, but the reasoning applies whatever you run your inhouses on. If you don't have a leaderboard yet, the leaderboard setup guide takes about two minutes.

Why One Number Per Player Fails Here

In a 1v1 game, Elo has a clean job: predict who wins, adjust on the result. Every match is the same kind of event, so every result is evidence about the same underlying quantity.

League breaks that in three ways at once.

The roles aren't the same game. Jungle is a pathing and tempo problem. Support is a vision and engage problem. ADC is a positioning and scaling problem. A player can be genuinely excellent at one and mediocre at another, and averaging those into one number produces a figure that describes nobody. It is the average of a chef and a plumber.

Attribution is weak. In a 5v5, a win is one bit of information split five ways. A fed mid can carry four passengers; a hard-inting top can sink four people playing fine. Over hundreds of games this noise averages out, but inhouse groups don't play hundreds of games — they play a few dozen a season, which is precisely the range where noise still dominates.

Assignment is partly involuntary. Even in inhouses, someone has to fill. If a player's rating drops because they were the one who volunteered to play a role nobody wanted, the rating is punishing cooperation. That is a real incentive problem, and people notice it fast.

The fix isn't a more clever formula. It's measuring five things instead of one.

Five Ladders or One? Run Both

The obvious move is to split into five separate ratings — a Top ladder, a Jungle ladder, and so on. It's the right instinct, and taken alone it has a real cost: sample size.

If your group plays 4 inhouses a week, that's 40 player-games a week. Split across five roles, each role rating gets 8 games a week spread over your whole player base. A rating built on six games is barely a rating at all. You've traded one number that means the wrong thing for five numbers that don't have enough data behind them yet.

So don't choose. Keep a global rating for each player — the overall "how good is this person at League" number that everyone wants for bragging rights and that accumulates data fastest — and add per-role ratings alongside it, which fill in more slowly but are what you use for balance and for arguments about who should play what.

Team Up updates both simultaneously: player_choices rating types track a separate rating for each choice a player makes, while the standard global rating keeps updating on the same match. One recorded game feeds both. You're not picking a side.

Concretely, here's what that looks like for one player after a month of twice-weekly inhouses:

Rating Games Trust it?
Global 32 Yes
Mid 19 Yes
Jungle 8 Directionally
Support 3 No
Top 2 No

The global number is solid, the main-role number is solid, and the fill roles are sketches. That is an honest picture, and it is far more useful than a single 1340 that silently blends all five.

A practical rule for when a role rating is worth trusting: ten games in that role. Below that, use it as a hint and lean on the global rating. You can enforce this on the leaderboard itself so unranked players don't clutter the standings:

/leaderboard_config ranking set matches_required:10

Autofill: Rate the Role They Actually Played

This is the question that decides whether people trust the system, so decide it explicitly and say it out loud.

Three defensible options:

Rate the role played. A support main who plays jungle gets their jungle rating adjusted. Their support rating is untouched. This is almost always the right answer: it's the only one that's actually true, it means filling never damages your main-role standing, and over time it produces the genuinely useful fact that your support main is a 1250 jungler.

Reduce the weight for off-role games. Rate the role played, but with a lower K-factor so off-role results move the number less. Defensible if your group fills constantly and you want to damp the noise, but it adds a rule people have to remember and argue about.

Exclude off-role games entirely. Don't do this. It throws away real data, and it creates an incentive to declare every loss "off-role."

Rating the role played is what per-role ratings give you for free, and it quietly solves the incentive problem: nobody is punished for filling, because filling puts the result on a different ladder. The player who fills a lot ends up with several mid-confidence ratings instead of one damaged one, which is an accurate description of that player.

Draft, Side, and What Shouldn't Affect Rating

Inhouses run draft or blind, and draft introduces a real skill component that has nothing to do with mechanics — counterpicking, comp cohesion, knowing what to ban. That's part of the game and it belongs in the rating.

What doesn't belong is side. Blue and red side are not symmetric, and if your group's map or patch happens to favour one, you're baking a constant into everyone's rating based on a coin flip.

The honest move is not to guess whether side matters in your group — it's to measure it. Track side as a per-match stat and check the split after a season:

/custom_stats select_choices name:Side scope:match choice_1:Blue choice_2:Red

If blue side is winning 58% across 60 games, that's worth knowing before you draw conclusions about your top ten. If it's 51%, forget about it. Same applies to draft order if you alternate first pick. The point is that you now have your own data instead of importing arguments from a subreddit about a completely different skill bracket. The custom stats guide covers the full stat setup.

Balancing Teams When Roles Are Constrained

Here's where inhouses get genuinely harder than a Valorant or CS 10-man, and it's worth being clear about the limits.

Balancing ten players into two teams by rating is a straightforward optimisation — split them so the totals are close. Balancing ten players into two teams where each team needs exactly one of each role and players have different ratings in different roles is a much nastier problem, and it frequently has no good solution. If eight of your ten players are mid mains, no algorithm produces a fair game. You have a roster problem, not a math problem.

So be realistic about what to automate:

Automatic rating balance, human role assignment. Let the queue balance the two teams by rating, and let the lobby sort out who plays what. This is what most healthy inhouse groups actually do, and it works because the people involved know who can fill.

/queue_versus headless queue_name:lol-inhouse title:LoL Inhouses description:5v5 draft, Elo-balanced teams team_size:5 match_start_channel:#inhouse-matches match_end_channel:#match-history team_formation:balanced_teams leaderboard:League

Captains, informed by role ratings. Set team_formation:captains_highest_elo and let two captains draft. Captains with access to per-role ratings make much better picks than captains going on vibes, and it moves the hard constraint-satisfaction problem onto two humans who can just talk to each other about who's filling.

The queue balances on rating; it does not solve role assignment for you. Per-role ratings make the humans doing that job dramatically better at it, which is the realistic win here. Anyone promising fully automatic role-constrained balancing for a ten-person lobby is promising something that mostly can't exist. The matchmaking queue guide covers the rest of the queue options.

Duos and Premades

Two friends on comms who've played together for years are stronger than two strangers of the same rating. Inhouses are full of duos, and the rating system will read that coordination as individual skill and inflate both players.

You have three options, in descending order of how much I'd recommend them:

  1. Split duos across teams when the lobby allows it. Simplest, most effective, no rules to maintain.
  2. Track it and look at the data. Add a match stat for whether the teams had premades, and check whether it correlates with the result in your group before legislating.
  3. Apply a rating penalty to duos. Technically defensible, universally resented. Skip it.

This is closely related to how rating systems get gamed in general — the same dynamic as smurfing and match farming, just with better intentions.

Setting It Up

Three commands, assuming you already have a leaderboard.

1. Define the roles as a player choice. This is what creates the per-role split — each player records which role they played, and each role accumulates its own rating:

/custom_stats select_choices name:Role scope:player choice_1:Top choice_2:Jungle choice_3:Mid choice_4:ADC choice_5:Support

2. Turn on the choice-based rating type. In the dashboard, open your leaderboard's rating settings and enable player_choices. Each player now carries a separate rating per role alongside their global rating, and both update from the same recorded match. Full behaviour is documented in rating types.

3. Create the queue.

/queue_versus headless queue_name:lol-inhouse title:LoL Inhouses description:5v5 draft — hit Join to queue team_size:5 match_start_channel:#inhouse-matches match_end_channel:#match-history team_formation:balanced_teams leaderboard:League

Then set the ranking threshold so thin role ratings don't show up as authoritative:

/leaderboard_config ranking set matches_required:10

From there, players queue with a button, teams are balanced by rating, and each recorded match updates both the global rating and the role rating for whatever role each player logged.

What Role Ratings Still Don't Fix

Worth being straight about the limits, because per-role ratings get sold as a cure-all and they aren't one.

They don't fix attribution inside a role. A jungler rating still moves on whether the team won. If your jungle gets a perfect early game and mid throws at Baron, the jungler's rating goes down. Splitting by role narrows the question from "how good is this player" to "how good is this player at this job", but the evidence is still a team result. Only per-player performance stats — custom stats like KDA, damage share, or vision score — start to attack that, and they bring their own distortions, because players optimise for whatever you measure.

They don't fix a thin roster. If you have twelve regulars, splitting five ways means most role ratings never reach ten games in a season. Below a certain group size, per-role ratings are a nice thing to look at and not something to balance on. Twenty-plus regulars is roughly where they start carrying weight.

They don't survive a role change cleanly. When someone genuinely switches mains — a mid player who moves to jungle for a season — their old jungle rating is stale evidence from a worse player. There's no clever fix. Either accept a slow correction as new games accumulate, or reset that specific rating and let it rebuild.

They don't settle arguments about who's best. Five ratings means five ladders, and "best mid" and "best player" are now different questions with different answers. Most groups find this an improvement. Some find it a new argument. Know which group you have.

What This Actually Buys You

After a season you stop having the argument this post opened with. You have a player who is 1420 mid and 1180 jungle, and when they get filled to jungle, everyone in the lobby — including them — already knows what that means. Team balance stops being a debate about who feels good and becomes a question you can answer.

It also surfaces things nobody knew. The support main who turns out to be your second-best jungler. The mid player whose rating is entirely carried by two smurf-adjacent weeks in the first month. The fact that your blue side wins 58% of the time and you've been reading your leaderboard slightly wrong all season.

None of that is visible through a single number per player, because a single number per player was never measuring the thing you cared about.


Running inhouses on Discord? Team Up handles queues, per-role Elo, draft, and match history in one bot. Start with the leaderboard setup guide, or read the rating types documentation for how choice-based ratings work under the hood.