League operations

Build a recreational league schedule that works across weeks

Calculate games, assign league nights and check conflicts before sharing your schedule.

Illustration of a schedule rearranged to remove a conflict
In this guide

Build a league schedule from confirmed availability. Then place the games, check for conflicts and review fairness across teams.

A full calendar is not necessarily a workable one. Breaks, venue closures and postponed games need room too.

Gather constraints before calculating

Confirm team counts by division and the season’s start and end dates. Then prepare three lists.

List Information to collect
Venues Playing areas, bookings, usable hours and closures
Teams Confirmed unavailability and shared constraints
Games Expected duration, changeover time, required rest and games per team

Separate requirements from preferences. “Unavailable at 6 p.m.” is different from “would prefer a 7 p.m. start.”

If those decisions are still open, start with the season preparation checklist.

Calculate the season’s workload

When every team plays every other team once, use n × (n − 1) ÷ 2.

Eight teams produce 8 × 7 ÷ 2 = 28 games. Each team plays seven games across seven rounds.

A round contains four games in this example. It is a set of games, not a fixed amount of time.

The round-robin game count guide also explains what happens with an odd number of teams.

Example: eight teams over seven nights

This is a fictional example. Teams A through H have two playing areas available on Tuesdays from 6 to 8 p.m.

Each 60-minute slot allows 50 minutes of play and 10 minutes for changeover. All times are local to Quebec.

Two areas host two games at 6 p.m., followed by two more at 7 p.m. That gives four games per night.

Each cell lists the games on playing areas 1 and 2, in that order.

Date Round 6 p.m. 7 p.m.
Tuesday, January 12, 2027 1 A–H / B–G C–F / D–E
Tuesday, January 19, 2027 2 B–E / C–D A–G / H–F
Tuesday, January 26, 2027 3 A–F / G–E H–D / B–C
Tuesday, February 2, 2027 4 G–C / H–B A–E / F–D
Tuesday, February 9, 2027 5 A–D / E–C F–B / G–H
Tuesday, February 16, 2027 6 E–H / F–G A–C / D–B
Tuesday, February 23, 2027 7 A–B / C–H D–G / E–F
Tuesday, March 2, 2027 Spare night Confirmed make-up games only Confirmed make-up games only

All 28 pairings are different. Every team plays once per night and faces all seven opponents.

Each team receives three or four early starts. Check playing-area assignments separately if the areas differ significantly.

March 2 is a contingency date, not an additional round. It is only available if the venue booking is confirmed.

Check conflicts before sharing

  • No team has overlapping games.
  • No playing area is double-booked.
  • Every game fits its booking, including changeover time.
  • Confirmed unavailability is respected.
  • Every team has the intended opponents and game count.
  • Early and late starts are distributed as fairly as possible.

If one team can only play at 7 p.m., revise the assignments. A balanced example is not useful if it ignores a real constraint.

In Rally Leagues, prepare availability and games before publishing the schedule. Then review the season as a team would see it.

The Rally Leagues page explains the full workflow, from teams to results.

Decide how changes will work

Assign someone to receive postponement requests. Keep a record of the original date and the confirmed replacement.

Before moving a game, check both teams, the playing area and nearby games. Contact everyone affected once the new slot is confirmed.

Use the league postponement procedure to avoid conflicting dates.

For an event played in one day, use the round-robin scheduling guide. Rest between games needs particular attention in a compressed schedule.

Step by step in Rally Leagues: Build and publish the schedule