🎧 YouTube Elo Tournament

Checking cloud sync…

1) Load songs

Paste YouTube URLs or IDs (one per line).

Fill in channel names for the bar chart race (optional β€” leave blank to skip).

ThumbnailTitleChannel name

or: Load from playlist (YouTube API)

Requires a YouTube Data API key.

2) Run Elo tournament

Stage system: 450β†’225β†’112β†’56β†’20β†’8β†’final.
Each stage: 6 matchesPlayed (3 group appearances) before cutoff.
Groups of 3–4 normally; groups of 3 when ≀20 alive; 1v1 final when ≀8.
Elo: K decays from 32β†’6 as matches accumulate.
RD (uncertainty): starts at Β±150, shrinks faster vs similar opponents.
Matchmaking: 70% Elo-close Β· 15% high-RD Β· 15% random.

No songs loaded.

3) Import / Export CSV

CSV columns: rank, id, title, url, elo, rd, matchesPlayed, eliminated

4) Bar chart race CSV

Columns: name Β· channel Β· thumbnail Β· match_0 Β· match_1 Β· …
Blank cells = song didn't play that match. Updated live in memory.

5) Cloud sync

Only used if this site is deployed with the included Cloudflare Pages Function + KV namespace (see README). Otherwise data just stays in this browser's local storage, same as before.

6) Edit data

Directly edit song titles, channels, Elo, RD, matches played, or eliminated status β€” no CSV round-trip needed.

Current match

No tournament in progress.

Load songs and press Start / Continue to begin.

Rankings

Sorted by Elo. RD bar shows uncertainty (green=confident, yellow=moderate, orange=uncertain).

Edit song data

Edit any field directly. Changes only take effect when you click Save changes. Elo/RD affect tournament ranking β€” edit with care.

IDTitleChannelURL EloRDMatchesElim?