Docs Tournaments
Documentation
Tournaments & Brackets
Run elimination, Swiss, group stage and free-for-all pod tournaments with registration, Elo-based seeding, and live public brackets
Jump to Section
Overview
Team Up tournaments take an event from sign-ups to a crowned champion. You create and manage the tournament from the web dashboard, players register from Discord or the web, and everyone follows the bracket on a live public page. Tournaments can link to one of your leaderboards so seeding comes from real Elo ratings and results feed back into the ladder.
The Three Surfaces
- Web dashboard — create, seed, start, record results
- Discord —
/tournamentsschedule & live messages with register buttons - Public page — live bracket at
/l/your-league/t/your-tournament
Tournament Lifecycle
Every tournament walks the same five phases:
setup → registration open →
registration closed → active →
completed (or cancelled)
The dashboard shows which one you are in on every tournament tab, with the next step as a button — see below.
What each phase means
Every tournament tab in the dashboard carries a phase rail: where you are, what it means, and the button that moves you on. You never have to remember this table — it is here for planning.
| Phase | What it means | Moving on |
|---|---|---|
| Setup | Format, seeding source and rules are still editable. The public page is already up. With self-serve registration players can already sign up; with admin-managed registration nobody can yet. | Open registration. Every tournament passes through this — even an admin-managed one, where it is simply the gate to starting. |
| Registration open | Players can sign up from the Discord register button or the public page. You can still add, remove and reseed by hand. | Start straight away, or close registration first to freeze the field. Back: setup. |
| Registration closed | Sign-ups are refused. Admins can still edit the roster — closing only stops players adding themselves. | Start tournament. Back: reopen registration. |
| Running | The bracket is drawn and results are being recorded. Seeds cannot change and the roster is locked, though squad line-ups and the current Swiss round can still be edited. | Report matches on the Bracket tab. Back: undo start, which discards the bracket — available only until the first result is reported. After that the only exits are finishing and cancelling. |
| Complete | The final result is in: champion crowned, placements assigned, public page switched to its podium view. | Nothing — though undoing the final match reverts it to Running. |
Starting needs at least 2 entrants, and on an ad-hoc squad event every squad must be full with nobody left unplaced. When something is missing the rail lists it instead of offering a Start button that would be refused. Cancelling is available from every phase before completion: the roster and bracket are kept as a record, and the participant role comes off everyone.
Drew the bracket too early? Press Undo start on the phase rail. It throws the bracket away and returns to Registration closed, so drag-to-reseed, Auto-seed by Elo and Regenerate squads all work again — then start it fresh. It is refused once any result exists, because a reported result has already moved ratings and only undoing that match reverses it. Anyone dropped as a no-show at start time has to be re-added by hand.
Creating a Tournament
Tournaments are created from the web dashboard — open your league and head to the Tournaments section. The create form covers:
Identity & Schedule
- Name & URL slug — the slug becomes the public page address
- Description — shown on the public page
- Start time — drives the schedule timeline (optional until you start)
- Info & rules — markdown field for rules and channel links (prizes have their own field, see Prizes)
Competition Settings
- Data source — optionally link a leaderboard + rating type for seeding and Elo
- Format — single or double elimination, Swiss, Pod Swiss, or group stage → playoff (see Formats)
- Registration cap — any number from 2 to 256, or unlimited
- Registration mode — self-serve sign-ups or admin-managed roster
- Who competes — players, squads formed for this tournament (see Registration), or named teams
Locked after setup: the data source, format, and participant cap
can only be changed while the tournament is still in setup. Once
registration opens, those settings are fixed so the bracket stays consistent with what players signed up for. Elo weighting gets a later deadline — it stays editable
through registration and locks when the tournament goes active.
Registration
Rosters can be self-serve (players sign themselves up) or admin-managed (you add every participant). Admins can always add or remove participants from the dashboard, whichever mode is active.
Self-Serve Sign-ups
- From Discord — members click the Register button on the
/tournaments schedulecard or the live tournament message - From the web — anyone signed in with a linked Discord account (or already a player in the league) signs up on the public tournament page
- Registration stays open through the
setupandregistration openstatuses, until the cap is reached - Players can unregister themselves — optionally only until an unregister deadline you set, so the bracket stays stable near start time
Admin-Managed Rosters
- Add participants from your league roster in the dashboard's Participants tab
- Each participant's Elo is snapshotted when they join the roster
- Remove or replace participants any time before the tournament starts
- Ideal for invitationals, qualifier-fed brackets, and curated events
Squads (2v2, 3v3, …)
A squad tournament is played by teams formed for this event only, and every member's own rating moves with their squad's. Set the squad size (2 to 10) and how squads form:
- Players invite — a captain starts a squad and shares its
6-character join code or link. In Discord the Register button offers Start a squad and Join with a code;
the public page does the same, and a
?join=CODElink fills the code in - Balanced by Elo or Random — players register on their own and you press Generate squads on the Participants tab (regenerate or fill the rest as often as you like before the start)
- Players can leave a squad without taking it with them, and Move players swaps or substitutes anyone, even mid-event
- Starting needs every squad full and the same size
Check-in
A short confirmation window before the start, so no-shows turn up in your roster instead of in round one. Optional, off by default, and independent of registration — check-in normally happens after registration has closed.
- Schedule it — pick 15 minutes, 30 minutes, 1 hour or 2 hours before the start time on the Settings tab. The window closes at the start time and follows it if you reschedule.
- Or open it on the night — Open check-in now on the Run or Participants tab runs a 15-minute window, and works even with no start time set. Extend +10 min is right there for when people are still filing in.
- Players confirm from the Check in button on the Discord tournament message, or on the public tournament page. You can also check anyone in by hand from the roster — the only way for entrants with no account, and how you fix a late arrival.
The Discord button and reminders
- The Discord button is there from the moment a window is configured. Clicking it early tells you when check-in opens; clicking it late tells you it has closed. Neither writes anything.
- Opening a window posts "check-in is open" in the tournament's channel and pings whoever hasn't checked in; a scheduled window announces itself the same way. Remind in Discord posts it again later to nudge the stragglers.
Nothing is dropped automatically. Check-in is advisory right up until you draw the bracket: when you press Start, the Run tab offers Drop N and start or Start with everyone. Dropping renumbers seeds and gives the top seeds byes. If nobody checked in, dropping isn't the default — an empty check-in usually means the window was broken, not that the whole field is absent — and it is refused outright if it would leave fewer than two players.
Seeding
Seeds determine bracket placement: the #1 seed plays the lowest seed in round one, and top seeds are kept on opposite sides of the bracket so they can only meet late.
Auto-Seed by Elo
One click in the Participants tab orders the whole field by current Elo rating from the linked leaderboard — highest rating gets the #1 seed. Unrated players sort to the bottom.
Requires a linked data source. Available while the tournament is in setup or registration.
Manual Seeding
Drag and drop participants into any order. Useful for qualifier results, standalone tournaments without a leaderboard link, or when you want to hand-craft the storyline.
New sign-ups are appended with the next free seed automatically.
Formats
Single Elimination
- One loss and you're out — N players, N − 1 matches
- Works with any field size: the bracket pads to the next power of two and byes resolve automatically in round one
- Podium: champion, runner-up, and joint-third semifinalists — or a real 3rd and 4th with a third-place match
Double Elimination
- Lose once → drop to the losers bracket; lose twice → out
- Winners bracket + losers bracket + a single grand final (winners-bracket champion vs losers-bracket champion)
- Works with any field of 4 or more — the draw pads to the next power of two and round-one byes go to the top seeds
Group Stage → Playoff
- World Cup shaped: a first stage, then a knockout bracket between the top finishers
- The first stage is round-robin groups or Swiss; the playoff runs single or double elimination
- With groups: choose how many groups and how many advance from each. With Swiss: choose the round count and how many advance overall
- Groups are drawn by seed in snake order so they come out strength-balanced — seeds 1–8 across four groups gives A=[1,8], B=[2,7], C=[3,6], D=[4,5]
- The bracket is drawn automatically when the last group fixture is reported, and the draw avoids round-one rematches between group-mates
Tiebreaks and playoff size
- Standings break ties by wins → head-to-head → score difference → score for → seed, so a group always resolves without a manual tiebreak
- A double-elimination playoff needs at least 4 qualifiers, so
groups × advancingmust be 4 or more
Third-place match
An optional bronze final for single-elimination brackets — including the playoff half of a two-stage tournament. The losing semifinalists play off for third, so the podium reports a real 3rd and 4th instead of joint third. The tournament completes once both it and the final are reported, in either order. Double elimination has no third-place match: the losers final already settles third on the field.
Swiss
- Nobody is eliminated — everyone plays every round, and each round pairs players on similar records
- Rounds default to
⌈log₂(players)⌉— enough for one undefeated player (8 → 3 rounds, 16 → 4). Set it manually if you prefer - Rematches are avoided — the pairing engine backtracks to find a draw where nobody repeats an opponent, and labels the round if no such draw exists
- Standings rank by points (win 1, draw ½) → Buchholz (combined points of everyone you've played) → head-to-head → score difference → seed
Buchholz is the part people miss: two players on 3-0 are not equal if one played the top of the field and the other the bottom, and it is what separates them.
Rounds, byes, draws and drop-outs
- Pairings are generated one round at a time, since round N depends on round N−1. The next round appears the moment the current one is fully reported
- An odd field gets a bye each round, to the lowest-ranked player who hasn't had one. A Swiss bye counts as a win
- Matches can end in a draw (½ point each, Elo settles as a draw) or be skipped (not played — no points, no Elo) so a round can complete even when a pairing never happens
- A player who leaves mid-event can be dropped — from the Participants tab, or by ticking them on the report dialog as you record their last match. They keep every result they earned and stay on the crosstable, but they are not paired again and cannot place. If the next round has already been drawn and nobody has played it yet, it is drawn again without them rather than handing their opponent a free win
- Runs standalone, where the standings leader wins, or as the first stage of a two-stage tournament feeding a playoff bracket
Pod Swiss (free-for-all)
Swiss for games whose match is a free-for-all rather than a duel — a 4-player FFA, a battle-royale scrim block, a multiplayer board game. Every round seats the whole field into pods, everyone plays, and where you finish scores points toward one table.
- Pick players per pod (3–10), the round count, and the
points per place. Blank points default to
K−1 … 0, so a 4-pod scores 3 / 2 / 1 / 0 - Round 1 seats by seed; every round after that seats players on similar totals together
- A field that doesn't divide evenly gets a short pod, never a bye — "first in a pod of one" isn't a result. Short pods are seated from the bottom of the table, because a smaller pod has the easier floor
- Standings rank by points → pod strength (combined points of everyone you've sat with) → average finishing place → pods won → seed
Ties, repeat seating, stats and reporting
- Ties split the points for the places they cover: two players tied for 1st in a 4-pod both score 2.5, and the next is 3rd
- Repeat seating is minimised, not forbidden. In a 4-pod you meet three opponents a round, so a hard no-repeat rule would be impossible by round three — a round with repeats is labelled rather than refused
- On a linked leaderboard each pod records as one N-player match, and if your leaderboard has stats with point values (kills, eliminations) the report dialog collects them for a performance bonus on top of placement
- In Discord, each newly seated round posts a message pinging every pod's players with who they're seated with. An admin reports a pod with Report result: pick the pod, then a place per player (the same place for a tie). Stat bonuses and pods of six or more are reported on the dashboard's Bracket tab
Rounds default to ⌈log_K(players)⌉ + 2 rather than the Swiss
rule, because one free-for-all is a noisier signal than one duel: the placements inside a pod
are correlated outcomes of a single event, not independent comparisons.
Pods → Final Pod
Pod Swiss as the first stage of a two-stage tournament, with the top N meeting in one deciding pod. Pick Group stage → playoff and choose Pods (FFA) as the first stage.
- The final pod holds 2–10 players and is seated automatically when the last pod of the last round is reported
- The champion is whoever wins the final pod — not whoever topped the standings. A shared 1st breaks on pod-stage rank
- The podium ranks inside the final pod; any slot left over is filled from the stage standings, so 4th of a 3-player final is the best player who missed the cut
- The final pod can't be skipped — a skipped final would complete a tournament with no champion
- It counts as the
finalstage for Elo weighting, so a "2× on the final" multiplier applies to it
No knockout playoff is offered off a pod stage, on purpose: a 1v1 top cut off a free-for-all group stage is a different game than the one everyone just qualified through.
Running the Tournament
Status transitions live in the dashboard: Open Registration, Close Registration, and Start Tournament. Starting requires at least 2 participants — it locks the roster, compacts the seeds, and generates the bracket.
Recording Results
Pick the winner in the Bracket tab, optionally with per-side scores (e.g. games won in a Bo3) and a match note. The winner advances instantly; in double elimination the loser drops to the losers bracket. Swiss matches can also be recorded as a draw or skipped entirely when a pairing won't be played. From Discord, an admin presses Report result on the tournament message, picks the match and clicks the winner (wins only; scores, draws and skips are on the dashboard).
Undo
Recorded the wrong winner? Undo reverses the match and pulls players back out of downstream slots. Undo works top-down — if a later match was already reported, undo that one first. Elo changes from the match are rolled back too.
Dropping out
People leave halfway through. In a knockout that needs no special handling — report their opponent as the winner. In Swiss and pod Swiss use the Drop button beside the entrant on the Participants tab while the tournament is running: they keep their results and their place on the crosstable, but are never paired again, cannot take a playoff seat, and cannot place. Re-enter puts them back in from the next round drawn.
Why it works this way, and dropping at the end of a round
Swiss needs the button because each round is drawn from the last one's results. A dropped player stays on the crosstable because erasing them would rewrite the record of everyone who played them. Their open matches settle as walkovers for their opponents, worth a full point with no Elo recorded, so the round can close and the next one can be drawn.
Because a round is paired the moment the previous one closes, a player who leaves at the end of a round would otherwise be drawn into the next one and hand someone a free win. Two things prevent that. The report dialog carries a "dropping out after this match" tick for either side, so the last result of a round and the drop happen together. And whenever the live round has no results at all, dropping offers to redraw it over the players who are left — the standard Swiss order of collecting drops and then pairing. Keeping the existing pairings stays one click away, because "no results reported" does not always mean "nobody has started playing".
Ending early
A Swiss's length is fixed when it starts and does not adapt, so a field thinned by drops can end up scheduled for rounds it no longer needs — and an evening ends when it ends. A running Swiss or pod event can be finished from the standings on the Bracket tab: whatever is unplayed is marked not played, the round count is trimmed to the rounds that actually ran, and the table crowns a champion exactly as the last round would have. Different from cancelling, which ends the event with no champion at all. When the leader genuinely cannot be caught, the standings say so.
Completion
Recording the final completes the tournament: the champion is crowned, placements are assigned (1st, 2nd, joint 3rd — or 1st–4th when a third-place match was played), the public page switches to its podium view, and a champion announcement posts to Discord. With a third-place match the tournament completes only once both it and the final are in.
Elo Integration
When a tournament is linked to a leaderboard, every recorded match is also written to that leaderboard's match history and updates Elo ratings — exactly like a regular recorded match. A strong tournament run moves the ladder.
Standalone tournaments (no data source) skip Elo entirely — the bracket alone decides the outcome. Note that a locked leaderboard blocks tournament match recording until it's unlocked.
Elo Weighting
A linked tournament can make its late rounds move ratings further than its early ones — so winning the final is worth more than winning a round-one match. Set a multiplier per stage on the tournament's settings tab, or take a preset: Gentle (1.25× quarterfinal, 1.5× semifinal, 2× final) or Steep (1.5× / 2× / 3×). Every stage is 1× until you change it.
Stages are named by rounds remaining, so in a 4-player bracket round one really is the
semifinal. Double elimination adds its own rows for the losers bracket and the grand final.
Weighted matches show a 2× badge on the bracket — on your dashboard and on the public page — so players see the stakes
before they play.
You also choose who the multiplier hits. Both players (the default) scales the winner's gain and the loser's loss equally, which keeps the ladder balanced — only the stakes change. Winner only rewards deep runs without punishing a late loss, and Loser only does the reverse.
Weighting one side and not the other means the rating gained no longer equals the rating lost, so ratings drift up (winner-only) or down (loser-only) across repeated tournaments. That's a real league-design choice, just a deliberate one. Weighting locks when the tournament starts, so every match in a round settles at the same rate — and undo still reverses exactly what was applied.
Discord Commands
The /tournaments command group keeps
your server in sync with the event. It's admin-only by default — grant access to other roles via Server Settings → Integrations in Discord.
/tournaments schedule [filter] Post the tournament schedulePosts an auto-updating schedule card listing upcoming and live tournaments (or past ones with filter: Past). Members register and unregister right from its
buttons. The card refreshes whenever a tournament is created, changes status, fills up, or ends —
up to 5 tracked schedule cards per server.
/tournaments start <tournament> [drop_no_shows] Draw the bracket and startStarts the tournament exactly as the dashboard's Start button does, with the same checks. drop_no_shows removes or keeps registrants who didn't check in; left out,
it follows the check-in window and asks you when there are no-shows. Results are then reported
with the Report result button on the tournament message.
/tournaments view <tournament> Privately preview a tournamentShows the tournament embed only to you — handy for checking how an event looks before posting it publicly.
/tournaments display <tournament> Post the live tournament messagePosts the public tournament message with a Register button. It auto-updates as the event progresses, and when the final is recorded a separate champion announcement is posted to the same channel — a fresh message, so the win actually notifies the server.
Public Tournament Pages
Every league gets a tournament timeline at /l/your-league/t and every tournament
gets its own page at /l/your-league/t/your-tournament.
No Discord login needed — share the link anywhere.
The Page Follows the Event
- Before — schedule, prizes, rules, roster, and a register button
- Live — pannable, zoomable bracket, up-next matches, and a results feed
- After — champion banner, podium, match history, and final standings
Branding & Visibility
- Pages inherit your league's branding, or the linked leaderboard's theme
- Per-tournament theme overrides with a live preview in the dashboard
- Hide any tournament from the public listing while keeping its direct link working
- Players' equipped nameplates show on the bracket and champion banner
Planning Your First Event?
The guide How to Run a Discord Tournament covers formats, seeding fairness, scheduling, and prizes — everything around the bracket itself.
Or start from the feature overview on the tournament bot page. To sketch a draw before you create the real event, the free bracket generator runs the same seeding and advancement code in your browser, and so do its Swiss and round robin versions.
Prizes, Flyers & Printing
Everything for getting people to the event and running it in a room: what each place wins, a poster that keeps itself up to date, and the bracket on paper.
Prizes
Set them on the tournament's Settings → Event → Prizes. They can be edited at any time, including once the tournament is running.
- Places and ranges — 1st, 2nd and 3rd in one click, or any place or range ("4th–8th"), up to 10 rows. A range's amount is what each place in it wins.
- Money, other prizes, or both — an amount, a text prize ("Trophy", "Custom Discord role"), or both ("$300 + Trophy")
- Currency — USD, EUR, GBP, BRL, JPY and about 30 others, written the way each visitor's language writes them, with the total prize pool added up for you
- Note — optional, up to 280 characters: who pays the prizes, how and when, and who can win them
Prizes show on the public page, in the tournament's Discord message and on the flyer, and the champion announcement lists who won which prize. Team Up shows prizes but never collects or pays them: the organizer or a sponsor pays the winners directly.
Flyers That Update Themselves
- The tournament's Flyer tab (managers) makes a poster from the event itself: name, start time in its time zone, format, slots and prize
- Eleven templates; Bracket, Final Stage and Matchups draw the real bracket and redraw after every result, through to the champion
- Your colors, a background (generated art, the league banner or an uploaded image) and a graphic; the QR code opens the tournament's public page
- Downloads: portrait 1080×1350, a 2160×2700 print file, story 1080×1920, a 1200×630 link preview, and landscape 1920×1080 on the templates that have it
- Admins can post it straight to a Discord channel
Print the Bracket
- The tournament's Print tab prints landscape pages: Blank (lines and seed numbers to fill in), Names (each entrant in their first match) or Results (everyone where they are now, with scores)
- Print a blank bracket on the dashboard's Tournaments page needs no tournament: single elimination (2–64), double elimination (4–64) or round robin (3–20), with names in seed order if you like
- Every format prints, from match cards with "Winner of" lines to group grids and Swiss score boxes; more than 32 entrants split across pages
- Black and white by default, or the league's color, icon and banner; Letter or A4. Choose Save as PDF in the print dialog for a file
No Tournament on Team Up?
The free flyer maker needs no account: type the event, add an optional sign-up link (a Discord invite, start.gg, Challonge, a Google Form or a teamupgg.com page), pick one of eight templates, and download or print it. The bracket templates and your own logo need a real tournament, made on the dashboard.