Resolvers and lag compensation in CS2, explained
May 4, 2026
Resolvers and lag compensation in CS2
"Resolver" is one of those HvH words that gets thrown around constantly without a clean definition. Here's the technical reality.
Lag compensation 101
When you fire a shot in CS2, your client says "I shot at tick 1234567 — at this moment the enemy was at coordinate X." The server rewinds the world to tick 1234567, checks if your bullet would have hit, and rules accordingly.
Source engine cvars:
sv_maxunlag(default 1.0s) — the maximum rewind window.sv_clockcorrection_msecs(default 60) — how aggressively the server snaps a desynced clock.sv_lagcompensation_strict— rejects rewinds that violate sanity (in CS2 only).
What a resolver does
An aimbot needs to fire at where the real body is, not where the visible body shows. With anti-aim, those don't match.
A resolver is the cheat's algorithm for guessing the real angle. Common signals:
- Animation phase — leg/torso animations don't lie about real movement direction.
- Velocity — players moving fast can't anti-aim freely; possible angles are constrained.
- Last known good shot — last hitbox we hit gives a real reference.
- Statistical history — over N shots, learn this player's jitter pattern.
A "perfect resolver" is impossible — the cheat has only the same network data the server has, and the server itself can't always tell where someone is shooting from.
How sub-tick changes the math
Pre-CS2 (CSGO), the server bucketed all inputs into 15.625 ms tick windows. A resolver had a clean discrete input to predict against.
CS2 sub-tick stamps inputs with microsecond precision. The server can now distinguish "fired at sub-tick 4" from "fired at sub-tick 11." This:
- Helps the server — it sees finer-grain jitter patterns.
- Hurts old resolvers — anti-aim that relied on tick-aligned jitter breaks.
- Breaks fake-flick — the choke-and-burst pattern is more visible across sub-ticks.
What admins can tune
For the cleanest HvH experience:
sv_maxunlag 0.5 // halve the rewind window
sv_clockcorrection_msecs 15 // strict clock correction
sv_unlag_fixstuck 1 // close stuck-extrapolation exploits
sv_unlag 1Don't go below sv_maxunlag 0.2 — legitimate high-ping players will get rejected.
What admins cannot fix
- Anti-aim itself. Visible-yaw decoupling from firing-yaw is allowed by the protocol; you can't ban it without rewriting CS2.
- Resolver accuracy. Server doesn't know what cheat the client uses.
- Hardware-level macros. A player using a hardware DT macro (very rare) can't be detected without VAC.
TL;DR
Lag comp = server rewinds time to validate shots. Resolver = cheat algorithm to guess real angle behind anti-aim. CS2 sub-tick adds microsecond input timestamps, which both improves server-side resolution and breaks older cheat techniques. Admins can tighten sv_maxunlag and sv_clockcorrection_msecs for cleaner play.