An 8-team single round-robin is the most common format for recreational hockey leagues. It's clean: 28 games, 7 rounds, every team plays everyone exactly once.
This page gives you the full matchup schedule plus a downloadable template to fill in your team names and ice times.
How an 8-Team Round-Robin Works
With 8 teams, the math is simple:
- Total games: 28 (n × (n-1) / 2 = 8 × 7 / 2)
- Rounds: 7
- Games per round: 4
- Games per team: 7 (one against each opponent)
Each team plays exactly once per round, and every team faces every other team by the end of the season.
The Full Matchup Schedule
Below is a standard round-robin rotation for 8 teams. Teams are labeled 1–8. Fill in your actual team names when you download the template.
Round 1 | Home | Away | |------|------| | Team 1 | Team 8 | | Team 2 | Team 7 | | Team 3 | Team 6 | | Team 4 | Team 5 |
Round 2 | Home | Away | |------|------| | Team 8 | Team 5 | | Team 6 | Team 4 | | Team 7 | Team 3 | | Team 1 | Team 2 |
Round 3 | Home | Away | |------|------| | Team 1 | Team 7 | | Team 2 | Team 6 | | Team 3 | Team 5 | | Team 4 | Team 8 |
Round 4 | Home | Away | |------|------| | Team 7 | Team 8 | | Team 5 | Team 6 | | Team 4 | Team 1 | | Team 2 | Team 3 |
Round 5 | Home | Away | |------|------| | Team 1 | Team 6 | | Team 2 | Team 5 | | Team 3 | Team 8 | | Team 4 | Team 7 |
Round 6
| Home | Away |
|------|------|
| Team 6 | Team 7 |
| Team 8 | Team 5 |
| Team 1 | Team 3 |
| Team 2 | Team 4 |
Round 7 | Home | Away | |------|------| | Team 1 | Team 5 | | Team 2 | Team 8 | | Team 3 | Team 4 | | Team 6 | Team 8 |
This rotation uses the standard round-robin algorithm (fix one team, rotate the rest). Every team appears exactly once per round, and no matchup is repeated.
How to Use the Downloaded Template
- Download the Excel file using the button above
- Enter your team names in the Team Setup tab — the matchup schedule updates automatically
- Add your ice slots — enter the date, time, and rink for each game
- Publish the Printable Schedule tab to your team captains
The template has basic conditional formatting to flag if you accidentally double-book a team in a round.
What This Template Doesn't Do
This is a straightforward matchup-and-slot template — 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 Game 12 moves, you manually update downstream games
- Balance rest time — some teams may end up with back-to-back nights depending on how you fill the slots
For leagues where those constraints matter (most leagues with more than a single ice surface or meaningful team preferences), that's where scheduling software earns its keep.
Frequently Asked Questions
Can I use this for more than 8 teams?
No — this specific schedule is only valid for 8 teams. For other team counts, use our templates for 6-team, 10-team, or 12-team formats.
What if I have a bye week?
With 8 teams and 4 games per round, there are no byes — every team plays every round. If you need a bye structure, that requires a different format or a different team count.
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 soccer, basketball, or any round-robin format.
What if a team drops out mid-season?
With a dropped team, you have 7 teams and the round-robin structure becomes irregular (7 is odd, so one team sits out each round). That requires a different matchup matrix and is best handled by re-generating the schedule from scratch.