30 days of Premium free
不滅Fumetsu

How to Reduce CS2 Input Lag: Mouse, Polling and Latency

LAST UPDATED 5 MIN READINPUT

"Input lag" is the delay between moving the mouse and the shot landing on screen. It is a chain, not a single setting, and every link adds a few milliseconds. You cannot feel a millisecond in isolation, but you feel the sum — and you feel variance in it more than the average.

The goal is a short, steady path. A consistent 12 ms beats a path that averages 9 ms but spikes to 25 when the CPU is busy. Here is each link and what to do about it.

01

The latency chain, end to end

From hand to screen the signal passes through: the mouse sensor, the polling interval that reports it, the USB stack, Windows input handling, the game reading input, the CPU building a frame, the GPU rendering it, the present queue, and finally the monitor drawing it. Aim tuning touches the links you control without new hardware — most of them are software.

Two ideas do most of the work. First, remove buffers that hold a frame "just in case". Second, keep the pipeline from running so far ahead of the display that finished frames sit waiting. Reflex and a correct fps cap are the two levers for the second idea; the rest is removing buffers.

02

Mouse: polling, report rate, sensor

Polling Rate
1000 Hz is the safe default (a report every 1 ms). 2000–8000 Hz shaves fractions of a millisecond but only if the CPU has headroom; on a busy CPU the extra reports cost more than they save.
Report Regularity
Matters more than the headline number. A 1000 Hz mouse that delivers reports in bursts feels worse than one that delivers them evenly. This is what the Input Optimizer module targets — even spacing, not a bigger number.
Sensor / DPI
Use a native DPI step (400–1600 on most sensors), not an interpolated one. Interpolated DPI adds jitter the sensor then has to smooth.
Lift-off Distance
As low as the sensor holds without cutting out. High LOD moves the crosshair when you reset the mouse.

Turn off vendor "angle snapping", "prediction" and any acceleration in the mouse software. They rewrite your motion after the fact, which is latency spent to make you less accurate.

03

In-engine: raw input, Reflex, the cap

Raw Input
m_rawinput 1. Takes the mouse signal straight from the device and bypasses the Windows pointer pipeline and its acceleration curve entirely.
NVIDIA Reflex
On. It paces the CPU so it does not queue frames ahead of the GPU, which is the single biggest latency win in the menu. Leave the driver's Low Latency Mode off when Reflex is on.
fps_max
A cap your machine holds through a smoke. Uncapped frames sound faster but push the render queue full and add latency at the tail. See the monitor guide for where to place the cap relative to refresh.
V-Sync
Off, unless you are on a variable-refresh panel and pairing it with a sub-refresh cap. Traditional V-Sync adds up to a full frame of latency.
04

Windows pointer and USB power

Pointer Precision
"Enhance pointer precision" off. It is mouse acceleration under a friendlier name. With raw input on it is bypassed in-game anyway, but off is off.
USB Selective Suspend
Off for the input controller, so the port never sleeps the mouse and wakes it with a stall. The Input Optimizer sets this per-port rather than globally.
Timer / Scheduling
A busy background load steals the scheduler slots the input thread needs; the delay shows up as occasional spikes, not a steady offset. Quiet the background — see the stutter guide.
05

Measuring instead of guessing

Every change here is small, and small changes are exactly where people fool themselves. Do not judge by feel after flipping five settings at once. Change one thing, then measure: NVIDIA's FrameView or the Reflex latency readout, an LDAT-style tool if you have one, or at minimum a high-speed phone camera pointed at the screen and the mouse LED.

Fumetsu's Input Optimizer reports the distribution — median and the tail — rather than a single feel-good number, because the tail is what you notice. It works outside the game: it sets the polling interval, report buffer, USB power and pointer curve, reads them back, and reverts them in one step. Builds and setup threads are on Discord.