All tools
Local games and tournaments

Tournament Bracket Generator

Make a single-elimination bracket with reviewed seeds, automatic byes and manual winners. Keep independent results when changing a winner, undo your last change and share readable printable sections.

Participants and results stay in browser memory. Refreshing clears them; export JSON if you want to save and resume locally.

Participants and seeding

2-64 participants, one per line; 60 Unicode code points per name. Trimmed edges and ignored blanks. TXT: 64 KiB UTF-8; JSON state: 1 MiB. Repeated names remain distinct IDs.

Input ranking affects matchups and byes. Random mode uses an unbiased secure shuffle; review its seeds before generation.

Review seeds before generation

Prepare seeds from the current participant list. Generating uses exactly the order shown here, not a second random draw.

How to create and manage a bracket

  1. Enter 2-64 participants, one per line, or import a UTF-8 TXT file. Repeated names get distinct participant IDs, so they remain separate entrants.
  2. Choose Input order or Random shuffle. Prepare and review the seed list, then generate exactly that bracket. A random draw is not repeated behind the scenes during generation.
  3. Select the winner of each match once both participants are known. Byes advance automatically, but an undecided feeder remains Pending, not an empty slot.
  4. Changes with dependent recorded outcomes ask for confirmation. Undo restores the previous inputs, seeds and results; Reset outcomes keeps entrants and automatic byes.
  5. Copy the match list, download TXT, or export versioned JSON. Prepare an A4 or Letter PDF to download or print readable rounds/sections with feeder IDs.

Worked example: six participants and two byes

Alex, Sam, Jordan, Taylor, Morgan and Casey in input order become seeds 1-6. The next power of two is 8, with seed positions 1-8, 4-5, 2-7 and 3-6 in the first round. Seeds 7 and 8 are empty, so Alex and Sam receive byes. Taylor faces Morgan, and Jordan faces Casey.

There are seven possible match nodes, but only five played results are needed to name a champion: two first-round games, two semifinals and the final. Bye advances do not count as played wins. With three entrants there is one bye and two real matches; the final waits for the unresolved first-round winner.

Seed placement, random order and fair expectations

Standard positions are built recursively from [1, 2], replacing each seed s with [s, 2m + 1 - s] when doubling size m. For eight slots this gives [1, 8, 4, 5, 2, 7, 3, 6]. Higher-numbered missing seeds become byes opposite the highest seeds.

Input order is a ranking: seed 1 is first, so entry order affects opponents and byes. Random mode uses crypto-based Fisher-Yates with unbiased index sampling. It shuffles distinct IDs, including repeated names, before assigning seeds. Randomness does not assess skill, guarantee different draws or enforce sport-specific seeding policies.

What happens when a winner or name changes?

Changing a match winner clears every recorded descendant outcome that depends on that match, even if a later winner still appears possible. Other branches retain their results. You see the affected match IDs before confirming and can Undo the change exactly.

Use the dedicated rename controls to change a label without changing its stable ID, seeds or results. Editing the participant-list draft or seeding mode hides the previous bracket until you explicitly rebuild it, or Undo. Generating or importing a replacement with existing results requires confirmation.

Readable printing and local save files

The desktop diagram can scroll; the linear round/match list is the mobile and keyboard alternative. PDFs and browser print use the same layout: up to four matches per section, 11-12 point match text, and match IDs plus feeder references on every card. A 64-player bracket uses 17 pages rather than a tiny one-page screenshot.

The bundled PDF font supports many Latin letters and punctuation, but not emoji or every script. Unsupported print characters produce an explicit error without changing your browser bracket; JSON and TXT remain available. Paper choices are A4 and Letter.

JSON exports include the schema/version, participant IDs, labels, seeds, bracket structure and recorded winners. Imports reconstruct the canonical tree and reject altered edges, cycles, unknown versions, impossible winners and malformed records. Nothing is executed or rendered as HTML.

Limits, privacy and what this tool does not do

Use 2-64 entrants with names of at most 60 Unicode code points. Edges are trimmed, blank lines ignored and duplicate names retained with a warning. Names cannot contain control characters. Participant TXT files and pasted input are limited to 64 KiB UTF-8; JSON state is capped at 1 MiB. Invalid input is preserved, never silently shortened.

All participant processing stays on your device. Only bundled code and a local print font are loaded; names and results are not sent in requests, logs, analytics or URLs. Drafts are not saved in localStorage or IndexedDB. Clipboard failure leaves a complete selectable summary, and Clear offers in-memory Undo.

This is a local single-elimination bracket, not a live tournament platform. It does not support double elimination, round robin, scores, ties, synchronized results, accounts, invitations, notifications or sport-specific rules. A champion appears only after a real final winner has been selected.