← All posts
7 min readscoring / transparency / technical

The CSWatch Trust Score: What the 0-100 Number Actually Means

Inside the reputation algorithm: how ban history, account legitimacy, community reports, and behavioral signals get weighted into one number, and why a score of 30 is a stronger signal than you'd think.

By CSWatch Team

Every CSWatch player profile carries a 0-100 trust score. The number is opaque on purpose — we don't want it gameable — but the inputs that drive it are not secret. Here's what goes into the score, how to read it, and why a 30 carries more signal than you'd guess.

What the score is

The trust score is a weighted aggregate of four independent signal categories: ban record, account legitimacy, community feedback, and behavioural anomalies. Each category produces its own sub-score from 0-100. The composite score is a weighted sum, with weights tuned monthly against ground-truth verdict data.

It is not a probability. A score of 30 doesn't mean "30% chance this player is a cheater." It means "players whose multi-signal profile resembles this one have, historically, been convicted at substantially higher rates than the base rate." Calibrating the score against an outcome distribution is a different statistical exercise, which we publish quarterly.

The four sub-scores

Ban record (weight: 35%)

VAC bans, game bans, and trade bans on the suspect's Steam account or any of their Steam friends' accounts. A VAC ban on the suspect drives this sub-score below 10 immediately. Game bans (which can come from FACEIT, ESEA, or other third-party platforms) drive it below 25.

Friend-network bans matter too, but with diminishing returns. A friend list with 1 VAC-banned account is meaningless. A list with 8 banned accounts when the player only has 14 friends is a strong cluster signal.

Account legitimacy (weight: 25%)

Steam account age, total game library, hours played in CS2 vs. other games, badge history, profile customisation, and inventory composition. A 5-year-old account with a diverse Steam library, organic badge collection, and a level 30+ profile is legitimate by every measure we track.

A 4-month-old account with only CS2 and a level-1 profile is not necessarily a cheater, but the signal is unfavourable. About 60% of accounts in this category that get reported turn out to be smurfs or cheaters.

Community feedback (weight: 25%)

Reports submitted to CSWatch, weighted by reporter reliability; verdicts from Overwatch reviews, weighted by reviewer accuracy and vote-weight; and external signals (Steam comment patterns, forum mentions, leetify-flagged stats).

A single low-confidence report from a low-reliability reporter moves this sub-score by less than a point. Three reports from high-reliability reporters or one conviction at 90%+ consensus moves it by 30+ points.

Behavioural anomalies (weight: 15%)

Statistical signals from match data: K/D outliers, headshot-percentage outliers, playtime vs. rank discrepancy, recent rating-gain shape. Each anomaly contributes a small adjustment. The category as a whole is noisy and gets the lowest weight.

We weight it low because behavioural signals are heavily correlated with skill, not just cheating. A genuinely top-tier player will trip several anomaly checks. The category contributes useful signal only when combined with weak ban-record and legitimacy scores.

Why a 30 is a stronger signal than you think

Player base distribution: about 78% of all looked-up profiles score 70+; 12% score 50-70; 7% score 30-50; 3% score below 30. The score is heavily right-skewed because most accounts are legitimate.

Of the players who score 30 or below, roughly 65% have either a VAC ban, a confirmed community conviction, or a friend network with high ban density. Those are not marginal cases — they're mostly people who have already been caught somewhere. A score of 30 isn't "suspicious". It's "evidence-supported bad reputation."

How to read scores in practice

  • 90-100: Clean record across all dimensions. Treat as high-confidence not-cheating, with the obvious caveat that anti-cheat is never omniscient.
  • 70-90: Normal range. Probably nothing to worry about, possibly minor signals worth noting on the player profile.
  • 50-70: Some concerning signal mixed with normal data. Worth looking at the profile detail before dismissing.
  • 30-50: Multiple signals are pointing the wrong way. Consider whether you want this player in your match.
  • 0-30: Strong negative signals. Most accounts in this band are banned, convicted, or both.

What the score is not

It's not a verdict. We don't use the trust score to convict players — convictions go through Overwatch review, with a 3-vote 66%-consensus threshold. The score is a triage tool that helps reviewers, watchlist users, and the public quickly understand what evidence already exists.

It's not permanent. Scores update continuously. A player who was convicted in 2024 but has played hundreds of clean matches since will see their behavioural anomaly score recover. The ban record sub-score doesn't recover (Valve's bans are permanent), but the composite can drift up over time.

It's not a guarantee. The scoring model is empirical: it reflects what we've observed. New cheating techniques (DMA hardware, AI vision) produce signals that weren't represented in our training data. We update the model when evidence accumulates, but there's always a lag between a new evasion and the score catching up to it.

Transparency commitments

We publish the model weights, the calibration plots, and the conviction-vs-score outcome distribution every quarter on the developer page. We also publish the accuracy of the score as a predictor of eventual community conviction. If you want to second-guess our methodology, all the inputs you'd need are public.

Disagreement with a score is welcome. Submit a report or appeal — the case will be reviewed and the score will update accordingly.

Spotted a cheater you want investigated?

Submit a report with a demo. Community Overwatch reviewers will judge it and the result becomes part of the public record.

Look up a player