Blog/
How to Schedule a Tournament: The Formula for Any Format [2026]
Tournamyx Team · Tournamyx Digital
Tournament Guides
Almost every tournament schedule is built the same wrong way.
Count the matches, divide by the courts, book the venue.
That method understates your day, sometimes by hours, and it does it silently.
Here is the formula that actually works.
A schedule is built one round at a time, and a round has to finish before the next one starts. So:
slots = the sum, over every round, of (matches in that round / fields, rounded up)
Round up on each round separately. A round that leaves a court idle does not lend that gap forward to the next one.
A 10-team round robin is 45 matches. On 2 courts, flat division says 23 slots. The real answer is 27 slots — a full two hours more.
I have built this arithmetic into a live scheduler and watched it run 406 teams across 755 matches on 8 fields.
The rounding is not a rounding error. It is the schedule.
Key Takeaways
- slots = Σ ⌈matches in round / fields⌉. Never total matches divided by courts — rounds are sequential, so each one rounds up on its own.
- The waste per round is whatever your field count fails to divide. Nine rounds of 5 matches on 2 courts wastes half a slot nine times.
- Match your court count to your round size, not your match total. A 10-team round robin on 5 courts is 9 slots; on 2 courts it is 27.
- Extra fields beyond your largest round do nothing at all. A round robin's largest round is teams / 2, rounded down.
- Clock times come from one cascade: slot 1 at the start time, every later slot one slot-duration after the last. A delay at slot 6 moves slot 6 and everything after it.
Why Matches ÷ Courts Understates Every Schedule
Because it assumes matches are interchangeable units that can be poured into courts like water. They are not.
A team cannot be on two courts at once.
So the matches in a single round of a round robin have to run together, and the next round waits.
That is a sequencing constraint, and flat division cannot see it.
Work an example. A 10-team round robin runs 9 rounds of 5 matches.
On 2 courts, each round of 5 takes 3 slots.
Two courts run four matches, then one court runs the fifth while the other sits empty.
That empty court is half a slot, and it happens every round.
Nine rounds, nine half-slots, four extra slots. Two hours.
Flat division says 23 slots. The truth is 27.
The court allocation guide covers the other half of this problem: how long a slot should be, and how many usable minutes a booked day really contains.
The Formula, Format by Format
The formula never changes.
What changes is the round shape — how many matches each round contains — and that is entirely a property of the format.
Round robin
Every round has the same width: teams / 2, rounded down. An odd field means one team sits out each round.
That width is why a round robin needs teams − 1 rounds for an even field — it is a 1-factorisation of the fixture graph, and it cannot be compressed.
- 8 teams: 7 rounds of 4. On 2 courts, 14 slots. Flat division also says 14 — they agree, because 2 divides 4 exactly.
- 10 teams: 9 rounds of 5. On 2 courts, 27 slots against a flat 23.
- 12 teams: 11 rounds of 6. On 3 courts, 22 slots. Flat division agrees again.
Notice the pattern.
Flat division is right only when your field count divides the round width. Otherwise it lies, and it lies once per round.
Knockout
The round shape halves every round: 8, 4, 2, 1 for a 16-team bracket.
- 16 teams on 2 courts: 8 slots, and flat division agrees.
- 16 teams on 3 courts: 7 slots against a flat 5.
The bracket is where extra courts stop paying.
The final is one match. It cannot use four courts however many you rented.
Byes change the first round's width but nothing else — they shrink round one and leave the rest alone.
Swiss
Every round is the full field paired off: teams / 2, exactly like a round robin, but for ⌈log₂(teams)⌉ rounds instead of teams − 1.
- 16 players: 4 rounds of 8. On 2 courts, 16 slots. Swiss pairing does not change the width, only the opponents.
- 32 players: 5 rounds of 16. On 4 courts, 20 slots.
Swiss has an extra constraint the others do not.
Round N+1 cannot be drawn until round N is complete, because the pairings depend on the standings. There is no way to run ahead.
Group stage into knockout
Two shapes glued together.
The groups run in parallel, so their rounds add across groups. Then the bracket halves down.
- 16 teams, four groups of four, into a knockout of 8: rounds of 8, 8, 8, 4, 2, 1.
- On 2 courts that is 16 slots. On 3 courts, 13 slots against a flat 11.
Group into knockout is the format most real tournaments use, and it is the one where flat division is furthest off.
Free tool · no signup
Schedule maker
Lay out slots and fields for any format, then export the grid. No account needed.
How Many Fields Can You Actually Use?
Fewer than you think, and the ceiling is easy to compute.
A stage can never use more fields at once than its largest round contains.
A round robin's largest round is teams / 2 rounded down, so a 10-team round robin can never use more than 5 courts.
Rent a sixth and it stands empty all day.
Worse, the returns are lumpy rather than smooth. Compare the same 10-team round robin:
- 2 courts: 27 slots
- 3 courts: 18 slots
- 4 courts: 18 slots
- 5 courts: 9 slots
Going from 3 courts to 4 buys nothing.
Rounds of 5 need 2 slots at either width, because 5 divided by 3 and 5 divided by 4 both round up to 2.
That is the single most useful thing here, so I will put it plainly.
Choose a court count that divides your round width. Five courts for rounds of five. Not four.
Most organizers pick a court count from what the venue offers, then wonder where the day went.
The multiple divisions guide works the same logic across divisions sharing one venue.
Turning Slots Into Clock Times
Once you have a slot count, the timetable is a cascade with exactly four moving parts.
This is how the Tournamyx scheduler models it, and I have not found a case it cannot express:
- Slot 1 starts at your start time.
- Slot N starts one slot-duration after slot N−1.
- An override pins a slot to an exact time and re-anchors everything after it.
- A delay pushes that slot and every later slot back by the same amount.
That last one is the model, not a convenience.
A delay is not a property of one match. It is a shift of everything downstream, because the courts behind it are still occupied.
Twenty-seven slots of 30 minutes from 09:00 finishes at 22:30.
Which is the real argument against a 10-team round robin on two courts, stated as a clock time rather than a preference.
If the slot itself is the problem, borrow a sanctioned short format rather than inventing one — FIBA 3x3 runs a 10-minute game for exactly this reason.
One honest limit: schedule times carry no date, so a single stage cannot represent "and the rest tomorrow".
If your arithmetic runs past midnight, split it into two stages rather than fighting the grid.
When the day slips anyway, the levers are a separate problem — getting a late tournament back on schedule is about which cut buys you the most minutes.
Frequently Asked Questions
What is the formula for a tournament schedule?
Slots = the sum over every round of ⌈matches in that round / fields⌉.
Add each round's requirement separately and round each one up.
Total matches divided by courts is a floor, not an answer. Rounds run sequentially, and a partly-used round cannot lend its spare court to the next.
Why is matches divided by courts wrong?
Because it assumes any match can run at any time.
A team cannot play two matches at once, so a round has to complete before the next begins.
A 10-team round robin on 2 courts is 27 slots, not the 23 flat division gives. The round of 5 wastes half a slot, nine times over.
How many courts should I use?
One that divides your round width evenly. A round robin's round width is teams / 2 rounded down.
For 10 teams that is 5, so 5 courts is efficient and 4 is worth exactly the same as 3.
Picking the court count to fit the round, rather than the match total, is the cheapest hour you will ever save.
How do I calculate tournament start times?
Slot 1 opens at your start time and each later slot starts one slot-duration after the previous one.
So slot N starts at start + (N − 1) × slot duration. Twenty-seven 30-minute slots from 09:00 run to 22:30.
What happens to the schedule when a match runs late?
Every later slot moves by the same amount.
A delay is a cascade, not a local edit, because the courts downstream are still busy.
Pinning one match to a new time and leaving the rest alone is what produces a timetable that disagrees with the room.
Does this formula work for Swiss?
Yes, with one addition.
Each Swiss round is the full field paired off, so the round width is teams / 2 for ⌈log₂(teams)⌉ rounds.
Pairings for the next round cannot be drawn until the current round finishes, so there is no running ahead even if a court frees up.
The Tournament Schedule Formula: Recap
- slots = Σ ⌈matches in round / fields⌉, rounding up on every round separately.
- Flat division agrees only when your field count divides the round width. Otherwise it understates the day once per round.
- Round width by format: teams / 2 for round robin and Swiss, halving for a knockout, groups added across for a group stage.
- Fields beyond your largest round are wasted, and the returns are lumpy — 4 courts can be worth the same as 3.
- Clock times are a cascade from slot 1; a delay moves every later slot.
- A stage has no date, so anything running past midnight belongs in two stages.
Tournamyx builds the grid this way rather than by flat division.
You give it a field count, it lays each round across the fields in fixture order, and it stamps every slot with a start time as the schedule is generated.
No hand-editing a column of blank times.
Delays behave the way the room does.
Push slot 6 back fifteen minutes and slots 7 onward move with it, so the published timetable never disagrees with the courts.
It is free for events up to 8 participants.
Generate a schedule and check the slot count against the formula above.