Round-Robin Scheduling, Pairings and Tie-Breaks

How to build a round-robin schedule for 5 to 10 teams: game and round counts, the circle method, Berger tables, byes, generator checks and tie-break planning.

7 min readTournament desk1 viewsRound-Robin Scheduling, Pairings and Tie-Breaks
— · 0 votes
Contents
  1. The short answer
  2. How many games and rounds you need
  3. Turning rounds into clock time
  4. Inputs to gather first
  5. Building the schedule with the circle method
  6. Berger tables and side balance
  7. Using a schedule generator or maker
  8. Checking the plan for gaps and conflicts
  9. Tie-breaks

The short answer

In a single round-robin, every team plays every other team once. To schedule one by hand, use the circle method. List the teams in two rows. Keep one team fixed. Rotate everyone else one position after each round. Each round, the teams facing each other across the rows play. If you have an odd number of teams, add a placeholder called "Bye." Whoever draws the bye sits out that round.

This guide covers single and double round-robins for one group of teams or players. It explains how to size the event, generate pairings, check the result and settle tie-breaks before play starts. Rules from a league, sanctioning body or venue override anything here. Check those first if they apply to you.

How many games and rounds you need

With n teams, a single round-robin has n × (n − 1) ÷ 2 games. With an even number of teams, you need n − 1 rounds of n ÷ 2 games each, and every team plays in every round. With an odd number of teams, you need n rounds of (n − 1) ÷ 2 games each, and each team gets exactly one bye.

Teams | Rounds | Games per round | Total games | Byes per team
5 | 5 | 2 | 10 | 1
6 | 5 | 3 | 15 | 0
7 | 7 | 3 | 21 | 1
8 | 7 | 4 | 28 | 0
10 | 9 | 5 | 45 | 0

Check any row this way: rounds × games per round should equal total games. For example, 7 × 3 = 21, and 7 × 6 ÷ 2 = 21. In a double round-robin, each pair meets twice, often once at each home site. That doubles both the rounds and the total games.

Turning rounds into clock time

Rounds are not the same as time slots. If you have fewer courts or fields than games per round, each round takes several waves of play. Here is how to work out the time:

  • Divide games per round by the number of courts, and round up. That gives the waves per round.
  • Multiply waves per round by the number of rounds. That gives the total time slots.
  • Multiply total time slots by your slot length, then add any breaks.

Example: 8 teams on 2 courts means 4 games per round ÷ 2 courts = 2 waves per round. That is 2 × 7 rounds = 14 time slots. Your slot length depends on your sport and rules, so use your own figure. This guide does not assume one.

Inputs to gather first

  • The final team or player list, and whether late entries are allowed
  • Single or double round-robin
  • Number of courts, fields or boards, and when each is available
  • Match length, including warm-up and changeover
  • Any required rest time between a team's games
  • Whether home/away or color (such as white/black in chess) needs to be balanced
  • Known conflicts, such as a team that can only play late or two teams sharing players
  • The tie-break order and the rule for a withdrawal, both decided before play begins

Building the schedule with the circle method

  • 1. Number the teams 1 to n. If n is odd, add a "Bye" so the count is even.
  • 2. Write the first half of the numbers left to right on a top row. Write the second half right to left on a bottom row underneath.
  • 3. Each top team plays the team directly below it. That is round 1.
  • 4. Keep team 1 fixed. Move every other team one position clockwise: along the top row, down the right end, back along the bottom row and up to the slot next to team 1.
  • 5. Read off the new pairs as the next round. Repeat until you have n − 1 rounds for the padded count.

Worked example for 6 teams. All 15 pairs appear exactly once:

Round | Game A | Game B | Game C
1 | 1 vs 6 | 2 vs 5 | 3 vs 4
2 | 1 vs 5 | 6 vs 4 | 2 vs 3
3 | 1 vs 4 | 5 vs 3 | 6 vs 2
4 | 1 vs 3 | 4 vs 2 | 5 vs 6
5 | 1 vs 2 | 3 vs 6 | 4 vs 5

For 5 teams, use the same table and read team 6 as "Bye." Teams 1, 4, 2, 5 and 3 sit out rounds 1 through 5, in that order. Each team gets one bye, and the 10 remaining games cover every pair once. Seven teams work the same way: pad to 8 and build 7 rounds. Eight teams need no padding. Ten teams give 9 rounds of 5 games.

If you want to produce the pairings with a spreadsheet macro or a short script, this snippet follows the same rotation. For teams 1 to 6, it reproduces the table above:

def round_robin(teams):
    teams = list(teams)
    if len(teams) % 2:
        teams.append("BYE")
    n = len(teams)
    rounds = []
    for r in range(n - 1):
        pairs = [(teams[i], teams[n - 1 - i]) for i in range(n // 2)]
        rounds.append(pairs)
        teams = [teams[0]] + [teams[-1]] + teams[1:-1]
    return rounds

Berger tables and side balance

Berger tables are named after Johann Berger and are widely used for round-robin chess events. They produce the same set of pairings as the circle method. The difference is ordering: the highest-numbered player alternates sides each round, which helps balance colors. A 6-player Berger table looks like this, with the first-named player taking the first side (white in chess, or home):

Round | Board 1 | Board 2 | Board 3
1 | 1 vs 6 | 2 vs 5 | 3 vs 4
2 | 6 vs 4 | 5 vs 3 | 1 vs 2
3 | 2 vs 6 | 3 vs 1 | 4 vs 5
4 | 6 vs 5 | 1 vs 4 | 2 vs 3
5 | 3 vs 6 | 4 vs 2 | 5 vs 1

With an even number of teams, each team plays an odd number of games. Perfect home/away or color balance is therefore impossible. The best you can do is a split that differs by one. If balance matters, count each team's sides after generating the schedule, and swap the order within individual games where needed.

Using a schedule generator or maker

Most free and printable generators ask for the same inputs listed above. Typically that means team names, single or double format, number of venues, start time and match length. Their exact behavior varies, and no specific tool was reviewed for this guide. Treat any output as a draft and run the checks below before you publish or print it.

Checking the plan for gaps and conflicts

  • Total games match n × (n − 1) ÷ 2, doubled for a double round-robin.
  • Every pair appears exactly once, or exactly twice in a double round-robin.
  • No team appears twice in the same round or time slot.
  • With an odd number of teams, each team has exactly one bye per cycle.
  • No court or field is double-booked, and every slot fits its availability window.
  • Rest time between a team's games meets your minimum.
  • Home/away or color counts are within one of even, if you are balancing them.
  • Known conflicts, such as shared players or late arrivals, are respected.

Tie-breaks

Ties are common in round-robins. The order used to break them is an organizer decision unless your league or governing body sets one. The sources behind this guide do not establish a standard order, so check your sport's rulebook first.

If you have no rulebook to follow, publish your tie-break sequence before the first game. The same goes for your scoring system (for example, points for a win, draw or loss) and how you will count results involving a team that withdraws partway through.

Related articles