How Schedules Are Made and Checked
How each format builds its schedule, what the checks count afterward, what a result means when a target isn't reached, and how links and printing work.
Round robin
Every team plays every other team once, so n teams play n(n − 1)/2 matches. The schedule uses the circle method: one position stays in place and the others rotate one step each round. With an even number of teams that takes n − 1 rounds. With an odd number, a placeholder is added and whoever meets it sits out, so there are n rounds and every team has exactly one bye.
When a round has more matches than you have courts, the round is split into time slots, filling each slot with matches in the order the method lists them. Every second round, the first match of a time slot moves one court over, so the team in the fixed position doesn't play on the same court every round. Rounds aren't reordered to change back-to-back matches or how often each team plays on each court; those are shown as counts.
The seed shuffles the teams into positions before the rotation. Nothing else is random.
Sources:
Single elimination bracket
The bracket has as many slots as the smallest power of two that fits everyone. The slots left over are byes, and they go in the slot numbers given by the bye placement tables of the Badminton World Federation (BWF), so no first-round pair has two byes. In round 1, neighboring slots play each other, and after that the winners of neighboring matches meet. With n players there are n − 1 matches. Players or teams can be entered the same way.
The seed is a random number for the draw, not a seeding by rank. It shuffles players into the slots that aren't byes, so the draw, not your list order or anyone's strength, decides where each player starts and who gets a bye. The bracket doesn't keep stronger players apart.
Sources:
Double elimination bracket
Two losses knock a player out. The winners bracket is built exactly like the single elimination bracket, with the same slots, byes, and draw, so the same number of players and seed put everyone in the same starting slots. Each winners bracket loser drops into a set place in the losers bracket. Round 1 losers play each other first; after that, each losers bracket round alternates between meeting the players who just dropped from the winners bracket and playing among themselves. Where a dropped player goes follows the Little League approved brackets for 4, 8, 16, and 32 teams, used for every number of players with the same number of slots. When a bye leaves a losers bracket match with one player, that player moves on without a match.
The winners and losers bracket winners meet in the final. If the losers bracket player wins it, both have lost once, and the same two play a second game. That game is always on the bracket and is played only if needed, so n players play 2n − 2 matches, or 2n − 1 with the second game. Matches are numbered in an order that can be played: winners round 1 and 2, losers round 1 and 2, then each winners round followed by two losers rounds, and the final last. The seed works as in single elimination: a random number for the draw, not a seeding by rank.
Sources:
Rotating doubles
Each match is two pairs, so with n players and c courts a round has g = min(c, ⌊n/4⌋) matches, and the other n − 4g players sit out that round. Courts beyond g aren't used. Who sits out starts as a rotation through the players in an order set by the seed.
The pairings come from a search. It starts from that first schedule and keeps swapping players within a round, and it stops as soon as every target is reached or after a fixed number of tries that grows with the size of the schedule. The number of tries doesn't depend on how fast your device is, so the same entries and seed give the same schedule anywhere. When the search stops early, the result shows the best schedule it saw.
The targets come from a whist tournament, a known design where each two players are partners exactly once and opponents exactly twice. Such a design exists only for some numbers of players and rounds, so YepMatch doesn't build one directly. It works out a lower bound from your entries and searches toward it.
Sources:
Rotating doubles targets and lower bounds
With R rounds and C(n, 2) = n(n − 1)/2 possible pairs of players, no schedule can go below these bounds:
- Partners: the most times two players are partners is at least ⌈2gR / C(n, 2)⌉, because 2gR pairs are needed and there are C(n, 2) to choose from. So repeated partners can't be avoided with more than ⌊C(n, 2) / 2g⌋ rounds. Fewer rounds don't by themselves mean a schedule with no repeats exists.
- Opponents: someone plays at least ⌈4gR / n⌉ matches and faces two opponents in each, so the most times two players are opponents is at least ⌈2⌈4gR / n⌉ / (n − 1)⌉.
- Byes: when n doesn't divide the (n − 4g)R byes evenly, someone sits out one round more than someone else.
When not every target can be reached together, opponents are relaxed first, then byes, then partners. The search protects them in the reverse order: repeated partners first, then byes, then repeated opponents.
With Balance byes on, no player sits out more than one round more than another at any point in the search, and the difference always ends up at its lower bound, so in practice only opponents and partners are ever relaxed. With it off, byes have no target, and the checks only count them.
For partners and opponents, the result shows one of these:
- Met: the most counted equals the lower bound. Met. No repeats appears only when the bound is one and no two players are counted twice.
- Not found (one may still exist). Relaxed by k: the most counted is k above the lower bound. The search didn't find a schedule at the bound, which doesn't mean there isn't one.
- When the lower bound is two or more, fewer repeats are impossible, and the result gives the numbers that show why, such as the pairs needed against the pairs there are.
What the checks count
After a schedule is made, a separate count reads the finished schedule again. It doesn't use anything from the code that made the schedule. It works only from the schedule and your entries, and it works out each expected value from your entries alone. The one exception is where the byes in a bracket go: the count compares them with the same copy of the BWF bye placement tables that the bracket is built from, so a mistake in that copy is caught by tests, not by the count. A check shows Met only when its count matches the expected value. Counts with no target are shown as numbers only.
- Round robin: matches in total and for each team, pairs of teams that never meet or meet more than once, the number of rounds, teams listed twice in a round or a time slot, time slot numbers, matches and courts in each time slot, and byes. With no target: time slots, open time slots, back-to-back time slots, and matches on each court.
- Rotating doubles: four different players in each match, the number of rounds, matches in each round and in total, players listed twice in a round, how many times each two players are partners and opponents against their lower bounds, matches and byes for each player, the courts used, and totals that must add up. With no target: matches on each court for each player.
- Single elimination: slots, each player in exactly one slot, the number of byes and their slots, first-round pairs with two byes, matches in total and in each round, the number of rounds, how each winner and each bye moves on, players who could be in two matches in one round, and how many matches each player needs to win. Players with a first-round bye need one match fewer, and the result names them.
- Double elimination: the same slot and bye checks as single elimination, matches in each bracket and in each round, the second game of the final and when it's played, where each winner and each loser goes next, that every result is used the right number of times, that each match takes results only from earlier matches, losers bracket entries, players who move on in the losers bracket without a match, and players who could play twice in one round. With no target: for each losers bracket round, the matches whose two players could already have met, depending on who wins. A match counts when two players who could fill its two places were on opposite sides of an earlier match it depends on, so the count can include pairings that never happen. A round is called free of rematches only when its count is zero. The final can always be a rematch.
When a schedule can't meet a target
Round robin, single elimination, and double elimination always have a schedule that meets every check for any entries in range, so nothing is relaxed.
In every format, a check that should always hold, such as no one listed twice in a round or, with Balance byes on, byes within one of each other, isn't a target that can be relaxed. If one of those checks ever shows Not met, the schedule has an error. The result shows the counts without a success message and marks the schedule as one not to use.
Rotating doubles still makes a schedule when a target can't be reached. It shows the count, the lower bound, how much a target was relaxed, and, where the bound itself rules out fewer repeats, why. It doesn't call a target impossible unless the numbers prove it.
What you can enter
- Round robin: 3 to 32 teams and 1 to 16 courts. There are n − 1 rounds for an even number of teams and n for an odd number.
- Rotating doubles: 4 to 24 players, 1 to 6 courts, and 1 to 24 rounds.
- Single elimination bracket: 2 to 64 players or teams. There's one round for each halving of the slots, down to the final.
- Double elimination bracket: 3 to 32 players or teams. With k winners bracket rounds, the losers bracket has 2k − 2 rounds, followed by the final and its second game.
Names can be up to 30 characters, and each name must be different. Entries outside these ranges aren't accepted. More courts than a round can use are accepted, and the extra courts stay empty. The ranges may change.
Links and versions
The link records the format's version, your entries, and the seed, so the same link opens the same schedule in major browsers. A link without a seed gets a random one, which is then written into the link. Your entries stay in the link and aren't saved on a server.
The matchups and their order depend only on the version, the seed, and the settings the format uses: the number of players or teams, the number of courts for round robin and rotating doubles, and the number of rounds and bye balancing for rotating doubles. Names, the start time, and the minutes per match change only the labels and times, not who plays whom.
| Format | Current version |
|---|---|
| Round robin | Version 1 |
| Rotating doubles | Version 1 |
| Single elimination bracket | Version 1 |
| Double elimination bracket | Version 1 |
When the rules for a format change, its version number goes up, and the same seed can then give a different schedule. A link made for another version isn't opened as a schedule. The page says which version it uses and offers to open the same settings in that version. The seed isn't carried over, because the old seed wouldn't give the old schedule, so you get a new seed and can check the new schedule before you share it.
Printing
Each tool prints the full schedule (or the bracket) with its checks, and the cards for each player or team, as two separate print jobs from your browser's print. The entry form, the page text, and the list of matches aren't printed. Pages have 0.5-inch margins, and the paper size is the one you pick in the print dialog.
When you print the schedule or the bracket, the first page has the heading, the summary line, and the schedule or bracket itself. The checks start on the next page. With the default names, the schedule or bracket fits on that first page, on both Letter and A4 paper in portrait, in these cases:
- Round robin: up to 16 teams and up to 22 time slots (rows), with or without start times.
- Rotating doubles: up to 9 rounds, or 7 with start times. With the default names, when no one sits out and each round has at most 2 matches, up to 24 rounds, with or without start times.
- Single elimination bracket: up to 32 players or teams.
- Double elimination bracket: up to 16 players or teams. With more, the printed bracket starts the losers bracket on a second page, after the winners bracket and the final.
We measured these cases only with the default names, such as Team 1 or Player 1. Longer names wrap onto more lines, so fewer rows fit on a page. Outside these cases the schedule may still fit on one page, or it may run onto a second. We checked these cases in Chromium on October 22, 2026, with the paper in portrait. Other browsers may break pages in different places.
The cards have no page limit. With the default names, about 2 to 8 cards fit on a page, depending on the number of rounds.
Disclaimer
We count every schedule again with a separate check, but look at the counts yourself before you hand a schedule out. YepMatch makes schedules only. It doesn't keep standings or scores, and it doesn't move winners on to the next round. We aren't affiliated with FIDE, the BWF, or any sports organization, and the schedules don't replace the rules of your event.