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).
| Thumbnail | Title | Channel 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 stage number (used to figure out the next cutoff's MP threshold). Only change this if you're correcting old/imported data.
One-off repair: finds songs that are marked alive but sit at or below the highest eliminated song's Elo (i.e. escaped the prelim cutoff). Shows you the list before changing anything.
Current match
No tournament in progress.
Rankings
Sorted by Elo. RD bar shows uncertainty (green=confident, yellow=moderate, orange=uncertain).