Arpad Elo's system was designed for chess in the 1960s and now runs most competitive matchmaking in games. The whole thing rests on one equation.
expected score = 1 ÷ (1 + 10^((opponent − you) ÷ 400))
The 400 is a scaling choice, and it is the number worth remembering. It is set so that a 400-point gap corresponds to a ten-to-one expectation. Put 400 into the formula and you get one divided by eleven, which is 9.09 per cent.
What the gaps mean
Equal ratings give exactly 50 per cent, which is the definition. A 100-point gap gives 36 per cent to the underdog, 200 gives 24 per cent, 300 gives 15.1 and 400 gives 9.1. At 800 points it is under 1 per cent.
Notice how slowly it falls at first. A hundred points sounds like a meaningful difference and buys the stronger player under a two-to-one edge. This is why single games tell you so little: even a substantial rating gap leaves the weaker player winning more than a third of the time, and a run of three or four upsets is unremarkable.
How ratings move
After the game, your rating changes by
K × (actual score − expected score)
where the actual score is 1 for a win, 0.5 for a draw and 0 for a loss. Beat someone you were expected to beat and you gain almost nothing. Beat someone 400 points above you and you gain nearly the whole K value, because you scored 1 where 0.09 was expected.
K is the volatility dial. A large K makes ratings swing quickly and react fast to genuine improvement, at the cost of being noisy. A small one is stable and slow. Chess federations lower K as players become established, and most games use a larger K for new accounts so placement converges quickly. The Elo rating calculator takes both ratings, the result and a K value, and gives the rating change, and the FIDE version follows the chess rules specifically.
Why you stall at 50 per cent
Because that is the design goal, and it is worth being clear-eyed about it.
A rating system that works puts you against opponents of roughly your strength. Opponents of your strength beat you half the time. So the equilibrium for every player at every level is a win rate near 50 per cent, and arriving there is the system succeeding rather than you plateauing.
This has an uncomfortable consequence. If you improve, you climb, and the system responds by giving you harder opponents until you are back at 50 per cent. The feeling of being stuck never goes away, no matter how much better you get, because the win rate you see is held constant by construction. The rating is the thing that moved.
What it does not handle
Elo was built for two players. Team games break several of its assumptions at once, since individual contribution is not observable from the result, and most modern systems use something more elaborate underneath while presenting an Elo-like number.
It also assumes a stable underlying skill. A player improving quickly is systematically underrated by it, which is what a high K for new accounts is trying to patch. For the simpler ratios a scoreboard reports, see the piece on measuring players.