Skip to content
How You Rank
Sign in

The rulebook for the rankings

How ranking methods work

Every group picks its own method, and the right one depends on three things: how many of you there are, how evenly you show up, and whether your games produce scores or just winners.

Global game leaderboards are a different animal: players who never meet, in groups of wildly different strength. Methods marked scales globallyhandle that; simple counting methods don't, because a total is an artefact of how often your group plays.

53 methods Β· 17 families Β· 9 scale globally Β· 4 still being built

Basic Counting

Simple win, podium and top-half counting β€” intuitive and universal.

Win Percentage

wins / matches_played

The simplest possible measure: wins divided by matches played. Everyone understands it instantly, and it works for any game.

BestNew groups, any game, and settling the 'who actually wins more' argument.

WeakUneven schedules β€” someone who plays three matches and wins two outranks a 60% player with a hundred. It is also field-size blind: winning a duel counts the same as winning an eight-player game.

Full detail, worked examples and fit

Win Count

count(1st-place finishes)

Pure victory count. Every first place adds one, and the biggest pile leads.

BestSeasons and leagues that want to reward attendance as well as winning.

WeakPunishes anyone who plays less, however good they are. Totals mean nothing across groups.

Full detail, worked examples and fit

Weighted Win Count

sum(importance_weight for each win)

Like Win Count, but each match carries an importance weight, so a final counts for more than a warm-up.

BestTournaments and playoffs where the stakes genuinely vary.

WeakNeeds someone to set those weights. Without them it is Win Count with extra steps.

Full detail, worked examples and fit

Podium Frequency

count(1st), count(2nd), count(3rd)

Counts your firsts, seconds and thirds separately, then ranks on firsts with the rest as tiebreakers.

BestFree-for-all fields of four or more, where a near-miss still deserves the record.

WeakIn a two-player game only first place exists, so it collapses into Win Count.

Full detail, worked examples and fit

Podium Rate

top_3_finishes / matches_played

The share of your matches that ended in the top three, rather than the raw count.

BestComparing people who have played very different numbers of matches.

WeakIn a three or four-player field almost everyone podiums, so it stops telling them apart.

Full detail, worked examples and fit

Top Half Rate

top_half_finishes / matches_played

How often you finish in the upper half of the field β€” first through fourth in an eight-player game.

BestBig groups, where finishing consistently above average is the real competition.

WeakIn a duel, top half just means winning, so it repeats Win Percentage.

Full detail, worked examples and fit

Placement Points

Points by finishing position, so every place is worth something.

Placement Points (Simple)

N - placement + 1 (where N = player count)

In an N-player match, first gets N points and last gets one. Points accumulate across matches.

BestFree-for-all game nights with a fairly steady group size β€” the easiest system to explain.

WeakWhen field sizes vary, winning a big match is worth more than winning a small one for no good reason.

Full detail, worked examples and fit

Placement Points (Normalized)

(N - placement + 1) Γ— (max_field / N)

The same idea, rescaled so every match is scored as though it had the largest field of the session. A win is a win at any table size.

BestGroups whose numbers swing between four and eight from week to week.

WeakThe scaling factor makes the raw numbers less intuitive than the simple version.

Full detail, worked examples and fit

F1-Style Points

25-18-15-12-10-8-6-4-2-1 for P1-P10

Formula 1's curve, unchanged: 25-18-15-12-10-8-6-4-2-1 for the top ten, nothing below.

BestLarge fields of eight or more, where you want winning to be worth a lot and the podium fight to matter.

WeakEveryone outside the top ten scores zero, which stops meaning anything in a big field. In small matches the curve has no room to work.

Full detail, worked examples and fit

Olympic Medal Points

1st=3, 2nd=2, 3rd=1, rest=0

Three for gold, two for silver, one for bronze, nothing for anyone else.

BestGroups that only respect the podium and want the table to say so.

WeakA steady fourth-place finisher is indistinguishable from someone who came last every time.

Full detail, worked examples and fit

Exponential Decay

decay_base ^ (placement - 1)

Points fall off by a fixed ratio per place, so the gap between first and second dwarfs the gap between fifth and sixth. The steepness is tunable.

