CS2 sub-tick is breaking some HvH cheats — here is why
May 4, 2026
CS2 sub-tick is breaking some HvH cheats — here is why
CS2 launched in October 2023 with a system Valve called "sub-tick." For most players it meant smoother shooting. For HvH it broke half the cheat ecosystem. Here's the technical reason.
How CSGO worked (tick model)
CSGO ran on 64-tick dedicated servers (or 128-tick on FaceIt). Every 15.625 ms (or 7.8 ms), the server processed all client inputs that had arrived since the last tick.
Inputs were bucketed: if you fired at "real time" 12.5 ms past the last tick, your shot was processed at the next tick boundary, not at 12.5 ms. Effectively, all clients had quantized input timing aligned to tick boundaries.
This was great for HvH cheats because:
- Anti-aim could synchronize jitter with tick boundaries (predictable obfuscation).
- DT could exploit lag-comp by replaying inputs into adjacent tick windows.
- Resolvers had clean discrete data to predict.
What CS2 changed
CS2's sub-tick system stamps every input with microsecond-precision timing. The server still ticks at 64 Hz, but input processing is deeply temporal — a shot at +5 ms vs +12 ms within the same tick are different events server-side.
What broke
Fake-flick anti-aim
Pre-CS2: choke 14 ticks of input, burst them. Server saw a sudden orientation jump and resolved against the wrong frame.
CS2: sub-tick exposes the choke pattern. Inputs that are "burst" still carry their original timestamps. The server can see "all 14 inputs arrived in the last 5 ms" and reject as suspicious or smooth them differently.
Many fake-flick implementations broke instantly. Took cheat devs 6+ months to rebuild around micro-choke (1-3 sub-tick units).
Backup tick exploit (DT)
Pre-CS2: send a fire command targeted at the previous tick window. Server replays the world state at that tick, fires the bullet from the rewound position.
CS2: backup-tick targeting now requires sub-tick-accurate timestamps. Cheats that hardcoded "previous tick = -15.625ms" ended up firing into the void or rejected by the server's clock-correction.
NoDT plugins benefited most — DT became inherently harder to weaponize.
Tick-aligned jitter anti-aim
Pre-CS2: yaw toggles every tick (15.625 ms cycle). Resolvers learn the pattern; anti-aim loses.
CS2: sub-tick gives the resolver finer time slices. Toggling at tick boundaries is now a HUGE signal — resolvers detect "yaw flip exactly on tick boundary" trivially.
Cheat devs moved to sub-tick jitter (yaw flips at sub-tick offsets), which works but requires more tuning.
What still works
- Static anti-aim — visual yaw offset is unchanged; works fine.
- Velocity-based anti-aim — random yaw based on movement speed. Sub-tick doesn't expose new info here.
- Body yaw / fake yaw — independent of input timing, still functional.
- Aimbot core (legit + rage) — sub-tick actually helps clean aimbots; they get more accurate hitbox data.
What admins should know
For HvH server admins: don't tune aggressively against sub-tick. The server is doing the work for you. Default sv_clockcorrection_msecs 60 is fine; lowering it past 15 starts rejecting legitimate high-ping players.
For HvH players: if your cheat broke after a CS2 patch, it's almost certainly a sub-tick refactor. Wait 1-3 days; the dev usually catches up.
TL;DR
CS2 sub-tick adds microsecond input timestamps. This broke fake-flick anti-aim, DT exploits, and tick-aligned jitter. Static anti-aim, body yaw, and velocity-based anti-aim still work. Cheat devs spent ~6 months rebuilding around the new model. The cat-and-mouse continues, but the cat got a precision-timing upgrade.