Background on how Meta Breaker Live processes tournament data, ranks players, labels decks, and projects outcomes.
While a tournament is in progress, Meta Breaker estimates each player's chances of finishing in any given position (e.g. top 8, Day 2, winning) by simulating the rest of the tournament thousands of times and counting outcomes.
The simulator starts from the tournament's current state: every completed round is taken as given, every player's standing is what it actually is. From there it plays out the remaining Swiss rounds and the entire top cut, then records where each player landed. This is repeated many times, and the published probabilities are simply the fraction of simulations in which each event occurred.
Each simulation has two sources of randomness:
Usually 5,000. That has been a good middle ground in terms of compute cost and result quality. However, even with 5,000 simulation rounds there can still be meaningful noise in the output; especially for rare outcomes.
For constructed rounds when deck archetypes are known, win probability is estimated by looking at the history of the given match-up within this tournament. No external tournament data is considered and no player-specific considerations are made. If no archetype data is available the game win probability is taken as 50%.
Archetype game win rates are sampled at the start of each simulation based on game results so far. For a given matchup the win rate of archetype X over archetype Y will be sampled from Beta(8 + x, 8 + y) where 'x' is the number of games X beat Y and 'y' is the number of games Y beat X.
After determining the game win probability of each player the match is simulated by deciding games until one player has 2 wins. Ties never occur in the simulation.
Intentional draws are only simulated in the last round before a top cut. For this round two players will intentionally draw if no matter the outcome of any other match they will both make the top cut.
This logic makes two assumptions that may not always be right. First, the logic assumes that the relative ordering of OMW% tie-breakers between players will not change. Due to the way the final round of swiss pairings works this is often the case but not always. Second, it assumes players wouldn't intentionally draw for any other reason. In some tournaments this is definitely not correct where two players may intentionally draw to lock up e.g. a top 32 rank.
After each simulation finishes, the per-player stats updated are:
rank_best / rank_worst — the best and worst final rank ever observed for the player.top_1, top_2, top_4, … top_256 — fraction of simulations in which the player's final rank was strictly within the top 2i. top_8 = top-8 conversion rate, top_1 = win rate.cutoff_<points> — fraction of simulations in which the player ended Swiss with at least this many match points (one entry per required_points threshold).Mostly melee.gg. The "Data Source" link in each row on the home page points at the original event page.
For Pro Tours the live data usually comes directly from magic.gg and eventually reverts to using Melee which usually has higher quality data once published.
While a tournament is active data is updated every 5 minutes, so leaderboards refresh as rounds are reported.
Deck labels usually come from the data source (e.g. Melee.gg). For the occasional open decklist tournament that does not include deck labels a LLM is used to assign archetypes. The LLM is given a description of the common decks in the format and asked to categorize each deck. See Paupergeddon Spring 2026 as an example of this technique.
Data is updated approximately every 5 minutes while a tournament is active. Network data can be further cached for up to 60 seconds, so worst case a refresh takes about 6 minutes to appear.
Yes. Every tournament's full JSON (players, decklists, every round result) is downloadable from the Download column on the home page, or directly at https://metabreaker.live/data/<tournament-id>.json.
The file format is documented at Dataset Format & Downloads, including a formal JSON Schema.
While a Magic enthusiast I'm not always the most plugged into the MtG tournament scene. If there is an active/upcoming major tournament (On Melee, RC level or more than 200 people) feel free to reach out at contact@metabreaker.live. No guarantees of a prompt addition, however.
The project is OpenSource. The project is still pretty new so I'm not intentionally trying to expand the contributor base. If you have something you really want to work on please contact me through GitHub.
Meta Breaker Live relies on static html content delivered through Cloudflare Pages with datasets updated and delivered through Cloudflare's R2 service. Datasets are updated using a tiny container deployed through fly.io.
Claude Code was used to implement most of the front-end web UI you're looking at.