BestGroups who want a sharply top-heavy curve and are happy to tune one number.

WeakThe totals are hard to hold in your head, so nobody can work out their own standing mid-session.

Full detail, worked examples and fit

Match-Weighted Points

(N - placement + 1) Γ— importance_weight

Standard placement points multiplied by each match's importance weight, so a podium in the final outscores a podium in the pool stage.

BestStructured events with pools, semis and a final.

WeakSomeone has to maintain the weights. Unweighted, it is Placement Points (Simple).

Full detail, worked examples and fit

Average & Percentile

Averages of where you finish β€” fair across uneven schedules.

Average Placement

sum(placements) / matches_played

Your mean finishing position across every match. Lower is better; 1.8 means you usually come first or second.

BestA balanced, instantly readable reading when your matches are roughly the same size.

WeakThird of four and third of ten both read as 3. If field sizes vary, use Average Percentile instead.

Full detail, worked examples and fit

Median Placement

middle value of sorted placements

The middle value of your finishes rather than the average, so one disastrous game does not drag the number.

BestMeasuring someone's typical evening rather than their worst one.

WeakProduces heavy ties with few matches, and throws away everything the extremes were telling you.

Full detail, worked examples and fit

Average Percentile

scales globally

avg((players_beaten / (N-1)) Γ— 100)

Every finish becomes the share of the field you beat β€” first of eight is 100%, third of four is 33% β€” and those get averaged. Playing more never hurts you.

BestMixed field sizes and uneven attendance; the fairest reading in this family, and comparable enough between groups to travel to a global board.

WeakIgnores opponent strength. Beating a weak field reads exactly like beating a strong one.

Full detail, worked examples and fit

Geometric Mean Percentile

(p1 Γ— p2 Γ— ... Γ— pN) ^ (1/N)

Multiplies your per-match percentiles and takes the Nth root, so a single near-zero match pulls the whole score down hard.

BestGroups who believe one catastrophe should count for more than one triumph.

WeakBrutal on an off day, and the maths is unfamiliar enough that people distrust the number.

Full detail, worked examples and fit

Best N of M

avg(best N placements out of M matches)

Averages only your best N finishes out of M played β€” the dropped-scores rule that racing series use.

BestLong seasons where you want to forgive the occasional disaster and reward a peak.

WeakNeeds a minimum number of matches before it says anything, so newcomers sit outside the table.

Full detail, worked examples and fit

Trimmed Mean

avg(results after removing best and worst)

Drops your best and worst results, then averages what is left β€” the Olympic judging approach.

BestA balanced reading that neither a lucky win nor an unlucky collapse can swing.

WeakNeeds at least three matches to have anything left after trimming, and it discards your genuine peak along with your fluke.

Full detail, worked examples and fit

Head-to-Head

Pairwise readings: who finishes ahead of whom, directly.

Head-to-Head Record

avg(win_rate vs each opponent)

Reads every match as a set of direct duels and averages your win rate against each opponent you have actually met.

BestDuos and rivalries, and small groups where everyone plays everyone.

WeakSparse pairings say nothing β€” if two people rarely meet, there is no record to read. Not meaningful across groups.

Full detail, worked examples and fit

Dominance Percentage

total_opponents_beaten / total_opponents_faced

Counts every opponent you finished ahead of, across every match, as a share of every opponent you faced. 80% means you outplaced four in five.

BestFree-for-all games, where beating more people in a bigger field is genuinely harder and this notices.

WeakDoes not care whether you edged them or crushed them, and does not care how good they were.

Full detail, worked examples and fit

Copeland Score

+1 per opponent beaten overall, -1 per opponent who beats you

For each opponent, work out who leads the series overall: +1 if you do, -1 if they do. Sum across everyone.

BestRound-robin settings with plenty of repeated matchups, where the pairwise picture is complete.

WeakSparse data produces ties and noise β€” a single meeting decides a whole pairing.

Full detail, worked examples and fit

Borda Count

sum(players_beaten per match)

Every match hands you a point for every player you beat, summed forever. Rewards placing high and playing often.

BestFree-for-all game nights with rotating attendance and variable table sizes.

