Tournament bracket generator — single-elimination draws with byes

List the players or teams, choose a random draw or seeding as listed, and the tool builds a knockout bracket with byes placed fairly and every match numbered through to the final.

Live demo · real result from this tool
Seeding

Press Generate to create a result.

Processed on your device — nothing is uploaded.

How to use the tournament bracket generator

  1. Type the players or teams into Players or teams, one per line. You need at least 2 and at most 256.
  2. Choose Seeding: Random draw, or As listed (first = top seed) if your list is in ranking order.
  3. Press Generate bracket.
  4. Read the summary (players, bracket size, byes, rounds and matches to play), the bracket from the first round to the Final, and the First round table, which you can copy or download as round-1.csv.

What it does and when to use it

Use it for a table-tennis or chess club evening, a five-a-side cup, an office video-game tournament, a school sports day, a debate competition, or a “best snack” vote in pairs. The tool takes care of the awkward part, an entry list that is not a power of two, by giving byes to the strongest seeds.

To form the teams first, use the random team generator. To decide who serves or kicks off in each match, use the spinner wheel. Keep the score during matches with the scoreboard.

How it works

The bracket size is the next power of two at or above the number of players: 6 players need 8 places, 20 need 32. Byes are the difference. The tool places seeds in the standard order (for 8 places: 1, 8, 4, 5, 2, 7, 3, 6) and pairs neighbours, so seed 1 meets the lowest seed and the byes fall to the top seeds.

Matches are numbered M1, M2 and onward through every round. Later rounds show “Winner M1” and so on, and a player with a bye goes straight into the next round. Rounds are named Quarter-finals, Semi-finals and Final at the end. With Random draw, the list is shuffled with crypto.getRandomValues before seeding, so every arrangement is equally likely.

Worked examples

Six players, seeded as listed. Ava, Bruno, Chen, Dara, Emeka and Fatima give an 8-place bracket with “Byes: 2”, 3 rounds and 5 matches to play. The first round is M1 Ava v Bye, M2 Dara v Emeka, M3 Bruno v Bye and M4 Chen v Fatima, so the table shows “M2 | Dara | Emeka”.

Four players, seeded. A, B, C and D give two semi-finals, A v D (“M1 | A | D”) and B v C, then the Final.

Duplicates. The list A, B, A is reduced to two players and the note “Duplicate names were removed.” appears.

Limits and tips

  • Names must be unique; add a surname or a number to tell two players with the same name apart.
  • There is no third-place match.
  • Everything runs in your browser; nothing is saved, so download the CSV if you need it later.

Frequently asked questions

What is a bye and who gets one?
A bye is a free pass to the next round. A knockout bracket needs 2, 4, 8, 16 and so on places, so with 6 players two places are empty. The empty places go to the top seeds, so no match is ever bye against bye.
How does seeding work?
With As listed, the first name is seed 1, the second seed 2 and so on. The bracket uses the standard order, 1 v 8, 4 v 5, 2 v 7, 3 v 6 for eight places, so the top two seeds can only meet in the final. Random draw shuffles the list first.
How many matches will we play?
Always one fewer than the number of players, because every match knocks out exactly one player. Six players need five matches; 32 need 31.
Does it support double elimination or round robin?
No. It makes single-elimination brackets only. For a league where everyone plays everyone, you will need a round-robin schedule instead.
Can I print the bracket?
The bracket preview has no print button. Take a screenshot, or download the first round with the CSV button and fill in winners by hand or in a spreadsheet.

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close