Bracket
Bracket is a self-hosted game servers & admin tool that provides flexible tournament system to build a tournament setup.
Honest review of the open-source tournament system. No marketing copy — just what you get when you run it yourself.
TL;DR
- What it is: Self-hosted tournament management system supporting single elimination, round-robin, and Swiss formats, with drag-and-drop scheduling and public-facing dashboards [1].
- Who it’s for: Sports club organizers, chess leagues, esports community managers, and gaming event operators running recurring tournaments who are tired of per-event fees or feature-capped free tiers [1][2].
- Cost: $0 for the software (AGPL-3.0). A $5–10/mo VPS handles a club running multiple concurrent tournaments [1].
- Key strength: Unusually complete feature set for a ~1,600-star project. Swiss tournament support with automatic scheduling is rare at this price point [1].
- Key weakness: No cloud offering — you self-host or you don’t use it. Independent reviews are nearly nonexistent. You’re evaluating on README and live demo alone [1][2].
What is Bracket
Bracket is a self-hosted tournament management platform. You deploy it on your own server, create clubs, add teams and players, then run multi-stage tournaments with the formats your community actually uses: single elimination, round-robin, or Swiss [1].
The project pitches itself as a “tournament system meant to be easy to use” — which undersells what it actually delivers. Beyond basic bracket generation, it handles dragging matches between courts, scheduling start times, and generating live public dashboards that your audience can watch on a projector at the venue [1].
The stack is Python with FastAPI on the backend and Vite with the Mantine component library on the frontend [1]. PostgreSQL is the database, and the whole thing ships as a Docker Compose stack. As of this writing it has 1,631 GitHub stars, 16 contributors, and 41 releases — small compared to category leaders, but showing real iteration over time [1].
The license is AGPL-3.0, which carries real implications for tournament software. AGPL means if you run Bracket as a public web service — say, a subscription platform for clubs — you’re required to open-source your modifications. For a club running it internally for their own events, this is irrelevant. For a developer building a commercial bracket SaaS on top of it, this is a genuine constraint [1].
One clarification worth stating plainly: this is not Adobe Brackets, the legacy web code editor Adobe discontinued in 2021. The name collision makes search results nearly useless — most “Brackets review” content online refers to the dead Adobe tool, not this tournament system. Independent reviews of evroon/bracket are essentially nonexistent, so this evaluation relies on the README, official documentation, and the live demo [1][2][3].
Why people choose it
Without third-party reviews to synthesize, the honest answer is: you choose Bracket because the SaaS alternatives charge in ways that don’t fit a recurring community operation.
The typical pain. A local volleyball club, chess association, or gaming community running weekly or monthly tournaments hits the same ceiling on Challonge, Toornament, and similar platforms. The free tier limits brackets or participants, the paid tier is priced for professional organizers, and you’re paying monthly for software you use a few hours each event. Challonge Premium runs around $10/month. Toornament’s professional plans scale into the $79+/month range for larger operations. start.gg works well for competitive gaming but is a closed platform with no export path for your player and match history [1][4].
What Bracket offers instead. A one-time deployment, no per-event fees, no participant limits, and your entire club’s match history in a PostgreSQL database you control [1][2].
What the trade-off actually is. You take on operational responsibility. If your server goes down during the championship final, that’s on you. There is no managed cloud, no support tier, no SLA [1][2].
Features
Based on the README and official documentation:
Tournament formats:
- Single elimination (standard knockout) [1]
- Round-robin (everyone plays everyone) [1]
- Swiss — partial pairing where standings determine matchups each round, with automatic scheduling [1]
Swiss support deserves a specific callout. Most free bracket tools stop at single elimination and round-robin. Correctly implementing Swiss is complex: the system needs to pair by standings while avoiding repeat matchups and handling odd player counts across variable numbers of rounds. Bracket handles this automatically [1].
Structure and scheduling:
- Multi-stage tournaments (pool play feeding into playoffs) [1]
- Multiple groups or brackets within a single stage [1]
- Drag-and-drop match scheduling across courts or time slots [1]
- Reschedule matches to different start times [1]
Team and player management:
- Create teams, add players to teams [1]
- Multiple clubs under one installation [1]
- Multiple tournaments per club [1]
Public display:
- Dashboard pages designed for public display — projectors, lobby screens [1]
- Customizable with a club logo [1]
- 30-minute live demo at bracketapp.nl for evaluating the UI before deploying [3]
Technical:
- REST API [1]
- Docker and Docker Compose deployment [1]
- PostgreSQL backend [1]
- Multi-language support via Crowdin, with browser language auto-detection [1]
- CI/CD via GitHub Actions with Codecov test coverage tracking [1]
What’s absent:
- No built-in registration or payment flow
- No native mobile app
- No OAuth or SSO — user management is local only
- No live stream or broadcast integration [1][2]
Pricing: SaaS vs self-hosted math
Bracket: $0 software cost. No cloud offering, no tiered pricing. You pay for a VPS [1].
Running it yourself:
- A $5–6/month Hetzner or Contabo VPS handles a club running multiple concurrent tournaments.
- Add a domain (~$12/year) and a reverse proxy (Caddy or nginx, both free).
- Total annual cost: ~$70–85/year.
What you’re replacing:
Challonge: Free tier limited; Premium $10/month ($120/year) for ad-free pages, more brackets, Swiss support.
Toornament: Free for small events; Professional tier ~$79/month for larger organizers with full feature access.
start.gg (formerly Smash.gg): Free for organizers, but closed platform — no self-hosted option, your data lives in their system.
Bailey’s Brackets (commercial desktop software): $9.99/year for a Windows bracket tool [4].
Concrete math for a chess club running 40 Swiss events per year:
On Challonge Premium ($10/mo), that’s $120/year. On self-hosted Bracket, it’s ~$72/year for a VPS — no event limits, no ads. That’s $48/year saved on the modest end.
For a regional esports organization running 50+ tournaments per year on Toornament Professional: $948/year vs. ~$120/year on a $10/mo VPS. $828/year saved, with data you own.
Deployment reality check
The quickstart is three commands: clone, cd, docker compose up [1][3]. The default stack brings up the backend, frontend, and PostgreSQL together. Anyone who has deployed a Docker Compose stack before can have a working instance in under 30 minutes.
What you need:
- A Linux VPS (2GB RAM minimum; 4GB recommended for concurrent heavy use)
- Docker and Docker Compose installed
- A domain and reverse proxy (Caddy recommended) for HTTPS in production
- Basic command-line familiarity [1][3]
Default credentials: The quickstart ships with a test login (test@example.org / aeGhoe1ahng2Aezai0Dei6Aih6dieHoo). Change these before exposing the instance to the internet [1].
Configuration: Backend uses .env files (prod.env for production). Frontend is configured via Vite environment variables. The docs at docs.bracketapp.nl cover the main options [1][2].
Realistic time estimates:
- Developer with Docker experience: 20–30 minutes to a working instance.
- Less experienced user following the docs carefully: 1–3 hours including domain setup and HTTPS.
- No prior Linux experience: this is not beginner territory. Have someone do the initial deployment [1][3].
Risk factors worth naming:
- 16 contributors is a small team. If the primary maintainer steps back, the project could stall. AGPL-3.0 means you can always fork, but that’s not nothing.
- No managed cloud fallback. Server failure on tournament day is fully on you.
- Documentation covers the main paths but has gaps on edge cases — GitHub discussions are the support channel [1][2].
Pros and cons
Pros
- No per-event fees. For a club running weekly tournaments year-round, this is the entire value proposition [1].
- Swiss with automatic scheduling. Rare among free tools. Properly implemented Swiss pairings are genuinely useful for chess clubs, card game communities, and any league using standings-based matchups [1].
- Multi-stage tournament structure. Pool play feeding into playoffs, multiple groups per stage — more flexible than most free bracket generators [1].
- Drag-and-drop court and time scheduling. Practical for sports clubs with multiple courts or time-boxed rounds [1].
- Public dashboards for live display. In-venue projector display is a real use case that most free tools don’t address [1].
- Your data, your server. Tournament history in a PostgreSQL database you control, no vendor lock-in [1].
- REST API. Programmatic access for custom integrations — Discord bots, scoreboard apps, website embeds [1].
- Multi-club support. A regional organization can manage multiple clubs from one instance [1].
- Live demo available. Evaluate the actual UI before committing to any deployment [3].
Cons
- No managed cloud. There is no “sign up and go” path. Non-technical club admins can’t use this without help [1][2].
- Small contributor base. 16 contributors. The project’s continuity depends heavily on one primary maintainer [1].
- No registration or payment flow. If you collect entry fees or need sign-up forms, you need a separate tool feeding into Bracket [1][2].
- No OAuth or SSO. Can’t integrate with Google Workspace, an existing club membership system, or any identity provider [1][2].
- Thin documentation. The README and docs cover main paths. Edge case configuration requires digging through code or GitHub discussions [1][2].
- AGPL-3.0 restricts commercial SaaS use. Internal club operation: no issue. Building a bracket hosting service on top of it: you must open-source your modifications [1].
- No independent reviews. Niche enough that there’s essentially no third-party coverage. You’re evaluating on README and demo.
- No mobile app. Field management between rounds means the browser UI on a phone, which is functional but not purpose-built for mobile [1].
Who should use this / who shouldn’t
Use Bracket if:
- You run a sports club, chess league, gaming community, or esports organization with recurring tournaments.
- You’re paying $10–80+/month on Challonge, Toornament, or similar, and want to eliminate that recurring cost.
- You or someone you trust can handle a Docker Compose deployment and occasional maintenance.
- You run Swiss-format events and want automatic pairings without spreadsheet work.
- You want multi-stage tournaments beyond what free SaaS tiers allow.
- You want a public display dashboard for in-person events.
Skip it if:
- You run one or two tournaments per year. Setup overhead isn’t worth it — use Challonge free or start.gg.
- You need player-facing registration and payment handling.
- You need SSO or integration with an existing club management system.
- You’re building a commercial bracket hosting product — AGPL-3.0 means open-sourcing your modifications.
- No one in your organization can deploy a Docker application.
Alternatives worth considering
Challonge — Free tier covers basic brackets; widely recognized by players. Premium (~$10/mo) adds Swiss support and removes ads. Closed SaaS, no data export.
start.gg (formerly Smash.gg) — Strong in competitive gaming. Free for organizers, good streaming integration. No self-hosted option; your player history is locked to their platform.
Toornament — More enterprise-focused, polished APIs and embeds. Free tier for small events; professional plans scale in price. SaaS-only.
Battlefy — Esports-focused, free for organizers. Solid Discord integration. No self-hosted option.
Spreadsheets + manual tracking — For very small or one-off events. Zero cost, maximum friction at scale.
The realistic comparison for most clubs is Bracket vs. Challonge Premium. Challonge wins on zero-ops setup and player recognition. Bracket wins on cost over time, no participant limits, Swiss support, and data ownership.
Bottom line
Bracket is a well-scoped self-hosted tournament system for organizers running recurring events who don’t want a monthly SaaS bill. Swiss format with automatic scheduling and multi-stage tournament support are genuinely useful features that don’t appear in most free alternatives. The deployment is three commands with Docker Compose — the technical bar is real but not high.
The honest limits: 16 contributors means you’re betting on a small maintainer team. There’s no cloud fallback, no registration flow, no mobile app, and AGPL-3.0 constrains commercial use. For a sports club or gaming community paying Challonge or Toornament month after month, the math is simple: one afternoon of setup replaces a recurring bill indefinitely, and your tournament history lives in your own database. If the deployment step is the blocker, that’s exactly what upready.dev handles for clients.
Sources
- GitHub — evroon/bracket — Selfhosted tournament system (README, features, license, contributor and release data). https://github.com/evroon/bracket
- Bracket Documentation — Official docs covering deployment, configuration, quickstart, and usage guide. https://docs.bracketapp.nl
- Bracket Live Demo — 30-minute demo instance for evaluating the UI. https://www.bracketapp.nl/demo
- TournamentBracketSoftware.com — Sports Bracket Software — Simplify Your Tournament Setup (Bailey’s Brackets pricing reference, $9.99/year). https://www.tournamentbracketsoftware.com/Sports-Bracket-Software.php
Features
Integrations & APIs
- REST API
Related Gaming & Entertainment Tools
View all 57 →Godot
108KFree, open-source 2D and 3D game engine with a unique node-based architecture — no royalties, no strings attached.
Sunshine
35KSelf-hosted game stream host for Moonlight. Low latency cloud gaming with AMD, Intel, and Nvidia GPU support.
Mindustry
27KA free, open-source factory-defense game blending Factorio-style automation with tower defense — cross-platform with bundled self-hosted multiplayer.
GDevelop
21KSelf-hosted gaming & entertainment tool that creates and publish games effortlessly.
Lila
18KFree online chess server. Play chess in a clean interface. No registration, no ads, no plugin required
Luanti
12KSelf-hosted gaming & entertainment tool that provides voxel game engine (formerly Minetest). Play one of our many games.