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.
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.
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.
Press start to begin
Completed rounds will appear here as a simple bar for each attempt.
Each bar is one recent gap between new controller readings. Short, even bars mean steady polling. Tall, irregular bars mean the connection is stalling and catching up in bursts, which feels like input lag even if a single reaction time test still comes back looking fine.
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.
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.
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.
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.
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.
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.
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.
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.
Pair the controller in your device's Bluetooth settings, then open this page in Chrome. Other Android browsers vary in their support.
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.
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.
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 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.
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.
Press a button first. Many browsers will not register a controller until they see its first input.
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.comSign in to your account