Latency test

Measure how fast and how consistently your controller actually reports (its real rate, its jitter, and any dropped inputs), right in your browser. No install, no signup, and no limit on how much you test.

No controller detected. Press any button to connect

How does the test work?

There are two modes, and they measure genuinely different things. It's worth knowing which is which, because most "controller latency" tools online quietly conflate them.

1. Report rate & link health: a real measurement

This times the gap between successive reports coming out of your controller. No human is involved, so there's no reaction time to subtract: it's pure hardware and link quality. You get the actual reporting rate in Hz, the jitter (how much that interval wobbles), and a count of likely dropped reports.

If you grant access via WebHID, this is exact. WebHID is event-driven, delivering one event per real HID report. Without it we fall back to the Gamepad API, which the browser re-samples on its own schedule; that reading is capped by the browser's rate rather than your controller's, and the tool labels it as approximate rather than pretending otherwise.

Keep the controller busy while measuring

Hold a button or move a stick. Many pads stop sending reports entirely when nothing changes. With an idle controller there is simply nothing to time.

2. Reaction comparison: a comparison, not a measurement

Press the button when the box turns green. Your absolute number here is mostly your own reaction time (150–250 ms is normal), not your controller's latency. We're explicit about this because it's the honest limit of any browser-based test: the page has no way to know when your finger physically moved, so it cannot separate you from the hardware.

What it is good for is a paired comparison. Run it wired, save the result, switch to wireless, run it again. Your reaction time is roughly a constant offset across both, so the difference carries real signal. The tool only flags a gap as meaningful once it exceeds the combined statistical noise of both runs. Otherwise it says "within noise" instead of handing you a number that looks authoritative but isn't.

How do I read my results?

Report rates have moved a lot. 1000 Hz is the normal baseline for a modern controller, not a premium figure. With overclocking (or natively, on a few pads) you can reach 8000 Hz.

Report rateWhat it usually means
125 HzOlder Bluetooth. Low by current standards.
250–500 HzOlder wired pad, or a conservative default.
1000 HzThe current baseline. Most modern controllers land here.
2000–4000 HzHigh-rate territory: overclocked, or high-end native.
8000 HzTop of the range. Overclocked, or one of the few pads doing it natively.
  • Jitter under 1 ms: a healthy, stable link. Above 5 ms: something is interfering.
  • Any dropped reports on a cable: suspect the cable, the port, or a USB hub. On wireless, suspect distance or 2.4 GHz congestion.
  • Reaction median 150–220 ms: normal, and dominated by you rather than the controller. Don't read it as hardware latency.
  • A big reaction spread (±40 ms or more): usually you, not the pad: fatigue or distraction. Collect more trials before comparing setups.

Chasing a higher rate can make things worse

Above roughly 1000–2000 Hz, the limiting factor stops being the controller and becomes your PC: the USB controller, the driver, and how busy the CPU is. Pushing a pad to 8000 Hz on a host that can't sustain it produces dropped reports and jitter, and those are what actually make an overlay look choppy. Raw rate is not.

A rock-steady 1000 Hz beats a stuttering 8000 Hz

If the test reports a high rate together with dropped reports or high jitter, step the polling rate back down in your overclock tool (8000, then 4000, then 2000) and re-test until the drops disappear. The tool tells you this directly in its verdict when it sees that pattern.

One measurement caveat worth knowing: at very high rates the browser clock itself becomes the limit. performance.now() resolves to about 0.1 ms, while 8000 Hz means one report every 0.125 ms. At that point the tool switches to computing the rate over the whole run instead of per-interval, and reports jitter as n/a rather than printing rounding noise as if it were a measurement. The device-clock analysis below has no such limit. A DualSense timestamp resolves to about a third of a microsecond.

What can't a browser measure?

No browser tool can give you a true absolute controller latency figure, and it's worth being clear why: measuring it requires knowing when the button was physically pressed, and a web page has no access to that. It only knows when it observed the change.

That's why lab measurements use external hardware: a microcontroller that electrically shorts the button contacts and timestamps the moment, or a 1000 fps camera filming the pad and the screen together. They're buying a physical time reference that the browser fundamentally cannot have. Anything claiming a precise absolute hardware latency from a web page alone is measuring your reflexes and calling it hardware.

How do I lower my latency?

  • Use a wired USB connection instead of Bluetooth/wireless when precision matters.
  • Plug directly into the motherboard/console, not through a USB hub.
  • Close background apps and browser tabs before testing or playing competitively.
  • If you're troubleshooting an overlay specifically (not the raw controller), see our guide on fixing controller overlay lag. Overlay delay is usually a Browser Source setting, not the controller itself.
Want to show this on stream?

Turn your controller into a live, transparent input overlay for OBS or Streamlabs in a couple of minutes.

Build your overlay

What affects controller latency?

  • Wired or wireless: USB is consistently the fastest link. Bluetooth and 2.4 GHz wireless add a small, measurable delay.
  • USB hubs: a cheap or unpowered hub can add polling delay compared with a direct port.
  • Report rate: around 125 Hz over Bluetooth, 250 to 500 Hz over USB, and 1000 Hz on competitive controllers. A lower rate means more time between updates.
  • Jitter: under 1 ms is a stable link, above 5 ms something interferes. Jitter, more than raw latency, is what makes an overlay look like it stutters.
  • Background load: a busy CPU or a throttled browser tab can skew results regardless of the controller.
  • The game itself: input buffering and frame pacing in the game often matter more to the feel than the controller does.

Is it controller lag or overlay lag?

If it is your stream overlay that looks late rather than the game, the fix is different and usually easier. It almost always comes from a Browser Source setting in OBS or Streamlabs, not from your controller.

What numbers should I expect?

Report rateTime between two reportsWhat it means
125 Hz8 msA common default. Fine for most games.
250 Hz4 msNoticeably tighter, especially in fast shooters.
500 Hz2 msTypical of controllers built for competitive play.
1000 Hz1 msThe top end. Gains past this point are hard to feel.

Jitter, the variation between reports, matters as much as the average. A few milliseconds is normal over wireless; regular spikes above 20 milliseconds point to interference or a weak battery.

Is a cable always faster?

A cable usually gives the steadiest timing. A 2.4 GHz adapter comes close, and Bluetooth tends to vary more. The honest answer depends on your controller: run the latency test once wired and once wireless, a few minutes each, and compare the average and the jitter. If wireless is close, keep it; if the jitter jumps, use the cable for ranked sessions.

How fast do common controllers report?

Figures vary with firmware, drivers and connection, so treat these as orders of magnitude and measure your own controller:

  • Xbox controllers on the standard Windows driver are commonly measured around 125 Hz, whether wired or over Bluetooth.
  • PlayStation controllers usually report faster over USB than over Bluetooth, with the DualShock 4 often measured around 250 Hz wired.
  • Controllers sold for competitive play advertise 500 to 1000 Hz, generally over a cable or their own adapter.

A web page normally reads a controller once per displayed frame, which would hide anything faster than your screen. The latency test samples the controller in a separate loop, far more often than the display refreshes, so it can see report intervals that a normal page would miss.

FAQ