Statistics methodology
How MercStats calculates HotS statistics
Last updated 30 October 2026
Which games do we count?
Players contribute completed .StormReplay files through the website or optional Companion uploads. A processed replay supplies data for all players in that match. Duplicate detection keeps the same match from counting twice.
We maintain our own replay collection. It is still small, and it is not a random sample of everyone playing HotS. Regions, ranks, heroes and groups whose players upload more often can be overrepresented. A match uploaded to another site does not automatically reach us.
Check the filters on the page before comparing numbers. Hero statistics default to Storm League and all ratings; the selected game build and game mode change the sample. A page can only offer builds present in our collection. “Latest” means the latest build available in that data, which may lag a new game patch.
Default hero talent, build and statistics-guide samples are shared snapshots, refreshed on requests after one minute. If a refresh fails, the last successful sample can remain visible for up to six hours, with its original retrieval time and an explicit out-of-date notice. Without a usable snapshot, the page reports unavailable data. The retrieval time is not the date of the latest match.
Accepted uploads can still be queued. Statistics appear after processing and may be cached, while rating snapshots have their own refresh cycle. A missing result means no usable observations for that selection, rather than a measured zero or proof of weakness.
Hero win rate, pick rate and ban rate
- Win rate = hero wins ÷ hero appearances × 100.
- Pick rate = hero appearances ÷ all hero picks in the selected sample × 100. This is a share of hero picks; it is not the percentage of matches containing that hero. Popularity uses this same measure.
- Ban rate = bans of that hero ÷ draft matches with recorded bans × 100.
- Per-game averages divide the recorded total by games in the selected sample. They describe outcomes, not the cause of a win.
Displayed percentages are rounded, usually to one decimal place. A change from 50% to 55% is five percentage points. Patch comparisons use percentage points for win rates and relative percentage changes for per-game averages.
Talent choices and complete build paths use different samples
A talent’s win rate is wins with that selection divided by games with that selection. Its pick rate divides its games by the recognized talent choices at the same level. A talent’s win-rate difference compares it with the hero’s overall win rate in the same filtered sample, in percentage points.
Not every hero appearance supplies a recognized choice at every level. The hero game count and the talent tier’s game count can therefore differ. Read the count for the talent you are comparing.
Talent confidence labels mean fewer than 10 games (low), 10–49 (medium), or at least 50 (high). These are sample-size labels, not statistical confidence intervals. A talent needs at least 10 games to qualify for the highest-win-rate highlight; passing that threshold does not prove it is the best choice.
Complete replay builds group the exact talent path across the required levels, usually 1, 4, 7, 10, 13, 16 and 20. Their play rate uses complete recognized paths as its denominator. Games that end before the final choices are available can be underrepresented. The hero baseline still includes all hero appearances in that selection.
Combining the highest-win-rate talent from each level does not establish a win rate for that combined build. Published build recommendations are separate guidance, with source references on the build pages.
Statistics guides for every hero apply these checks to each hero’s available talent sample.
Worked example: why Valeera’s 100% talent win rate is only two wins.
Matchups show associations in the observed games
Matchup win rates use the featured hero’s result when the opposing hero was on the other team. The difference compares that win rate with the featured hero’s overall win rate under the same filters. Ambiguous mirrors, duplicate hero entries and unclear team outcomes are excluded.
Featured counters require at least 20 games for the featured hero and five games for the pair, with a featured-hero win rate below 50% against that opponent. We order qualifying opponents using the lower Wilson bound of the opponent’s win rate (z = 1.96), and show up to three. This favors evidence with more support over a raw percentage alone.
These are observational results, not controlled one-on-one tests. Drafts, teammates, player skill and match conditions can explain part of the difference. A recorded ban alongside an opposing hero does not tell us which player or strategy the ban targeted.
Replay tiers and editorial map guidance
The hero replay tier score starts with an adjusted win rate: 100 × (wins + 10) ÷ (games + 20). This adds a prior of 20 games at 50% so a tiny sample moves less sharply. A conservative ban-rate estimate adds a bonus at 0.1 points per percentage point, capped at five points.
Score boundaries are 60 for S+, 56 for S, 52 for A, 48 for B and 45 for C; lower scores are D. S+, S and A also require adjusted win rates of at least 55%, 52% and 50%. S+ is capped at five heroes and S at ten. Zero-game heroes are Unrated. The current hero tier policy does not enforce a minimum game count, so a tier can still rest on limited evidence.
Map replay hero tiers require at least 10 games, and replay draft suggestions require three. Editorial map tiers are separate guidance based on a baseline and map-specific adjustments; they are not measured win-rate rankings. Check which kind of guidance you are reading.
What MercStats Rating measures
MercStats Rating is our replay-based estimate for Storm League, separate from Blizzard rank or MMR. The current model is Weng–Lin Bradley–Terry, version mercstats-weng-lin-v1. It updates from team results, without using KDA, hero, role or account level as performance bonuses.
Players start at 1500 with uncertainty of 500 on the display scale. The displayed ± value represents model uncertainty, not an official rank range. Ratings remain provisional until 10 eligible games. Comparison positions and percentiles require at least 100 established players in the connected comparison pool and order players by rating minus three times uncertainty.
Eligible games are parsed, deduplicated Storm League matches with 10 distinct player identities, clear five-player teams and an unambiguous winner. Matches with AI or observer markers, missing identities or invalid teams are excluded. Replays are processed chronologically; uploading an old replay does not make it a new game.
Snapshots use an explicit region and UTC date window, up to 366 days. The automatic production window follows the UTC calendar year, not an official Blizzard season. A window with more than 20,000 source replay rows is withheld rather than publishing a partial rating. Incomplete upload coverage affects the estimate and its comparison pool.
Rating snapshots are scheduled for hourly refresh where configured. A snapshot older than 48 hours is marked stale. Rating filters on hero and map statistics use the rounded average rating of all 10 players in a fully rated replay, within the applicable region and date window; they do not represent official league brackets.
Use the numbers alongside the eye-test
Stats can point to a question worth checking in a replay. They cannot fully explain whether a talent solved the problem in your draft, whether a play created space, or whether your team could follow up. The eye-test matters too, especially when a sample is small or a useful decision does not show up clearly in the final numbers.
Compare the same patch and filters, read the game counts, then review the game context. Our Valeera sample walkthrough puts those checks into practice.
This methodology is maintained by MercStats and reviewed against the implementation. For a suspected mismatch or an unclear definition, tell us on Discord. For differences between providers, see why HotS stats sites disagree.