Pular para o conteúdo / Skip to content
mmr matchmaking elo ranked

How MMR matchmaking works, and why your games feel unbalanced

Published on
Reading time 8 min
Graphic illustration of two balance scales with player icons, symbolizing skill balance in matchmaking

MMR — matchmaking rating — is a number the game keeps hidden to estimate your real skill level, separate from the rank displayed on your profile. It rises when you win, drops when you lose, and it’s what decides who you’re matched against and who’s on your team in every game. That feeling of a lopsided lobby is almost never a bug — it’s the system itself making trade-offs, between balance and queue time, between confidence and speed, that you never see happen.

What MMR actually is

Every game with a competitive queue tracks two separate numbers per player, not one:

  • Visible rank — what shows on your profile (Gold, Diamond, Radiant, a rating band). It’s what you show your friends.
  • Hidden MMR — the number the server actually uses to build matches. In most games, it doesn’t appear anywhere in the interface.

The two usually move together, but they aren’t the same thing. A player can sit at Gold rank with a Platinum-level MMR — because of a recent win streak the visible rank hasn’t fully caught up to, or because rank reset for a new season while MMR (which usually doesn’t reset) stayed where it was. Riot Games confirms this openly for Valorant: MMR is “decoupled” from the rank shown on screen, and it’s the primary factor determining match quality and how much rating you gain or lose per game.

Where the idea came from: chess Elo

MMR’s direct ancestor is the Elo rating system, created by Hungarian-American physicist Arpad Elo and adopted by the U.S. Chess Federation in 1960 and by the World Chess Federation (FIDE) in 1970. The logic is simple: every player has a number, and the gap between two numbers predicts win probability.

The expected-score formula is:

E_A = 1 / (1 + 10^((R_B - R_A) / 400))

A round-number example: a player rated 1500 faces one rated 1700. The gap is 200, so 10^(200/400) ≈ 3.16, and the weaker player’s expected win chance is 1 / (1 + 3.16) ≈ 0.24, or 24%. If that player wins anyway, they gain a lot of rating — because they beat something unlikely. With a K-factor of 32, the gain would be roughly 32 × (1 − 0.24) ≈ 24 points. If they lose, as expected, they lose little: about 32 × 0.24 ≈ 8 points. That’s why beating a stronger opponent pays off far more than beating someone at your own level.

Modern systems: the uncertainty problem

Pure Elo has a flaw that Arpad Elo himself acknowledged: it doesn’t distinguish a rating built from 3 games from one built from 3,000. Both numbers carry the same “confidence” as far as the system is concerned, which doesn’t hold up.

That’s why more sophisticated systems emerged:

  • Glicko-2, from statistician Mark Glickman (used by Lichess), adds a rating deviation — how uncertain the system is about that number — and a volatility value, how erratic a player’s recent performance has been.
  • TrueSkill, built by Microsoft for Xbox Live and used in games like Halo, represents skill as a distribution with a mean (μ) and standard deviation (σ). A new player starts at μ = 25 and σ = 8.33 — the system literally doesn’t know their level yet. Every match shrinks σ and adjusts μ; after a few dozen games, σ gets small and the rating stops swinging so hard.

That explains something every player has felt: a new account’s (or a returning player’s) first matches are the most lopsided of all. It’s not bad luck — it’s the system running with a high σ, trying to figure out your real level as fast as possible, which means risking matches against people well above or below you until the uncertainty drops.

MMR vs. visible rank: an example per game

  • League of Legends — Riot keeps a per-queue MMR (Solo/Duo, Flex, normals), described in its own documentation as “indefinitely hidden” with proprietary parameters. It’s calculated from wins and losses against opponents of known skill, not from KDA or scoreline.
  • Valorant — uses a visible RR (rank rating) and a hidden MMR separately. RR resets every episode, but MMR usually doesn’t — which is why players climb back to their old rank suspiciously fast at the start of a new episode: the real MMR already knew their level the whole time.
  • CS2 — Premier Mode exposes a numeric CS Rating (players commonly cite brackets like 5,000, 10,000, 15,000, 20,000) that works like an MMR on display: the rating gained or lost depends on opponent strength — beating a higher-rated team pays out more, and losing to a lower-rated team costs more.

Five real reasons matches feel unbalanced

  1. Initial uncertainty — new accounts or ones returning from a long break run with a high σ (or K). The system is genuinely guessing, and it’ll miss a lot until it calibrates.
  2. Queue time vs. match quality — every matchmaking system trades precision for speed. If no compatible opponent is in queue, it widens the acceptable MMR range every few seconds so you’re not waiting five minutes. A fast queue during off-peak hours tends to be less balanced.
  3. Parties (duo/trio/five-stack) — a group queues with the average MMR of its members, but the spread within that group can be large. A player well above the group’s average pulls the match up, and the rest of the party ends up facing tougher opponents than they’d play solo.
  4. New accounts with high real skill (smurfs) — the system assigns a new account a low or mid starting MMR even if the person behind it already plays at an advanced level. Until MMR “catches up” to their real skill, that account skews several matches.
  5. MMR measures probability, not per-match fairness — the goal of any such system is to pull your win rate toward 50% across many games, not to make every single match feel fair. A run of 3 or 4 “stolen” games is statistically expected — it’s the cost of a system that adjusts by result, not by how the match felt to play.

When there’s no MMR: pickup games, friendly tournaments, scrims

Outside automated competitive queues, nobody calculates MMR for you — and that’s where most groups get team-picking wrong, sticking the two best friends on the same side just because “they always play together.” The MMR logic still works as a guide, even without the algorithm:

  • Give each player a weight, not a label. Instead of “good” or “bad,” assign a 1-to-5 score based on the level you’ve actually seen them play at. It’s a rough, manual version of a rating.
  • Be skeptical of anyone you haven’t seen enough of. A new face in the group is your “high-σ account” — treat their score as provisional and adjust after the first round.
  • Split up pairs who always play together, the same way a matchmaking system avoids stacking the highest MMRs on the side that’s already favored.

If the group already has those scores set and just needs to be split, Squadb’s team generator does the distribution automatically, balancing by the level you enter instead of drawing blind.

Balancing by position helps too — in games like CS2, a friendly match only stays competitive if the roles inside each team make sense, as covered in the guide to CS2 roles explained. The same goes for League of Legends, where knowing what each position does keeps a casual five-stack from turning into five people fighting over the same lane. And if the imbalance is about overall skill in a pickup soccer group, the guide on how to balance soccer teams walks through the same reasoning applied on the field.

Frequently asked questions

Does beating a much stronger team give more MMR points? Yes. The lower your expected win probability, the more rating you gain — that’s the core mechanic inherited from Elo.

Does MMR reset every season, like rank does? In most games, no. Visible rank usually resets or “compresses” at the start of a season; hidden MMR generally stays put, which is why players climb back to rank suspiciously fast in the first few weeks.

Does queuing in a group raise or lower each player’s MMR? Neither, directly — but a group with a wide skill gap between members tends to face opponents calculated off the average, which makes the match harder for whoever’s below that average and easier for whoever’s above it.