WeakVolume-biased like Win Count β€” more matches always means more points. Totals mean nothing across groups.

Full detail, worked examples and fit

Score-Based

Uses the raw game scores, rescaled so different games compare.

Normalized Score Sum

needs scores

sum((score - min) / (max - min) Γ— 100)

Rescales each match's scores so the top scorer is 100 and the lowest is 0, then adds those up across matches.

BestCombining games whose scores live on wildly different scales, when you want a cumulative total.

WeakNeeds real scores. A 100–99 squeaker rescales identically to a 100–10 rout, and playing more always helps.

Full detail, worked examples and fit

Normalized Score Avg

needs scores

avg((score - min) / (max - min) Γ— 100)

The same 0-100 rescaling, averaged instead of summed, so a 40-point Skyjo hand and a 120-point Qwirkle game compare fairly.

BestGroups playing many different scored games under a single ranking with uneven attendance.

WeakMeaningless for win-only games, and it captures your position within the match rather than the size of the margin.

Full detail, worked examples and fit

Z-Score Sum

needs scores

sum((score - mean) / std_dev per match)

Turns each score into standard deviations above or below that match's average, then sums them. Positive means consistently above the room.

BestMature scored datasets where how far above average you were is the interesting part.

WeakNeeds several scored players per match and enough history to be stable; the numbers mean nothing to a casual reader.

Full detail, worked examples and fit

Consistency

How steady your results are, not how high they peak.

Consistency Score

1 / (1 + variance(placements))

Inverts the variance of your finishing positions, so second-second-third beats first-sixth-first.

BestA secondary column beside a real ranking β€” who is both strong and reliable.

WeakA player who finishes fifth every single time is perfectly consistent. Never use it alone.

Full detail, worked examples and fit

Floor-Ceiling Spread

worst_placement - best_placement (lower is better)

The gap between your worst and best finish. A spread of 2 is a metronome; a spread of 7 is a wild card.

BestA quick volatility check that needs no explaining.

WeakLooks only at the two extremes, so one freak result reads the same as constant swinging, and ties are everywhere.

Full detail, worked examples and fit

Participation

Balances how well you play against how often you show up.

Points Per Match

total_placement_points / matches_played

Placement points divided by matches played β€” the rate version of an accumulating table.

BestGroups where attendance varies a lot and you want performance separated from turnout.

WeakSomeone with two brilliant matches tops the table. Set a minimum before it means anything.

Full detail, worked examples and fit

Activity Bonus Points

placement_points + (bonus Γ— matches_played)

Placement points plus a flat bonus for every match played, so turning up is worth something on its own.

BestSocial groups who want the every-week regular to stay competitive with the occasional visiting shark.

WeakThe bonus needs tuning: too high and it becomes an attendance register.

Full detail, worked examples and fit

Games Played

count(matches_played)

A raw count of matches. No weighting, no performance β€” the iron-man award.

BestRecognising the person who never misses a game night.

WeakSays nothing whatsoever about skill, which is the point but is easy to misread as a leaderboard.

Full detail, worked examples and fit

League Standings

Classic league tables: W/L/D records, league points and margins.

Win/Loss/Draw Record

W-L-D record, sorted by wins

The foundational league table: wins, losses and draws tallied separately, ranked on wins.

BestAny competition that wants standings nobody has to have explained to them.

WeakBlind to schedule and volume β€” ten wins from ten games ranks level with ten from a hundred.

Full detail, worked examples and fit

Win Ratio

wins / games_played

Wins over games played, inside a league table, with draws optionally counting as half.

BestLeagues where people play very different numbers of fixtures.

WeakSmall samples produce extreme ratios; it needs a minimum-games threshold to behave.

Full detail, worked examples and fit

Wins Only

count(wins)

Rank by total wins and ignore everything else β€” losses and draws simply do not appear.

BestAll-time honours boards where the count is the story.

WeakFifty wins and two hundred losses outranks forty-nine wins and none.

Full detail, worked examples and fit

Points Total

needs scores

sum(all match scores)

The cumulative score you have put on the board across every match, unnormalized.

BestScore-based games where lifetime output is itself the badge β€” bowling, Scrabble.

