A rec or church basketball league has the same two jobs every season: decide who plays whom, and decide which court and what tip-off time. A round robin does the first. The second is where hand-made schedules go wrong, because a gym has a few courts and a few evening slots and ten teams want fair ones. Ten teams on a Wednesday night is a common size: 9 weeks, 5 games a week, every team playing every week.
Open the free schedule tool (paste your teams, list courts and tip-off times, get dates and a CSV or calendar file)
Ten invented teams play a single round robin on Wednesdays from 4 November 2026. Two courts at 18:00, 19:00 and 20:00 give six slots, one more than the five games a week need. Home team is listed first.
| Round | Games (court and time) |
|---|---|
| 1 | Fastbreak v Buzzers (Court A 18:00), Dunkers v Skyhooks (Court B 18:00), Rim Riders v Pivots (Court B 19:00), Bruisers v Zone D (Court A 20:00), Hoopers v Net Gains (Court B 20:00) |
| 2 | Skyhooks v Hoopers (Court A 18:00), Buzzers v Rim Riders (Court B 18:00), Zone D v Fastbreak (Court A 19:00), Net Gains v Bruisers (Court B 19:00), Pivots v Dunkers (Court A 20:00) |
| 3 | Skyhooks v Net Gains (Court A 18:00), Hoopers v Pivots (Court B 18:00), Rim Riders v Zone D (Court A 19:00), Fastbreak v Bruisers (Court B 19:00), Dunkers v Buzzers (Court A 20:00) |
| 4 | Bruisers v Rim Riders (Court A 18:00), Net Gains v Fastbreak (Court B 18:00), Pivots v Skyhooks (Court A 19:00), Buzzers v Hoopers (Court A 20:00), Zone D v Dunkers (Court B 20:00) |
| 5 | Hoopers v Zone D (Court A 18:00), Dunkers v Bruisers (Court A 19:00), Skyhooks v Buzzers (Court B 19:00), Pivots v Net Gains (Court A 20:00), Rim Riders v Fastbreak (Court B 20:00) |
| 6 | Fastbreak v Dunkers (Court B 18:00), Buzzers v Pivots (Court A 19:00), Zone D v Skyhooks (Court B 19:00), Net Gains v Rim Riders (Court A 20:00), Bruisers v Hoopers (Court B 20:00) |
| 7 | Dunkers v Rim Riders (Court A 18:00), Pivots v Zone D (Court B 18:00), Hoopers v Fastbreak (Court A 19:00), Buzzers v Net Gains (Court B 19:00), Skyhooks v Bruisers (Court B 20:00) |
| 8 | Bruisers v Pivots (Court B 18:00), Net Gains v Dunkers (Court A 19:00), Rim Riders v Hoopers (Court B 19:00), Fastbreak v Skyhooks (Court A 20:00), Zone D v Buzzers (Court B 20:00) |
| 9 | Buzzers v Bruisers (Court A 18:00), Zone D v Net Gains (Court B 18:00), Hoopers v Dunkers (Court B 19:00), Skyhooks v Rim Riders (Court A 20:00), Pivots v Fastbreak (Court B 20:00) |
Every team plays every other team once, plays every week, no court is used twice at the same time, and each team has exactly three of its nine games at 18:00. 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 weeknight, and use a round robin so every team plays every other team once. Ten teams play 9 rounds of 5 games, so all ten teams play every week. Then give each game a court and a tip-off time so no court is booked twice.
Five games a week need five court-and-time slots. Two courts at three times give six slots, which covers it with one spare; count courts times time slots, not courts alone.
Count how many 18:00 games each team gets across the season and keep the counts within one of each other. In the example every team plays exactly three of its nine games at 18:00.
Only if you have the weeks: ten teams need 18 rounds for home and away. Most rec leagues play one round robin and use the standings to seed a short play-off.
Add the date as a skip date, list the court as closed on that date, or move the round with the rainout box; the tool keeps every court and time free of clashes.
Related: scheduling with limited courts and time slots, balancing home and away, rescheduling a postponed game, breaking ties in the standings and how to make a round-robin schedule.