Latency Tester

Measure how quickly your browser sees a button press after you make it, and how steady your controller's polling rate stays while you play.

What this measures, and what it does not

A browser cannot see the exact electrical moment your finger closes a switch inside the controller, and it cannot see your monitor's own display lag either. What it can measure honestly is the gap between two things it does control, the timestamp of the animation frame in which a button first reports as pressed, and how often new controller data actually becomes available between one frame and the next. That second number is your polling consistency, and it is a genuinely useful diagnostic in its own right, since a controller or connection that polls unevenly will feel laggy and inconsistent regardless of what any single reaction time number says.

Treat the reaction figures here as a relative measure for comparing your own setups against each other, wired against wireless, one browser against another, rather than an absolute figure to compare against a marketing spec sheet, which is usually measured with lab equipment touching the switch directly.

Quick start

  1. 1
    Connect your controller. Plug it in over USB, or pair it over Bluetooth in your device settings first.
  2. 2
    Press any button first. Browsers will not notice a controller until they see its first input.
  3. 3
    Pick a button and wait for the prompt. A short random delay keeps you from anticipating the exact moment and biasing the result.
  4. 4
    Press as soon as the prompt changes. Run it a handful of times, since any single attempt can be thrown off by a moment of inattention.

Run the test

Live status

Checking for a controller…

No controller detected

Connect a controller by USB or Bluetooth, then press any button. Most browsers will not notice it until you do.

How to read your results

Last, best, and average

Last is your most recent round. Best is your fastest single round this session, which says more about your absolute floor than your typical performance. Average across several rounds is the more honest number for comparing two setups, since human reaction time naturally varies round to round by a meaningful margin on its own, separate from anything the hardware is doing.

The history bars

Each bar represents one completed round, in order. A fairly flat row of similar height bars suggests consistent hardware behaviour with normal human variation layered on top. A row with a few unusually tall outlier bars scattered among otherwise normal ones can point to an intermittent connection issue rather than just an off moment, especially if those tall bars happen repeatedly rather than once.

Current and average polling interval

This runs continuously in the background without needing you to press anything. It measures the time between one new controller reading and the next. Most wired controllers poll in the range of seven to sixteen milliseconds between updates. Bluetooth controllers commonly run a bit higher and less even than that, simply due to how wireless polling works.

Worst spike

This is the single largest gap recorded between updates since your last reset. A worst spike that sits far above your average interval, even if it only happened once, indicates your connection briefly stalled and then caught up. This single number is often more revealing than the average, since an average can look fine while still hiding occasional bad stutters underneath it.

Estimated rate

This converts the average interval into an approximate updates per second figure, since that is the unit most people are used to seeing quoted for polling rate. Treat it as a rough estimate drawn from recent samples rather than a certified lab measurement.

Why both halves of this test matter

Reaction time and polling consistency catch different problems. A controller can have a perfectly fine reaction time on a clean single press, and still feel sluggish in a fast game because its wireless connection occasionally stalls for a frame or two under interference, which the polling panel will show as a spike even on a round that never got tested for reaction time at all. Conversely, a controller with rock steady polling can still feel slower than another one simply because of how its firmware buffers input before reporting it, which the reaction prompt is better positioned to catch than the polling panel is.

Running both side by side, rather than relying on just one, gives a fuller picture of where any felt lag in your setup is actually coming from before you start swapping hardware or changing settings to chase it.

Reducing real input lag

If your polling interval is high or spiky, a wired USB connection almost always beats Bluetooth for both raw interval and consistency, since Bluetooth has to share its radio time with other nearby wireless traffic in ways USB simply does not. If you must stay wireless, a dedicated 2.4 gigahertz dongle, where your controller supports one, is typically steadier than standard Bluetooth pairing through your device's built in radio.

Closing other Bluetooth heavy applications, moving away from routers or other 2.4 gigahertz devices that crowd the same frequency band, and keeping the controller reasonably close to its receiver all reduce the kind of intermittent polling spikes this tool is built to surface.

Connecting by device

Windows and Mac

Plug in over USB, or pair over Bluetooth in your system settings first. Chrome, Edge, and Firefox all support the controller out of the box once it is paired.

Android phone and tablet

Pair the controller in your device's Bluetooth settings, then open this page in Chrome. Other Android browsers vary in their support.

iPhone and iPad

Pair an MFi or Bluetooth controller in Settings, then open this page in Safari. iOS has supported the same Gamepad API since version 14.5.

Linux

Plug in over USB or pair over Bluetooth, then use Chrome or Firefox. Some distributions need a one time udev rule for certain Bluetooth controllers to be recognised by the operating system at all. If the controller is not visible at the system level, it will not be visible here either.

Troubleshooting

My results vary a lot between rounds

Some of that is simply normal human reaction variation and is expected. Run at least eight to ten rounds and look at the average rather than judging from a single round, and watch the polling panel at the same time to see whether the variation lines up with actual polling spikes or is just you.

The prompt seems to trigger before I am ready

The delay before each prompt is intentionally randomised within a window so you cannot anticipate the exact moment. If it consistently feels too short, simply take a breath between rounds rather than starting the next one immediately.

Polling interval looks high even on a wired connection

Check the cable itself, since some charging only cables do not carry full data and can fall back to a slower communication mode. Also try a different USB port, ideally one connected directly to the motherboard rather than through an unpowered hub.

Nothing happens when I connect a controller

Press a button first. Many browsers will not register a controller until they see its first input.

Need help?

If your results look unusual, your controller will not stay detected during a round, or you would like a second opinion on what your numbers mean before changing any hardware, reach out directly. A short description of what you are seeing, along with your controller model and device, is normally enough to help track down what is going on.

info.gpadviewer@gmail.com