A 150-millisecond gap between your crosshair snapping red and the server agreeing the shot landed lies at the heart of most failed kills in shooters. Your client fires a packet claiming a hit at a position and a timestamp, and the server re-checks that claim against its own world state, hitboxes, and clock before damage applies. That round trip is why a dead-center crosshair can still produce zero damage, and it is the mechanic behind nearly every “I clearly hit them” complaint in competitive shooters.
This article breaks down how hit registration actually works under the hood, from server authority and tick rate to lag compensation and the quirks that separate hitscan from projectile weapons when the network gets noisy.
Hit Registration Is a Server Verdict, Not a Screen Moment
A hit register happens only when the server agrees with your claim. The instant you click, your client sends a packet that says you hit a specific target at a specific position at a specific time, and the server checks that packet against its own version of the world. Damage lands only when the two views line up, which is why a perfect crosshair placement can still produce zero damage on your end. Your screen showed a connect, but the server’s world looked different at that millisecond.
Server-side authority exists because trusting your own report would be an open door to cheating. A modified client could simply claim every bullet connected, so Counter-Strike, Valorant, and Call of Duty all run authoritative servers that re-validate every shot. The hit marker you see on your monitor is essentially a prediction, and the server holds the final say.
Client-Side Prediction and Server Reconciliation
To keep gameplay feeling responsive, your client renders the result of your shot before the server replies. That shortcut is client-side prediction, and it is why hit markers appear instantly instead of after a 50 to 100 ms delay. Behind the curtain, the server is reconciling your prediction against reality, and when reality disagrees, the game rewinds your position, undoes the hit, and shows you the corrected version. That mismatch is the engine behind your “you clearly hit them” feeling, because your screen lied for a few frames to keep the action smooth.
Higher tick rates shrink that lie, giving the server a denser stream of positions to judge your shot against.
Tick Rate Sets the Resolution at Which Shots Are Judged
A server tick is one full world update, and that update is when hitboxes get evaluated. A 64-tick server checks shot positions 64 times per second, a 128-tick server checks them 128 times, and each additional tick shrinks the window where your bullet can land during a gap. Competitive shooters market their tick rate aggressively because it directly controls how forgiving the system is to strafing targets and tight duels. Valorant runs on 128-tick servers by default, which is a major reason its hit feel draws praise, while Counter-Strike 2’s sub-tick system sidesteps the traditional tick debate by timestamping your shot at the exact moment you fired rather than snapping it to the nearest tick.
Interpolation and Estimated Positions
Between server updates, your client guesses where other players are. That guessing process is called interpolation, and it uses older position data to estimate where an opponent should be right now. The longer the gap between server ticks, the further your client’s guess can drift from reality, which is one of the hidden reasons hit reg problems in shooters feel random. The server may be checking against a slightly outdated version of where your target was, not where they stood at the millisecond you pulled the trigger.
| Tick Rate | Updates Per Second | Typical Use | Hit Reg Implication |
|---|---|---|---|
| 64 Hz | 64 | Casual and older servers | Larger timing windows, more interpolation guesswork |
| 128 Hz | 128 | Competitive Valorant, many ranked modes | Tighter resolution, fewer off-tick misses |
| Sub-tick | Per-shot timestamping | Counter-Strike 2 | Removes tick snapping, validates your exact input time |
Network Conditions Introduce Real-Time Error Into Every Shot
Even on a perfectly tuned server, your own connection can corrupt the data before it arrives. Higher latency widens the time window where your client’s view of the world and the server’s view disagree, which is precisely the window the server uses to decide if you hit. A 20 ms player dueling a 120 ms player is fighting with two different versions of reality, and the server’s lag compensation has to bridge that gap, sometimes imperfectly.
Packet loss is a more violent problem. Once you cross roughly 1 to 2 percent loss, the UDP packets carrying your shot and your position updates start arriving damaged, late, or out of order. The server may receive your movement from tick 64, your shot from tick 62, and your enemy’s position from tick 63, then try to assemble a coherent hit check from a shuffled deck. Shots that should have landed simply never connect because the data they depended on was incomplete.
Jitter, Lag Spikes, and Sustained High Ping
These three network conditions get confused constantly, but they corrupt your hit data in different ways. Sustained high ping means every action takes longer to register, and lag compensation has to rewind further to make shots feel fair. Jitter means your ping bounces around unpredictably, so the amount of rewind changes from shot to shot, producing wildly inconsistent hit feel. A lag spike is a sudden, severe disruption, often a multi-second stall, where a stream of your inputs arrives at once and the server has to discard or reconcile a backlog of contradictory claims. Each one can produce your “why are my shots not registering in FPS” moments, even when your average connection looks fine.
Those averages hide sudden spikes, which is exactly when peeker’s advantage and lag compensation start bending the rules in one player’s favor.
Quick ping tests only show your average. Run a 5-minute packet loss and jitter test through PingPlotter or WinMTR before blaming the game for your misses.
Lag Compensation and Peeker’s Advantage Reshape Who Sees What First
Lag compensation is the server rewinding time to give every player a fair shot, based on the latency they reported when they fired. If you carry 80 ms of ping, the server rewinds the world by 80 ms before checking your bullet against enemy positions, and that generous system is the reason someone with mediocre internet can still win duels against a fiber-connected opponent. The trade-off is that what you see and what the server judges are now two slightly different timelines.
Peeker’s advantage is the most direct consequence of that split timeline. The player leaning out of cover sees the defender first because their “now” has not yet reached the defender’s screen, so they get the first shot, often the only shot, while the defender fires at a version of the enemy that does not visually exist yet. The result is a flood of “I shot him first” complaints from your defending side, which is exactly the kind of trade-off that defines lag compensation hit registration in practice.
Why No Developer Has Fully Solved It
Every shooter has to pick a side in this trade-off. Favor the shooter, and peeking becomes deadly while defending feels hopeless. Favor the defender, and aggressive play dies out because attackers can never land first. Riot Games, Valve, and Activision Blizzard each nudge these knobs differently, but none has eliminated the underlying tension. Hit registration fairness is a tuning problem, not a solvable bug, and your only leverage is understanding which side the current patch favors.
Hitscan and Projectile Weapons Behave Very Differently Under Network Stress
Hitscan weapons are the simple case. When you fire, the game instantly traces a ray from your gun to the target, and if the ray intersects a hitbox at the moment the server checks, damage applies. Projectile weapons like rockets, grenades, and arrows have to travel across the map over time, and that travel time exposes every millisecond of desync between your client and the server. A rocket that looks like it will land on target in your client may be evaluated against a server-side world that has already moved the target two feet to the left.
Projectile weapons in games built on engines like Unreal Engine often feel inconsistent at your higher pings, while hitscan weapons feel fine until you watch the killcam. The killcam is your moment of truth, because it shows the server’s reconstructed view of your shot, which is often 50 to 100 ms older than what you saw on your screen.
Why “Clean” Shots Get Rejected
Client-side prediction can desync from the server in a specific and frustrating way. Your client shows your bullet hitting a stationary target, because on your screen, at your time, it did. The server is running on a slightly delayed clock, and at that delayed time, the target had already stepped behind a wall, so the shot is rejected as a wallbang that did not exist. From your perspective it looked like a clean shot, and from the server’s perspective you shot a wall.
The same physics gap is what your own setup has to diagnose, because weapon type shapes every workaround you try next.
| Weapon Type | Network Stress Visibility | Common Symptom | Underlying Cause |
|---|---|---|---|
| Hitscan (rifles, pistols) | Hides desync until killcam review | “I hit them but no damage” | Server-side rewind evaluated against a different tick |
| Projectile (rockets, grenades) | Exposes desync immediately | Explosions landing behind moving targets | Travel time interacts with delayed position data |
| Hitscan with high ping | Visible in both killcam and damage numbers | Damage numbers flicker or never appear | Rewind window exceeds the server’s tolerance |
Diagnosing and Reducing Hit Registration Problems in Your Own Setup
Your hit reg experience splits cleanly into two halves: what you control and what only the developer can fix. On your player side, you can stabilize your connection, choose better servers, and read the game’s feedback to identify the cause. On the developer side, you depend on tick rate, lag compensation tuning, and the engine’s netcode. Knowing which side of that line your problem lives on saves you from chasing fixes that cannot help.
Quick Wins You Can Apply Tonight
- Switch to a wired connection. Wi-Fi introduces jitter and packet loss that hit registration cannot tolerate, even with strong signal strength on your end.
- Close bandwidth-hungry apps. Streaming, cloud sync, and game launchers competing for upload bandwidth can spike your ping mid-duel.
- Pick the closest server. Every 30 ms of extra ping widens the lag compensation window, and that window is where most of your invisible misses live.
- Test before blaming the game. Run a 5-minute packet loss test during your usual playtime, not just once.
Reading What the Game Is Telling You
The killcam, damage numbers, and hit markers are diagnostic tools, not just feedback. A hit marker with no kill and no damage number often means the server registered a hit but rolled a damage value of zero, which usually points to a hitbox edge case. A killcam that shows your crosshair clearly off-target means the server’s rewind disagreed with your screen view, which is a network or tick rate issue. A hit marker that never appears at all typically means the shot never reached the server or was rejected before the hit check, and each of those signals points you to a different fix.
What Only Developers Can Fix
Some hit registration problems are baked into the game’s design. Source Engine netcode behaves differently from Unreal Engine netcode, and Valorant’s 128-tick servers are a deliberate Riot Games investment, not something you can replicate at home. If a specific weapon, a specific map, or a specific game mode consistently produces misses that match the killcam, the issue is server-side and tuning-based. Your only realistic move in that situation is to report it with timestamps, switch modes if available, or wait for a patch.
Heads up: no amount of hardware upgrades will fix server-side desync. If your killcams consistently show your shots missing the targets they hit on your screen, the bottleneck is the game’s netcode, not your setup.
Bottom Line
Hit registration is a server’s judgment call, evaluated on its own clock against its own version of the world, and any gap between that judgment and what you see is where misses hide. Tick rate sets the resolution, your network sets the noise floor, lag compensation rewinds time to keep things fair, and weapon type decides how visibly that rewinding breaks under pressure. Knowing which of those layers is failing in any given duel is the difference between blaming the game and actually fixing your problem.
FAQ
What causes hit registration issues in FPS games?
Server ticks firing every 16.67 milliseconds at 64Hz, plus your 80ms of latency, plus 2% packet loss, plus lag compensation rewinding the world by different amounts for each player, combine to produce a shot the game refuses to count. Most of your “I clearly hit them” moments are mismatches between your client’s view and the server’s validated view of the same instant.
Does tick rate actually affect hit registration?
Yes. A 64-tick server checks hitboxes every 15.6 ms, while a 128-tick server checks every 7.8 ms, so faster-moving targets have smaller windows to slip through. Games running at higher tick rates, like Valorant’s 128-tick servers, produce noticeably fewer off-tick misses for you than lower-rate alternatives.
How does lag compensation work in FPS games?
Lag compensation rewinds the world state by the shooter’s reported latency before evaluating the hit, so the shot is judged as if latency did not exist. The system is generous but creates peeker’s advantage, where attackers see defenders before defenders appear on the attacker’s screen, and that asymmetry is the most common source of your “unfair” feel.
What is the difference between server-side and client-side hit detection?
Your own machine reports whether a shot connected in client-side detection, trading any chance of catching wallhacks for a split-second of perceived responsiveness. Server-side hit detection, used by Counter-Strike, Valorant, and Call of Duty, makes the server the authority and re-validates every shot, trading a small amount of your perceived responsiveness for cheat resistance and fairness.
How do you fix hit reg issues in competitive FPS?
Start by stabilizing your own network: use a wired connection, choose the closest server, and verify your packet loss stays under 1 percent. If killcams consistently show your shots missing the targets you hit on your screen, the problem is server-side netcode tuning, and only a patch or a server upgrade from the developer can resolve it.
Why are my bullets not registering in shooters?
Your bullets may fail to register because the server’s world state has already moved the target out of your hitbox by the time the server checks your shot. Packet loss above 1 to 2 percent, jitter above 5 ms, and lag compensation rewind windows that exceed the server’s tolerance all push your shots into the rejection pile. The killcam tells you which one is responsible.