WeakNeeds real scores, and heavily rewards whoever played most.

Full detail, worked examples and fit

Average Score

needs scores

total_score / games_played

Total points divided by games played β€” the rate counterpart to Points Total.

BestComparing scoring efficiency when people skip rounds.

WeakNeeds real scores, and a couple of good nights can carry a small sample.

Full detail, worked examples and fit

Margin Total

needs scores

sum(your_score - opponent_score)

Points scored minus points conceded, added up. Soccer's goal difference, generalised.

BestTwo-sided scored games where the size of a win carries information.

WeakOnly works for two-sided matches, needs scores, and rewards running up the score.

Full detail, worked examples and fit

Margin Average

needs scores

total_margin / games_played

The same margin, per game, so it does not reward whoever played most.

BestComparing how decisively people win across different numbers of fixtures.

WeakSame two-sided and score requirements, and very swingy over a handful of games.

Full detail, worked examples and fit

Points Standings (3-1-0)

3Γ—wins + 1Γ—draws + 0Γ—losses

Three for a win, one for a draw, none for a loss β€” world football's table since the nineties.

BestLeague play where draws exist and you want winning to be worth clearly more than not losing.

WeakTwo-sided matches only, and the three-to-one ratio is a value judgement baked into the table.

Full detail, worked examples and fit

Points Standings (W/L)

wins Γ— win_points + losses Γ— loss_points

Configurable points for a win and a loss, in formats where a draw cannot happen.

BestBest-of series, elimination brackets, anything sudden-death.

WeakTwo-sided matches only, and it has nothing to say if your game can end level.

Full detail, worked examples and fit

Points Standings (W/D/L)

WΓ—wp + DΓ—dp + LΓ—lp (configurable)

The fully configurable league table β€” set your own value for a win, a draw and a loss.

BestCompetitions whose incentives do not match the standard 3-1-0.

WeakTwo-sided matches only, and badly chosen values quietly reshape how people play.

Full detail, worked examples and fit

Placement Points

configurable points array by position

You define the exact points for each finishing position, as an array. Everything past the array scores the default.

BestRacing-style free-for-all where you want precise control of the curve.

WeakFree-for-all only, and the curve is only as sensible as the numbers you picked.

Full detail, worked examples and fit

Placement Standings

Placement tallies for free-for-all fields.

Placement Occurrence

count per position: {1st: N, 2nd: M, 3rd: K, ...}

Counts how many times you finished in each position, then ranks on the most firsts, most seconds, and so on.

BestTournaments where the whole distribution of finishes is the story, not a single number.

WeakIt is a row of counts rather than one figure, so it is awkward anywhere space is tight.

Full detail, worked examples and fit

Momentum

Time-aware readings β€” streaks and runs.

Longest Win Streak

max(consecutive wins)

Your best unbroken run of wins, wherever in your history it happened.

BestThe trophy case and the headlines β€” a bragging-rights board, and a good one.

WeakAs a primary ranking it is a museum piece: a run from a year ago outranks a current one, and playing more gives more chances to build a streak.

Full detail, worked examples and fit

Cross-Game

Rankings that span several games β€” measuring range, not depth.

Game Champion Count

count(games where your win% is highest)

For every game your group plays, whoever holds the best win rate is its champion. Your score is how many games you champion.

BestGroups with a wide shelf, asking who is the most versatile rather than the most specialised.

WeakWithout a minimum-matches rule, one lucky game of something obscure crowns you. It also favours whoever plays the widest range.

Full detail, worked examples and fit

Elo-like

Adaptive skill ratings that update after every match.

Elo

scales globally

R' = R + K Γ— (actual - expected)

The original chess rating. Predict the result from the ratings gap, then correct by how wrong the prediction was β€” beat someone above you and yours jumps.

BestPure duels with a stable roster: chess, darts legs, head-to-head anything. Cross-group play knits ratings together, so it travels to a global board.

WeakTwo sides only β€” a free-for-all needs Multiplayer Elo. Early ratings swing wildly until a player has some history.

Full detail, worked examples and fit

Multiplayer Elo

scales globally

