Pre-fire or prediction? The line we draw
Pre-aiming common angles is a coached skill; prefiring only when someone is actually there is a wallhack tell. The difference is selectivity.
Watch a good player and you’ll see them shoot at a doorway before anyone appears. Watch a wallhacker and you’ll see the same thing. On one round they’re identical, which is exactly why prefire trips up bad reviewers. The line between them is real, but it only shows up across rounds.
Pre-aiming is a skill: the most-taught one
Crosshair placement means putting your crosshair where a head will appear before you see it. Coaches formulate it as "aim is 80% positioning, 20% reaction," and it’s drilled on prefire maps at every skill level. Prefiring Inferno banana, Mirage window, or Dust2 long doors is expected behavior, not a red flag: those angles are pre-aimed because that’s where enemies usually are.
A legit player pre-aims the spot whether or not anyone’s there. That’s the tell that it’s a skill: it’s position-driven, and it repeats at the same map spots on empty rounds too.
The wallhack version is information-driven
Community demo-review consensus states it cleanly: prefire is suspicious when it’s selective. The player prefires a corner when an enemy is actually there and skips it when it’s empty. Add the other information-before-it-exists tells (crosshair tracking a hidden player through a wall or smoke, committing to a wallbang with no audio cue, never over-peeking a genuinely empty angle) and a picture forms.
Standard reviewer technique is to watch the raw first-person POV with X-ray on and ask a single question: does the crosshair trace enemies it cannot see? A skill traces the map. A cheat traces the enemy.
Suspect.gg looks at crosshair pre-aim error at first contact as one signal among several. Across our pool the median first-contact error is about 6.8°, and the cleanest 10% sit under ~3.9°. A low number alone is a great player’s crosshair placement. It only becomes interesting when it’s paired with information the player shouldn’t have, over a sample. That’s why it feeds a model, not a verdict.
