Free bracket maker and tournament widgets

Make a bracket in seconds, put a live tournament on your website, or add the bracket to your stream. Free, with no account and no API key.

The bracket maker makes a bracket from a list of names in seconds, with no account. It is for office pools, game nights, classroom contests or anything where you just need the bracket, not sign ups.

Make one

  1. Open the free tools page and type the names, one per line, strongest first if you want seeds.
  2. Pick the format: single elimination, double elimination, round robin or swiss.
  3. Tap a match and enter its score. The winner moves on and the next round fills in.
  4. Copy the link to share it, or the embed code to put it on your site.

Everything about the bracket lives in its address, so the link always shows exactly the bracket you made, results included. Nothing is saved on our side and nothing expires.

Need sign ups, check in, players reporting their own scores or a prize? Host a real tournament instead. It is also free.

How the address works

A bracket's address carries everything:

https://roundswon.com/embed/bracket?teams=Alpha,Bravo,Charlie,Delta&format=single&results=r1-0:2-1,r1-1:0-2,r2-0:3-1

Match keys

Each match has a key that says where it sits in the bracket. Numbers count from 0, top to bottom.

FormatKeysExample
Single eliminationr<round>-<match>, and third for the third place matchr1-0 is the first match of round 1, r3-0 the final of an 8 player bracket
Double eliminationw<round>-<match> winners side, l<round>-<match> losers side, gf grand final, gf2 the resetl2-1
Round robin<group letter><round>-<match>A1-0, B3-1
Swisss<round>-<match>s2-3

Results can be listed in any order. A result for a later round waits until the matches that feed it have results. Matches decided by a bye take no result.

To see every key for a list of names, ask the API. It answers with every match, its key and who plays in it:

GET https://api.freeaffiliate.co/api/tournaments/bracket?teams=Alpha,Bravo,Charlie,Delta,Echo&format=double

Put it on a site

Swap the address into an iframe, or use the HTML tag:

<script src="https://roundswon.com/embed.js" async></script>
<roundswon-bracket teams="Alpha,Bravo,Charlie,Delta" results="r1-0:2-1,r1-1:0-2" title="Office Cup"></roundswon-bracket>

All the settings are in Embed a bracket on any website.

Every RoundsWon widget is a web page made to sit inside another page. Put it on your website, blog, wiki, Notion page or team site with an iframe or a single HTML tag. Widgets are free, need no account and no API key, and update by themselves while a tournament is live.

Build one by clicking on the free tools page, or write the address yourself with the reference below.

Quick start

A live bracket for a RoundsWon tournament, where abc123 is the code at the end of its page address (https://roundswon.com/t/abc123):

<iframe src="https://roundswon.com/embed/bracket?t=abc123" width="100%" height="520" style="border:0" loading="lazy" title="Tournament bracket"></iframe>

A bracket with no RoundsWon tournament at all, made from a list of names:

<iframe src="https://roundswon.com/embed/bracket?teams=Alpha,Bravo,Charlie,Delta&results=r1-0:2-1&title=Office%20Cup" width="100%" height="420" style="border:0" loading="lazy" title="Office Cup bracket"></iframe>

The widgets

Address (on https://roundswon.com)Shows
/embed/bracketThe bracket tree for elimination formats, or the table and rounds for round robin and swiss
/embed/standingsThe standings table on its own
/embed/cardA tournament card: poster, status, prize, players and an Enter button (live tournaments only)
/embed/leaderboardA ranked leaderboard from rows you give it

Where the data comes from

Each widget takes one of two sources.

A live RoundsWon tournament: t=<code>. The widget reads the tournament and refreshes every 15 seconds while it is open or live. Works with bracket, standings and card.

Settings in the address: no tournament needed. The bracket is built and played out by the same engine that runs real tournaments, so it always follows the format's rules.

SettingMeaningExample
teamsNames in seed order, separated by commas, 2 to 64teams=Alpha,Bravo,Charlie,Delta
formatsingle (default), double, groups or swissformat=double
resultsFinished matches as <match key>:<score>-<score>, separated by commas, in any orderresults=r1-0:2-1,r1-1:0-2
titleThe heading shown above the brackettitle=Office%20Cup
bestOfGames per match: 1, 3, 5 or 7bestOf=3
thirdtrue adds a match for third place (single elimination)third=true
resetfalse turns off the bracket reset (double elimination)reset=false
groupsHow many groups (round robin)groups=2
roundsHow many rounds (swiss), 0 for the usual numberrounds=4

Settings work with bracket and standings. The free bracket maker explains match keys and writes the results for you as you click winners.

Leaderboard rows

The leaderboard widget takes its rows straight from the address:

SettingMeaningExample
rowsName:score pairs, separated by commasrows=Kestrel:24,Juno:19,Tobi:31
titleThe headingtitle=Most%20kills
metricWhat the score is calledmetric=Kills
lower1 when lower is better, like timeslower=1
<iframe src="https://roundswon.com/embed/leaderboard?rows=Kestrel:24,Juno:19,Tobi:31&title=Most%20kills&metric=Kills" width="100%" height="360" style="border:0" loading="lazy" title="Most kills"></iframe>

Look

These work on every widget:

SettingMeaning
theme=darkDark colors. theme=light is the default
bg=transparentNo background, for stream overlays in OBS and Streamlabs

One HTML tag instead of an iframe

Add the script once, then use a tag per widget. The tag sizes itself to fit its content, so nothing is cut off and there is no scroll bar. Every setting above works as an attribute, with tournament for t.

<script src="https://roundswon.com/embed.js" async></script>

<roundswon-bracket tournament="abc123"></roundswon-bracket>
<roundswon-standings tournament="abc123" theme="dark"></roundswon-standings>
<roundswon-card tournament="abc123"></roundswon-card>
<roundswon-bracket teams="Alpha,Bravo,Charlie,Delta" format="double" title="Office Cup"></roundswon-bracket>
<roundswon-leaderboard rows="Kestrel:24,Juno:19,Tobi:31" metric="Kills"></roundswon-leaderboard>

The tags work in plain HTML and in React, Vue, Svelte, WordPress, Webflow, Squarespace or anywhere else that allows a script tag.

Free, with a small ad

Widgets are free with no limits. Each one shows a slim bar along its bottom edge with a link to RoundsWon and a one line ad. That bar is what keeps the widgets free.