Pairwise Elo with K/(n-1) scaling per match

Elo generalised: a six-player free-for-all becomes every pair of duels inside it, with the K-factor scaled down so one match does not count six times over.

BestLong histories with a stable group and mixed table sizes β€” the default serious choice, and it scales to global boards.

WeakMore players per match means more noise per match, so it takes longer to settle than a duel ladder.

Full detail, worked examples and fit

Uncertainty-aware

Ratings that carry a confidence band and know when data is stale.

Glicko-2

coming soon scales globally

R Β± RD with volatility Οƒ; converges adaptively

Elo plus a confidence band and a volatility term. A newcomer sits at 1500 Β± 350 and moves fast; a regular at 1800 Β± 50 barely twitches. Time away widens the band again.

BestLadders where people come and go, so returning players re-find their level quickly.

WeakTwo sides only, and the volatility parameter needs tuning for your pool before the numbers behave.

Full detail, worked examples and fit

Bayesian

Probabilistic skill estimates that handle duels, teams and free-for-all alike.

TrueSkill

coming soon scales globally

Bayesian: skill = ΞΌ - 3Οƒ, updated per match

Each player carries a skill estimate and an uncertainty; the shown rating is the conservative bottom of that range. Every match updates both, for duels, teams and free-for-all alike.

BestGlobal game leaderboards with many players in groups that never meet β€” it was built for exactly that, and it is the only advanced rating that handles all three match shapes.

WeakThe uncertainty maths is invisible to players, the numbers are less graspable than an Elo rating, and large free-for-all fields are expensive to compute.

Full detail, worked examples and fit

Statistical Models

Maximum-likelihood models β€” the most rigorous skill estimates.

Bradley–Terry (Pairwise MLE)

coming soon scales globally

P(A beats B) = s_A / (s_A + s_B); MLE optimization

Finds the set of player strengths that makes your entire match history most probable, re-weighing every match every time rather than only the latest.

BestDense histories between the same people, and global boards, since it tolerates players who have never met.

WeakPairwise data only, needs a lot of matches to stabilise, and it is opaque β€” hard to explain why a number moved.

Full detail, worked examples and fit

Plackett–Luce (Ranking MLE)

coming soon scales globally

MLE over full placements: P(ordering) from skill values

Bradley–Terry extended to full finishing orders: a placement is read as first being chosen from everyone, then second from the rest, and so on.

BestFree-for-all groups who record complete placements and want the most rigorous estimate available.

WeakExpensive to compute over large fields, and as opaque as its pairwise sibling.

Full detail, worked examples and fit

Matrix Methods

Linear algebra over the whole schedule β€” fair rankings from messy fixtures.

Colley Matrix

scales globally

Solve CΒ·r = b (matrix system from W/L schedule)

Builds one linear system from the whole schedule and solves it, so strength of schedule is accounted for without anyone weighting it by hand.

BestLeagues where people play very different fixtures β€” it was designed for exactly that problem in college football.

WeakWins and losses only; margins are ignored. Two-sided matches only, and the results can feel unintuitive because they fold in opponent strength.

Full detail, worked examples and fit

Massey Ratings

scales globallyneeds scores

Least-squares: r_A - r_B β‰ˆ margin for all games

A least-squares fit where every game says 'A's rating minus B's rating should be about this margin', solved across all games at once.

BestScored competitions where beating someone by thirty says more than beating them by one.

WeakNeeds real score data, and it rewards running up the score β€” worth a thought if your group finds that unsporting.

Full detail, worked examples and fit

Tournament Formats

Format-specific standings with their own tiebreakers.

Swiss Standings (with tie-breakers)

match_points + Buchholz/SB tiebreakers

Match points with proper Swiss tiebreakers β€” Buchholz and Sonneborn-Berger β€” so a tie is broken on who you had to play.

BestActual Swiss-paired tournaments, where those tiebreakers are the standard and mean something.

WeakThe tiebreakers only make sense when pairings followed the standings. Two-sided matches only.

Full detail, worked examples and fit

Try them on your own group

Switching methods never changes your matches β€” only how they are read. Flip between a few and see which order feels true.

Open your group's rankings