Most draft tools show you a win rate and leave it there. Brawl Draft fuses several different signals — a learned win-probability model, empirical map and matchup stats, role fit, and optionally your own account history — into one number per brawler, and shows you every component that went into it.
This page explains exactly how that number is produced, what the underlying model is actually good at, and where it falls down. Nothing here is a secret-sauce pitch. If you understand the reasoning, you can decide for yourself when to follow a suggestion and when to ignore it.
Every number traces back to real ranked matches, collected through the official Brawl Stars API.
That API is player-centric: you can ask for one player's roughly 25 most recent battles, but there is no global match feed you can just download. So the collector snowballs. It seeds from leaderboard players, pulls their ranked matches, harvests the other five player tags out of each one, and adds those players to the queue. The frontier expands outward from the top of the ladder.
Because a single match appears in up to six players' battle logs, everything is deduplicated by a stable key — the match's timestamp plus the six player tags sorted — before it counts once. Each surviving row is the same shape: map, mode, team A's three brawlers, team B's three brawlers, and who won.
The current model was built from 1,059,778 labeled ranked matches. 158,966 of those were held out for validation and never shown during training, leaving 900,812 the model actually learned from — which is why the accuracy figures below mean something.
Matches also decay. The empirical stats table weights each match by an exponential half-life of about three weeks, so a month-old game counts roughly a third as much as a fresh one, and a brawler that falls out of rotation after a nerf sheds its effective sample size on its own. The model is trained with the same idea at a roughly 30-day half-life. Nothing has to be manually flushed after a balance patch — old games just quietly stop mattering.
One thing is missing and cannot be fixed: the API never exposes the ban phase. It only reports the final picked teams. So there is no ban data anywhere in the dataset, and ban advice has to be inferred rather than learned.
The model takes eight things: your three brawlers, their three brawlers, the map, and the mode. It returns one number — the probability your side wins.
Every brawler gets a learned vector of 32 numbers, a compressed description of what that brawler does, derived purely from which teams win. The map and mode get their own smaller vectors, concatenated into a context.
Team strength. The three brawler vectors on a side are averaged, the map/mode context is stapled on, and a small network turns that into one strength score. The same network scores both teams, and the enemy's score is subtracted from yours. Averaging means the network is blind to the order you listed your brawlers in, which is correct — a comp is a set, not a sequence.
The counter term. Strength alone can only say "these three brawlers are good here." It has no way to express that a particular brawler eats a particular other brawler. So each brawler also gets two extra 16-number vectors: an *attacker* vector and a *defender* vector. Your team's attacker vectors are matched against their team's defender vectors, and the reverse is subtracted. When a brawler's attacker vector lines up with another brawler's defender vector, the model has learned "this one beats that one" — independent of whether either is strong in general.
That is the whole point of the counter term. A brawler can be excellent on a map and still be a bad pick into a specific enemy comp. A model that only adds up how good each brawler is literally cannot represent that. This one can.
Antisymmetry. Every term flips sign when the two teams are swapped, which means the probability your team wins plus the probability theirs does always adds to exactly 1 — by construction, not by training. There is no "team A wins slightly more" artifact to unlearn, and no need to feed the model every match twice with the sides reversed.
On the 158,966 held-out matches it never trained on:
A constant 50% guess scores a log loss of 0.6931 — that is the do-nothing baseline. A logistic regression on which brawlers are present gets 0.6852 log loss, 55.0% accuracy, and 0.570 AUC. The embedding model gets 0.6674 log loss, 58.8% accuracy, 0.625 AUC, and an expected calibration error of about 0.009.
On unfinished boards the same model degrades gracefully: with a single known pick its log loss is 0.6908 (barely better than knowing nothing, which is the truth of that situation), improving monotonically to 0.6674 as the board fills in, with calibration holding near 0.01 at every state.
In plain terms: shown two full comps and a map, with no idea who is playing them, it picks the winner right about 59% of the time. That is a real edge over a coin flip and it is not a large one.
That ceiling is a property of the game, not a bug in the model. Ranked matchmaking pairs players of similar skill. Both teams usually draft something reasonable. And then the match is decided by aim, positioning, Super timing, and rotations — none of which the draft can see. A tool that claimed to predict ranked outcomes from the draft alone would be lying to you.
The number worth caring about is calibration. An expected calibration error near 0.01 means the probabilities are close to literal: across the matches where it says 55%, that side wins about 55% of the time. It does not systematically inflate or deflate. That is exactly what an assistant needs, because the whole job is comparing small differences between candidate picks. A confident-but-miscalibrated model would rank picks badly even at the same accuracy.
So the model is used for *relative* ranking — is this pick better than that one, and by how much — not as a prophecy about the game you are about to play.
The model is one voice, not the whole recommendation. Four other signals are computed directly from the collected matches and blended with it.
Every raw win rate is first shrunk toward 0.5 with 20 pseudo-games. A brawler that went 3-0 on a map does not display as 100% — it displays as barely above the prior, and it earns its way toward its true rate as real games accumulate. That same math produces the confidence indicator next to each suggestion: games divided by games-plus-20.
The blend is a weighted average, but only over the signals that are active right now, renormalized so those weights sum to 1. Synergy needs at least one ally on the board. Counter needs a revealed enemy. Mastery needs your roster. On an empty board with first pick, only map win rate, role fit, and the model are live, and the score comes from those three alone — a missing signal is never quietly filled in with a neutral 0.5 that drags every candidate toward the middle.
Those weights are not vibes. They come from a held-out ablation built to be leakage-free — the net is retrained inside the test harness on the train split only, the empirical stats are built from train rows only and then scored on held-out rows, and per-mode estimates are cross-fit across five folds so they are not just noise. It has been run twice: June 2026 on about 40,000 matches, and August 2026 on 995,135.
The obvious intuition going in was that the weights should depend on context — counters ought to matter more in some modes, synergy in others. Both runs refuted that. Refitting the weights separately within each of the six ranked modes performed the same as one global set in every mode. Per-map or per-mode weighting would have added real complexity and bought nothing, so the weights stay global.
The more interesting finding is that the right blend *moved as the data grew* — and reversed. On the June run the empirical signals out-ranked a net trained on 40k matches, earning about 69% of a stacked model's weight. On the August rerun, the net retrained on the full dataset out-discriminated the entire empirical blend on its own (0.625 vs 0.608 AUC), and the stacker handed it 78% of the weight — a full reversal. The shipped weights followed: the model's share doubled from 0.20 to 0.40, funded by map (0.32 → 0.25) and synergy (0.15 → 0.05, its conditional coefficient is roughly zero in every mode once the other signals are present). The winning fixed blend scored 0.6262 held-out AUC against 0.6245 for the previous weights — beating them in 200 of 200 bootstrap resamples — and within 0.0005 of the 0.6267 ceiling a fully refit blend achieves.
The ablation also surfaced something more immediately useful to a player than any weight: how much the draft decides varies a lot by mode. Draft-based prediction was strongest in Heist and weakest in Knockout across both runs. Heist is heavily draft-decided; Knockout is mostly about how you play it. Treat that as a confidence dial on the whole tool rather than a reason to reweight anything.
The standing caveat: these weights chase the model's quality, so the suite gets re-run after major data growth — the June-to-August reversal is exactly why.
At Mythic and above, ranked uses the full reveal-and-counter draft: six bans, then a 1-2-2-1 snake where each team sees the other's picks as they land. Which means for most of the draft, the board is incomplete — and a model that can only judge finished 3v3s would have to guess at the missing slots.
This model doesn't guess. During training, every match is shown not only complete but also with random slots hidden — one pick known, two versus one, three versus two, every state a real snake passes through — with the hidden slots replaced by a learned "unknown" placeholder. So when it scores your candidate mid-draft, it is answering a question it was directly trained on: *across real ranked games where these exact brawlers were locked in, how often did that side end up winning?* The empty slots aren't filled with anything; their uncertainty is part of what the number means.
A useful consequence: early-draft model signals sit close to 50% and sharpen as picks land. That is honesty, not weakness — with one brawler on an empty board, nobody knows much, and the model says so. It also means blind-pick brackets (Diamond and below, where you never see the enemy team) need no special handling: your partial comp is scored against a fully unknown enemy, which is exactly the situation you are in.
Be clear about what this is not. The number is an average over how real opponents actually continued drafts — not a simulation of a perfect opponent finding your comp's sharpest counter. The match data also never records pick order, so the model cannot tell whether you or the enemy picks next from the same board. Reasoning about what you are exposing yourself to — "if I pick this now, what is their obvious answer?" — remains your job, and the guide's seat-position section covers how to do it.
Earlier versions offered a "Deep search" toggle that played out the remaining snake as a minimax against an optimally-countering enemy. It was retired when the model learned to read partial boards: the search ranked picks from a five-candidate shortlist chosen by a crude heuristic, ignored your roster and personal history entirely, and assumed perfect play from everyone — including your random solo-queue teammates. The always-on model signal prices in the rest of the draft from a million real games instead.
The meta pick is only useful if you own it and can play it. Enter your tag and mark which of your team's three picks is you (the "I'm pick" selector under Your team), and that pick — and only that pick — gains two account-specific signals and one hard filter. Your teammates' seats aren't restricted to your collection, because they aren't drafting from it.
The owned filter is the blunt one: candidates are restricted to brawlers you can actually field — ones on your account, plus this season's free "boosted" brawlers that Ranked hands everyone fully maxed. No more being told to first-pick something you do not have.
Mastery scores how invested you are in a brawler, and it is deliberately loadout-forward rather than power-forward. Ranked normalizes every brawler to power 11, so power level does not affect in-match strength at all — what you actually control is the loadout you can equip. The build score weights a star power at 0.30, a gadget at 0.20, gears at 0.20, and buffies at 0.30, and that is combined 60/40 with a comfort score from your highest trophies on the brawler, capped at 1,000. Power level is excluded on purpose: a maxed but under-built brawler is still under-built, and the suggestion list tells you which piece is missing.
Personal win rate is your own record with a brawler, pulled from matches in the dataset that your tag appears in, deduplicated and recency-weighted like everything else. Personal samples are tiny, so it uses a two-level back-off: your rate with a brawler on a specific map shrinks toward your rate with that brawler overall, which in turn shrinks toward the population's rate for that brawler on that map. Its weight also scales with its own confidence, so two games nudge the score gently and sixty games speak up.
Separately, knowing your tag lets the tool use rank-bracket stats. A match's bracket is the median ranked tier of its six players, and a separate stats table is built for any bracket with at least 300 matches, each shrinking back toward the global table wherever a cell is thin. Mythic drafts are not Bronze drafts, and where there is enough data to say so, the numbers reflect it.
Because the API never exposes bans, ban value cannot be learned from outcomes. It is inferred instead: threat is 0.85 times the brawler's map win rate plus 0.15 times how contested it is — its pick rate on that map, capped. In practice that reads as "deny the strongest brawler on this map," nudged upward for the ones people actually keep picking. It is the least data-backed part of the tool, and it is worth treating as a starting point rather than an instruction.
Composition warnings are rule-based checks over your team's classes: no frontline to contest space in Brawl Ball, Gem Grab or Hot Zone; no long range and therefore weak to poke and throwers; three of the same class; Heist without burst to crack the safe; the enemy running two Tanks with no Marksman on your side to shred them.
The post-draft game plan is also rule-based rather than learned, and that is a deliberate limit. The match data is draft-to-outcome only. It contains no positions, no rotations, no timings. Nothing in the dataset could teach a model how to actually play Hot Zone, so that advice is standard mode and role strategy, and it is presented as such instead of dressed up as a model output.
The limits deserve to be stated as plainly as the capabilities.
The draft is a slice, not the game. At the skill level this data comes from, both teams draft competently and the result is mostly decided by how the match is played. That caps how much any draft tool can possibly know — around 0.63 AUC here, and lower in modes like Knockout. A drafting edge is a small edge applied many times, not a win button.
There is no ban data anywhere, so ban recommendations are heuristic by necessity.
The population is skewed. The crawl is seeded from the top of the ladder, so the stats describe high-skill ranked play, mostly solo queue. Lower brackets play differently, and coordinated premades play differently again. Bracket-specific tables help where there is enough data; they do not erase the skew.
Balance changes create a lag. Recency weighting means the numbers start tracking a new patch quickly, but "quickly" still means after enough matches have been played and collected. Right after a balance change, treat the stats as trailing reality. Brand-new brawlers are the extreme case: with almost no games, the shrinkage correctly parks them near 50% until real data arrives — which reads as the tool being unimpressed when it is really just being honest about not knowing yet.
It does not see map geometry, your teammates' skill, or comms. It knows a map as an identifier with statistics attached, not as walls and lanes. Best-of-3 series context is not modeled either.
Brawl Draft is an unofficial fan project. It is not affiliated with, endorsed by, or sponsored by Supercell.