A youth or rec soccer league has two jobs: decide who plays whom, and decide which field and what kickoff time. A round robin does the first. With an odd number of teams, one team sits out each week, and the field and kickoff slots are where hand-made schedules go wrong. Nine teams is a common size: 9 Saturdays, 4 matches a week, one bye each.
Open the free schedule tool (paste your teams, list fields and kickoff times, get dates and a CSV or calendar file)
Nine invented teams play a single round robin on Saturdays from 24 October 2026. Two fields at 09:00 and 10:30 give exactly the four slots a week needs. Home team is listed first.
| Round | Matches (field and time) | Bye |
|---|---|---|
| 1 | Falcons v Sharks (Field 1 09:00), Wolves v Tigers (Field 2 09:00), Comets v Blazers (Field 1 10:30), Strikers v Rangers (Field 2 10:30) | Rockets |
| 2 | Tigers v Rockets (Field 1 09:00), Sharks v Comets (Field 2 09:00), Rangers v Wolves (Field 1 10:30), Blazers v Strikers (Field 2 10:30) | Falcons |
| 3 | Comets v Falcons (Field 1 09:00), Rockets v Rangers (Field 2 09:00), Strikers v Sharks (Field 1 10:30), Wolves v Blazers (Field 2 10:30) | Tigers |
| 4 | Rangers v Tigers (Field 1 09:00), Falcons v Strikers (Field 2 09:00), Blazers v Rockets (Field 1 10:30), Sharks v Wolves (Field 2 10:30) | Comets |
| 5 | Strikers v Comets (Field 1 09:00), Tigers v Blazers (Field 2 09:00), Wolves v Falcons (Field 1 10:30), Rockets v Sharks (Field 2 10:30) | Rangers |
| 6 | Blazers v Rangers (Field 1 09:00), Comets v Wolves (Field 2 09:00), Sharks v Tigers (Field 1 10:30), Falcons v Rockets (Field 2 10:30) | Strikers |
| 7 | Wolves v Strikers (Field 1 09:00), Rangers v Sharks (Field 2 09:00), Rockets v Comets (Field 1 10:30), Tigers v Falcons (Field 2 10:30) | Blazers |
| 8 | Sharks v Blazers (Field 1 09:00), Strikers v Rockets (Field 2 09:00), Falcons v Rangers (Field 1 10:30), Comets v Tigers (Field 2 10:30) | Wolves |
| 9 | Rockets v Wolves (Field 1 09:00), Blazers v Falcons (Field 2 09:00), Tigers v Strikers (Field 1 10:30), Rangers v Comets (Field 2 10:30) | Sharks |
Every team plays every other team once, has exactly one bye, and no field is used twice at the same kickoff. The slot assignment is a seeded search, so the same input always gives the same table.
The table comes from the same code the page runs and a test recomputes it, so it cannot drift from the tool.
List the teams, pick the Saturday, and use a round robin so every team plays every other team once. Nine teams play 9 rounds of 4 matches, and one team has a bye each week. Then give each match a field and a kickoff time so no field is booked twice.
One team sits out every round. A single round robin of nine teams has 9 rounds, and every team gets exactly one bye, so nobody misses more than one week.
Four matches a week need four field-and-kickoff slots: two fields at two kickoff times, or four fields at one. Count fields times kickoff times, not fields alone.
Count how many early kickoffs each team gets across the season and keep the counts within one of each other, so the same team is not always the one up at dawn.
Add the date as a skip date, list the field as closed on that date, or move a rained-out round with the rainout box; the tool keeps every field and kickoff free of clashes.
Related: how byes work with an odd number of teams, scheduling with limited courts and time slots, rescheduling a rained-out game and how to make a round-robin schedule.