how trust scoring works
spawnhub builds a statistical trust profile from match demos — not from reports or gut feeling. every signal below is computed from raw game events inside your synced valve demos and faceit replays. this page documents exactly what we measure and what we flag.
what we measure
| metric | definition |
|---|
| rating | hltv 2.0-style rating from kpr/dpr/impact/kast/adr |
| adr | average damage dealt per round (friendly fire excluded) |
| multi-kills | rounds with 2/3/4/5 frags |
| round winners | per-round winner + win reason from round_end |
| kast | % of rounds with a kill, assist, survival, or trade |
| time to kill | first shot of the fatal spray → kill; misses before the first hit count |
| time to damage | freeze end → first damage dealt, per round |
| accuracy | hit events / shots fired (guns only) |
| utility dmg | damage from HE, molotov/incendiary, flash assists |
| flashes | enemies vs teammates blinded, avg blind duration |
| opening duels | first kill of each round — participation + wins |
| trades | kills within 6s of a teammate dying to that player |
| smoke kills | frags through smoke (thrusmoke flag in demo) |
| blind kills | frags while the attacker was flashed |
| aim error | degrees between crosshair and victim head when a shot lands |
| pre-aim error | same error ~125ms before the shot — was the crosshair already on target (placement) or did it snap? |
| moving fights | % of engagements opened while moving >120 u/s — counter-strafe proxy |
| utility thrown | flashes / smokes / HEs / molotovs thrown (weapon_fire events) |
signals we flag
signals only appear when the stat holds across multiple matches — one lucky game never flags anyone.
| signal | threshold | why |
|---|
| inhuman time-to-kill | avg ttk < 300ms over 3+ matches | ttk counts from the first shot of the spray — legit aimers sit ~450-800ms; sustained sub-300ms means every bullet connects |
| abnormally high accuracy | hit rate > 42% over 3+ matches | pro-level is ~30-35%; 40%+ sustained is statistically rare |
| extreme headshot rate | hs% > 75% lifetime | possible legit, but consistent >75% warrants a look |
| low hours, veteran damage | <100h played + adr > 90 | new accounts performing like veterans — smurf or worse |
| repeated kills through smoke | ≥1 thrusmoke kill per match sustained | occasional spam kills happen; a pattern is suspicious |
| robotic aim precision | hit-time error < 1.5° AND pre-aim error < 4° over 3+ matches | humans flick — high pre-aim error shrinking at impact; aimbots stay locked at both moments |
| hits shots while running | >40% of fights opened while moving fast, over 3+ matches | accurate shooting needs a full stop — sustained running hits mean silent-aim or no movement penalty |
what counts as legit
| metric | typical range | elite range |
|---|
| ttk | 400–800ms per kill (spray duration) | <350ms avg is unusual |
| time to damage | 15–30s from freeze end | entries <12s, anchors 40s+ |
| accuracy | 15–30% | 30–40% |
| adr | 65–85 | 90+ |
| kast | 65–75% | 78%+ |
| hs% | 35–55% | 60%+ (scrims) |
| aim error (at hit) | 2–5° | sustained <1.5° is suspicious, not elite |
| pre-aim error | 5–15° | sustained <4° is suspicious |
| moving fights | <15% | disciplined players stay low — >40% flags |
the 0–100 score
profiles start at 100 and each flagged signal deducts a weighted amount. the verdict band is what you see on the stat strip.
| signal | weight |
|---|
| cs2 game ban on record | −65 (always verdict: cheater) |
| vac ban on record | −40 |
| inhuman time-to-kill | −40 |
| abnormally high accuracy | −20 |
| extreme headshot rate | −15 |
| low hours, veteran damage | −15 |
| repeated kills through smoke | −10 |
| frequent kills while blind | −10 |
| robotic aim precision | −25 |
| hits shots while running | −10 |
| consistent impact (kast ≥70) | +5 |
| score | verdict |
|---|
| 70–100 | legit |
| 35–69 | suspicious |
| 0–34 | cheater |
| no score | unknown — fewer than 3 analyzed matches and no bans on record |
statistical deductions only apply when at least 3 demos (2 for smoke/blind patterns) have been analyzed — a single game can't flag anyone. ban deductions come from valve's own records, not our analysis.
limitations
- valve deletes demos after ~30 days — stats only cover recently synced matches, not a lifetime.
- private steam profiles still work: comments + any synced/resolved match data we have, but valve-side lifetime stats are hidden.
- sub-tick demos sample at 64 tick — timing metrics are accurate to ~16ms.
- signals are statistical heuristics, not bans — a flag means "worth a second look", not "cheater".