Logo
CounterWatch

How Counterwatch calculates stats

Every community win rate, counter, synergy, and tier ranking on counterwatch.gg is derived from the same underlying dataset. This page spells out where that data comes from, how we turn it into rankings, and the one place the numbers can mislead if you read them wrong.

Where the data comes from

The Counterwatch app is a free Windows desktop application distributed via Overwolf. When a player installs it and plays Overwatch or Marvel Rivals, the app records the outcome of each match along with picks, role composition, map, and game mode. That data is sent to our servers on opt-in. Every community stat you see on the website is computed from those matches.

We do not scrape public APIs. We do not rely on user-submitted results. We do not estimate. The numbers are real match outcomes from real players who chose to share them.

Shrunk win rate in plain English

Every win rate on the site is shrunk, not raw. Shrinkage solves the small-sample problem: a hero with five matches at 100% win rate is not actually the strongest hero in the game, and naive ranking would crown them S-tier anyway.

Bayesian shrinkage fixes this. We blend each hero's raw win rate with a neutral 50% baseline, weighted by how many matches feed the sample. The formula:

shrunk = (rawWinRate × matches + 0.5 × 400) / (matches + 400)

The 400is a tuned prior weight. Think of it as 400 imaginary 50/50 matches we add to every hero's record before computing the win rate.

Worked examples:

  • 5 games at 100% raw shrinks to (5 × 1.0 + 400 × 0.5) / (5 + 400) = 50.6%. Basically the baseline. Fluke does not land S-tier.
  • 10,000 games at 55% raw shrinks to (10,000 × 0.55 + 400 × 0.5) / 10,400 = 54.8%. Barely moves. Real signal survives.

The result: a hero sitting at 60% across 15 matches reads identically to a hero at 50.7% once shrinkage runs. If you want to rank S-tier, you need both a strong raw win rate and enough community data to trust it.

Sample thresholds and filters

Every hero row on the tier list is computed across the matches that matched your filters: game (Overwatch or Marvel Rivals), mode (5V5, 6V6, Stadium, or Marvel Rivals Standard), game type (Ranked, Unranked, Stadium Ranked, Stadium Unranked, Competitive, Quick Match), and rank division (Bronze through Champion on OW, Bronze through Eternity on MR).

The tier list's minimum match threshold for display is deliberately low, so we show every hero even when their sample is thin. The shrinkage prior takes care of the “what if a rare hero looks 80% on 10 games” problem by pulling them close to 50% until they've played enough. Every hero's detail page shows the underlying match count so you can tell at a glance whether a placement is confident (tens of thousands of matches) or provisional (a few hundred).

For surfaces that rank specific matchups — the Hardest/Easiest matchup cards, Strongest Duos card, and ban suggestions — we drop counter and synergy rows below 200 matches entirely. Below that floor the displayed number is mostly the 50% prior, and a row that's “too noisy to ban” shouldn't claim a top-5 slot in the matchup card either. When a card runs short on qualifying rows it shows fewer items rather than backfilling.

On the matchup cards, when shrinkage has meaningfully pulled a row toward 50% (a sample-thin matchup), a faint colored tick shows the raw win rate position behind the displayed bar. On high-confidence rows the marker disappears under the bar; when it's visible, the displayed number is mostly prior, not observed. The tooltip on the bar reads “Raw X% pulled to Y% based on N matches.”

Top duos vs kit synergies

The Strongest Duos card on every hero detail page has two views. Default is “Top duos”, which ranks pairings by absolute combined win rate — the answer to “who's strong right now alongside this hero.” That number bakes in both heroes' individual meta strength, which is usually what you want.

The “Best kit synergies” toggle subtracts each hero's individual edge from the pair's win rate. If two 55% heroes show a 60% pair WR, that's exactly what each hero's individual edge predicted — zero kit synergy. A 62% pair from the same two heroes is a real +2pp lift over baseline, signal that their kits actually combo. Numbers shown are deltas: +X.Y% or−X.Y% over expected.

We don't use this transform anywhere a win-chance prediction comes out, because meta strength is genuine signal for who's going to win the actual match. Use Top duos to ask “who do I want on my team this patch?”, Best kit synergies to ask “whose abilities actually combo with this hero independent of the meta?”

Refresh cadence

The website's community aggregates refresh daily, once per early-UTC morning. Today's tier list reflects yesterday's matches.

The in-game overlay in the Counterwatch app is live. It reads the current match state as it happens and surfaces swap suggestions in real time. The website's aggregate numbers and the overlay's live state are two different things. When copy on the site says “live”, we mean the overlay; when it says “daily”, we mean the website.

Historical data and the sparsity caveat

Counterwatch has around a year of tracked matches, and our tracked daily active user count has grown roughly five times over that period. That means raw pickrates from earlier in the year come from a smaller tracked population than today's pickrates. Cross-season pickrate deltas are therefore directional, not precise. Read the trend direction, not the magnitude.

Shrinkage auto-compensates for small samples: smaller populations get pulled toward the 50% baseline more aggressively. So current-season win rates remain trustworthy regardless of DAU growth. Only cross-period pickrate comparisons carry the caveat. The 6-month trend on the most-played maps page is the most visible place this shows up.

What we don't do

  • No curated opinions. No “our tier list experts ranked these heroes.” Every placement is computed from match data.
  • No scraped data. The numbers are real match outcomes from opted-in Counterwatch app users, not estimates, not pulled from a third-party API.
  • No per-player ratings. This site ranks heroes, maps, and compositions. If you want to look up your own matches or a friend's profile, you need a profile-lookup tool, which is not what we do.
  • No predictions about individual skill. A hero's win rate is the community average. Your win rate on that hero is a different number and it always matters more.

Try it for yourself

The easiest way to see the methodology in action is to browse the live data: