A 9-team single round-robin is a common format for recreational hockey leagues. The math is clean: 36 games, 9 rounds, every team plays every other team exactly once, with one team sitting out each round.
This page lays out the full matchup schedule. Drop your team names into the 9 slots below and pair each game with an ice slot on your calendar.
How a 9-Team Round-Robin Works
With 9 teams, the structure is:
- Total games: 36
- Rounds: 9
- Games per round: 4 (one team has a bye each round)
- Games per team: 8 (one against each opponent)
Because 9 is odd, the rotation includes a bye every round — each team gets exactly 1 bye across the season, spread out so the same team isn't sitting out repeatedly.
The Full Matchup Schedule
Below is a standard round-robin rotation for 9 teams. Teams are labeled 1–9. Replace the team labels with your actual team names when you build your schedule.
Round 1
| Home | Away | |------|------| | Team 1 | bye | | Team 9 | Team 2 | | Team 3 | Team 8 | | Team 7 | Team 4 | | Team 5 | Team 6 |
Round 2
| Home | Away | |------|------| | Team 9 | Team 1 | | Team 8 | bye | | Team 7 | Team 2 | | Team 3 | Team 6 | | Team 5 | Team 4 |
Round 3
| Home | Away | |------|------| | Team 1 | Team 8 | | Team 7 | Team 9 | | Team 6 | bye | | Team 5 | Team 2 | | Team 3 | Team 4 |
Round 4
| Home | Away | |------|------| | Team 7 | Team 1 | | Team 8 | Team 6 | | Team 5 | Team 9 | | Team 4 | bye | | Team 3 | Team 2 |
Round 5
| Home | Away | |------|------| | Team 1 | Team 6 | | Team 5 | Team 7 | | Team 8 | Team 4 | | Team 3 | Team 9 | | Team 2 | bye |
Round 6
| Home | Away | |------|------| | Team 5 | Team 1 | | Team 6 | Team 4 | | Team 3 | Team 7 | | Team 8 | Team 2 | | Team 9 | bye |
Round 7
| Home | Away | |------|------| | Team 1 | Team 4 | | Team 3 | Team 5 | | Team 6 | Team 2 | | Team 7 | bye | | Team 8 | Team 9 |
Round 8
| Home | Away | |------|------| | Team 3 | Team 1 | | Team 4 | Team 2 | | Team 5 | bye | | Team 6 | Team 9 | | Team 8 | Team 7 |
Round 9
| Home | Away | |------|------| | Team 1 | Team 2 | | Team 3 | bye | | Team 4 | Team 9 | | Team 8 | Team 5 | | Team 6 | Team 7 |
This rotation uses the standard round-robin algorithm (fix one team, rotate the rest). Every team appears exactly once per round — except for the team on a bye that round, and no matchup is repeated.
What This Generator Doesn't Do
This is a matchup-and-slot starter — not a constraint solver. It won't:
- Automatically assign ice slots based on team availability
- Detect conflicts if a team's preferred night changes mid-season
- Cascade reschedules — if a game moves, you manually update downstream games
- Balance rest time — depending on how you fill the slots, some teams may end up with back-to-back ice times
For leagues where those constraints matter — most leagues with more than a single ice surface or meaningful team preferences — that's where a real schedule builder earns its keep.
Frequently Asked Questions
Can I use this for a different team count?
No — this matchup matrix is only valid for 9 teams. For other team counts, browse the other hockey round-robin generators on the Hockey schedules hub.
How are byes handled?
With 9 teams (odd), one team sits out each round. The rotation balances byes across the season so no team sits twice in a row, and every team gets the same number of byes overall.
Can I use this for other sports?
The matchup matrix is sport-agnostic — the same rotation works for any sport where every team plays every other team once. The download is formatted for hockey (ice slots, 1-hour game blocks) but the matchup structure works for any sport that uses a round-robin.
What if a team drops out mid-season?
If a team drops, the round-robin structure becomes irregular and is best handled by re-generating the schedule from the new team count. For recreational hockey leagues that experience mid-season changes regularly, the static matrix breaks down quickly — that's where LeagueNav's schedule builder helps.