GenerateRandomSearch

Tournament Tiebreak Calculator

When two players finish level, the tiebreak decides it — and the usual tiebreaks are not about them at all, but about who they played. Buchholz adds up their opponents' scores; Sonneborn-Berger weights each opponent's score by what you took off them. The second rewards beating strong players over beating weak ones, and both are easy to get wrong by hand. Enter the results grid and this computes them, after confirming the grid is a legal round robin.

What this generator does

Adds each player's points from the grid, then computes Buchholz as the sum of their opponents' scores and Sonneborn-Berger as each opponent's score weighted by the result against them. The grid is checked for consistency before any of it is displayed.

How to use this tool

  1. Enter one row per player: the name, then the result against each player in order.
  2. Use 1 for a win, 0.5 for a draw, 0 for a loss, and a dash against yourself.
  3. Press Calculate.
  4. Read the points, then Sonneborn-Berger as the tiebreak; Buchholz is listed beside it and is always level when the points are.

Understanding the controls

Results grid
One row per player: the name, then the result against every player in the same order as the rows. Use 1, 0.5 or 0, and a dash on the diagonal where a player meets themselves.

Worked examples

Four players, a tie Buchholz cannot break
A beats B and C but loses to D; B loses to A and C but beats D; C loses to A but beats B and D; D beats A but loses to B and C. A and C both finish on 2 points, and both have a Buchholz of 4 (their opponents' scores sum the same either way) — but Sonneborn-Berger gives A 3 against C's 2, because A's win over C (who scored 2) counts for more than C's win over B (who scored only 1).

Common use cases

  • Settling a tie at the top of a club round robin
  • Checking the tiebreaks a tournament program reported
  • Deciding which tiebreak to use before the event rather than after
  • Teaching why beating a strong player is worth more on tiebreak
  • Recomputing a final table from the results grid

How this generator works

Points are the row totals. Buchholz sums the final scores of everyone a player faced. In a round robin that is everyone else, so it comes to the total of all points less the player's own: two players level on points always have the same Buchholz, and it is printed because rules ask for it, not because it can separate them here. Sonneborn-Berger multiplies each opponent's score by the result against them — a full share for a win, half for a draw, none for a loss — which rewards beating strong opposition rather than merely meeting it. Before display the grid is re-read: every pair's two halves must add to one, and the whole table must award exactly as many points as there were games.

Randomness and fairness

Nothing here is random. One results grid gives exactly one set of tiebreaks — this computes a table rather than pairing or playing anything.

For how randomness is produced across the whole site, see how Generate Random works.

Limitations and good to know

  • This is a round robin, where everyone meets everyone. Swiss tiebreaks use cut variants and adjusted scores for unplayed games, and those are not modelled.
  • Byes, forfeits and withdrawals all change how Buchholz is calculated in practice, and different federations handle them differently.
  • Half a point is the only draw value supported, so scoring systems using three points for a win are out of scope here. The league table generator handles those, separating level teams by goal difference and head-to-head rather than by these two.
  • The tiebreak your event uses is set by its rules; computing a different one here does not change the result.

Privacy and your data

The calculation runs in your browser and the names and results you enter are never transmitted, stored or included in analytics.