Home

/

Docs

/

Swiss-Style Scheduling

Scheduling

Swiss-Style Scheduling

Pair teams against opponents with similar records each round instead of a fixed round-robin — how to enable it, generate rounds, and handle byes and rematches.

Swiss-Style Scheduling

What Is Swiss-Style Scheduling?

Swiss-style scheduling pairs teams against opponents with similar records each round, rather than following a fixed round-robin order set at the start of the season. After every round, teams are re-ranked by their current standings and the next round's matchups are generated from those standings — top team against the next-best team, and so on down the list.

This converges toward a fair final ranking without every team needing to play every other team, which makes it a good fit for:

Swiss scheduling is available for team leagues only. Singles leagues continue to use the existing group-based scheduling.


How It's Different From Round-Robin Scheduling

The regular scheduling tool generates every week's matchups up front, before any scores are entered. Swiss scheduling can't work that way — each round's pairings depend on the results of the rounds before it, so rounds are generated one at a time, only after the previous round has been fully scored.

Because of this, a session uses either the regular round-robin generator or Swiss scheduling, not both.


Enabling Swiss Scheduling

Swiss scheduling is turned on per session:

  1. Open Session Settings (or create a new session).
  2. Check Enable Swiss-Style Pairing.
  3. Save the session.

Once enabled, the Schedule page for that session replaces the usual "Add Weeks" button with a Swiss scheduling panel.

Turning this on does not generate any rounds by itself — you still choose when to start and how many rounds to run, as described below.


Starting Swiss Rounds

On the Schedule page, the Swiss panel shows one row for each division in the league. Leagues that don't use divisions get a single All Teams row instead — Swiss scheduling never requires you to set up divisions first.

For each row:

  1. Enter the total number of rounds you want to run.
  2. Click Enable Swiss.

This locks in how many rounds are planned. You can generate rounds independently for each division (or for "All Teams") — one division being ahead of another is expected and fine.


Generating a Round

Once enabled, click Generate Round 1. The first round has no results to rank teams by yet, so pairings are seeded by team number: the top half of the field plays the bottom half (team 1 vs. the middle-ranked team, team 2 vs. the next one down, and so on).

Before the round is created, a preview shows you:

Review the preview and click Confirm & Generate Round to create the matches.

For round 2 and beyond, the Generate Next Round button only becomes active once every match in the current round has been scored. If it's disabled, hover over it to see why — usually because one or more matches from the previous round still need to be entered.


How Pairings Are Chosen

Starting with round 2, teams are ranked by their current standings (points, wins, or whatever ranking your session's scoresheet is already configured to use — Swiss scheduling doesn't change how standings are calculated). Round pairings are formed by matching teams with similar records:

Rematches are avoided whenever possible. A pairing only repeats a previous matchup when there is truly no other legal option left — for example, in a very small division that has already played several rounds. When this happens, the round preview flags it and asks you to confirm before the round is created.


Byes

If a division has an odd number of active teams, one team sits out each round. The team with the lowest current standing that hasn't already had a bye is chosen first, so byes rotate fairly across the season rather than always falling on the same team.

A bye does not count as a win or a loss — it has no effect on a team's points or record.

A bye requires a BYE team to already exist in the session (the same placeholder used by the regular scheduling tool). If a round needs a bye and none exists yet, generating the round will show an error asking you to create one first.


Common Questions

Can I switch a session from Swiss scheduling back to round-robin mid-season? No — choose one mode per session before scheduling starts. Mixing the two isn't supported.

Do I have to set up divisions to use Swiss scheduling? No. Leagues without divisions get a single "All Teams" pairing pool automatically.

What happens if I add or remove a team mid-season? The next round will pair whichever teams are currently active. This is allowed, but keep in mind it affects how fair the season-long comparison is between teams that played a different number of rounds.

Can two teams end up playing each other twice? Only when there's no other legal pairing left — the system always tries to avoid rematches first and will show a warning if one can't be avoided.

Where do the standings used for pairing come from? The same team standings shown elsewhere in the app (Team Stats), based on however your scoresheet is configured to rank teams.

Can I undo a generated round? Yes, as long as none of its matches have been scored yet — delete the week from the schedule the same way you would for a regular round-robin week, and the "Generate Next Round" button will become available again.

← All documentation