Swiss Pairings, Explained

After reading this you will know how a Swiss tournament pairs its next round from the current standings, why players meet opponents on the same score, and how to check a pairing table by hand for a small event.

What Swiss pairing is

A Swiss tournament runs a fixed number of rounds. In each round every player meets one opponent, and the system tries to match players who have scored the same so far. Nobody plays the same opponent twice. Unlike a round-robin, where everyone eventually plays everyone, a Swiss event with 6 players might run only 3 or 4 rounds and still separate a clear winner.

Here is the hook. Suppose 6 players have finished two rounds. Alice and Bob both have 2 points, Carol and Dana both have 1, Erik has 1, Fred has 0. You cannot just pair "1 versus 2, 3 versus 4" from the standings, because Alice and Bob already played each other in round 1. The pairing has to look at both the scores and the history. That is the whole problem, and it is what the generator solves.

The result is a set of matches for the next round plus, when the count is odd, one bye. The winner of the event is whoever has the most points at the end. No knockout, no elimination.

When to use it, and when not

Swiss works well when you have many players and few rounds. With 32 players you need only 5 rounds to produce a meaningful ranking, because after each round the field splits into score groups and strong players quickly meet other strong players. A round-robin among 32 would take 31 rounds.

Use Swiss when time or venue limits the number of rounds, when you want every entrant to play every round (nobody is knocked out), and when you accept an approximate ranking rather than a proven one. Chess clubs, board-game conventions and esports qualifiers use it for exactly these reasons.

If your field is small enough that everyone can play everyone in the time you have, prefer a full round-robin: it produces a complete, fair result. Use the Round-Robin Schedule Generator for that. Switch to Swiss only when the round count is the binding constraint.

The pairing rule and the intuition behind it

Sort the players by score, highest first. Break each score into a score group: all players with the same points. Inside a group, the standard club method splits the group in half and pairs the top of the top half against the top of the bottom half.

\text{pair}(i) = i + \tfrac{n}{2} \quad \text{for } i = 1, \dots, \tfrac{n}{2}

Here n is the number of players in the score group, and i is a player's rank inside that group. So in a group of 4 ranked 1, 2, 3, 4, player 1 meets player 3 and player 2 meets player 4. The idea is that the strongest in the group should not immediately face the second strongest; you want the leaders spread across boards so the top spots stay contested.

Two complications force adjustments. First, a rematch: if the intended pairing repeats an earlier game, the generator backtracks and tries the next available opponent. Second, an odd group: if a score group has an odd number of players, one player cannot be paired inside it. That player floats down to join the group below.

Score group
All players tied on the same number of points before the round.
Float
A player moved into the next-lower score group because their own group had an odd size or a rematch could not be avoided.
Bye
The round off, worth a point (or half a point in some rules), given when the total player count is odd. It goes to the lowest-scored player who has not had one yet.

A worked example with six players

Reproducing the demo standings

Load the demo data. It reads:

Standings after round 2
PlayerPointsOpponents played
Alice2Bob, Carol
Bob2Alice, Dana
Carol1Alice, Erik
Dana1Bob, Fred
Erik1Carol, BYE
Fred0Dana
  1. Score group 2 points: Alice and Bob. Pair them. But they already met in round 1 (Alice's opponents include Bob). Rematch. The group of 2 cannot pair internally without a repeat, so one player must float down.
  2. Float Bob down into the 1-point group. That group now holds Carol, Dana, Erik plus Bob, four players ranked Bob, Carol, Dana, Erik by points then order.
  3. Alice is now alone at the top with no legal partner above, so she floats down too and joins the working group. Handle the 1-point cluster carefully: the generator pairs from the top, giving each player the highest-ranked opponent not yet met.
  4. Take Alice first. She has played Bob and Carol. Her highest untried opponent is Dana. Pair Alice vs Dana.
  5. Take Bob next. He has played Alice and Dana. Highest untried is Carol. Pair Bob vs Carol.
  6. Remaining: Erik (1 point) and Fred (0). Erik has played Carol and taken a bye. Fred has played Dana. They have not met. Pair Erik vs Fred.

The count is even (6 players), so there is no bye this round. Final pairings:

Round 3 pairings from the demo
BoardPlayerOpponentNote
1Alice (2)Dana (1)float down
2Bob (2)Carol (1)float down
3Erik (1)Fred (0)float down

Notice that both 2-point leaders had to be paired against 1-point players. That is the direct consequence of Alice and Bob having already met. Swiss cannot invent a fresh top-score opponent, so it pushes the leaders down one group.

An interactive to see rematches force floats

With 6 players in two score groups of 2 and 4, the top group pairs cleanly only when its two members have not met. Mark them as already played and both leaders float into the group below, exactly as in the worked example: Alice meets Dana and Bob meets Carol instead of a top-group game.

Reading the pairing table

Every row shows two players and, when relevant, a float flag. Read the flags first. A float tells you the pairing crossed a score boundary, which means a clean same-score match was not possible. In the demo, all three boards are floats, a sign that the small field and early rematches left little room.

Check the points next. A game between a 2 and a 1 (like Alice vs Dana) is a downfloat for Alice and an upfloat for Dana. Over several rounds you want to avoid floating the same player repeatedly, because it distorts their schedule strength. The club method here does not track float history across rounds, so watch for it yourself in longer events.

Two groups have odd or mismatched sizes (1 pt has 3, 0 pts has 1), which is why floats are needed to close the round.

Common mistakes

The most frequent input error is forgetting a past bye. If Erik took a bye in round 2 and you omit it, the generator may hand him a second bye, or fail to see why his opponent list is short. Write BYE as an opponent exactly as the demo does for Erik.

Do not assume the top two players in the standings will meet. In the demo, Alice (2) and Bob (2) are the two leaders, yet they are paired against 1-point players because they already met in round 1. Ranking order alone never determines a Swiss pairing; history overrides it.

A second mistake is expecting a bye whenever a round "feels" lopsided. The bye appears only when the player count is odd. With 6 players there is no bye, even though every board is a float. A third mistake is mislabeling half-point scores. If your rules award 0.5 for a draw, write Alice, 2.5; Bob, Carol and keep the decimals consistent, or the sort into score groups will be wrong.

Related tools

If your event is small and you have enough rounds, a full round-robin gives a complete result where every pair meets once. The Round-Robin Schedule Generator builds those fixtures by the circle method and inserts byes for odd fields. Use Swiss when the round count is capped; use round-robin when it is not.

Frequently asked questions

How many rounds should a Swiss event have?

A common rule is \lceil \log_2 N \rceil rounds to find a single clear winner. For 6 players that is 3 rounds; for 32 players, 5 rounds. Add a round or two if you want a more reliable full ranking rather than just a top finisher.

Why did two players on the same score not get paired together?

Almost always because they already played. The generator backtracks past any rematch and takes the next legal opponent, which often means floating one player into an adjacent score group.

Who gets the bye?

The lowest-scored player who has not already had one. In the demo, if a seventh player with 0 points and no prior bye existed, that player would take it. Byes usually count as a full point in the standings.

Does this follow the full FIDE rules?

No. It uses the standard club approach: top-down pairing with backtracking to avoid rematches, plus explicit floats. It does not implement the complete FIDE color-allocation and float-history rules. For a casual club or convention it produces sound, checkable pairings.

Can two players meet more than once?

Not while any unmet opponent remains. Only in the rare case where every legal pairing is exhausted (a very small field late in an event) might a rematch become unavoidable, and the generator will flag it rather than hide it.