Controller Polling Rate Test

See how often the browser gets fresh data from your gamepad, how steady that is, and how a cable compares with Bluetooth.

Connect a controller, then press any button

Plug it in with a USB data cable or pair it over Bluetooth. Browsers only reveal a controller after a button press, so press A or ✕ if nothing appears. Nothing is sent anywhere.

No controller yet

The diagram lights up as soon as your controller sends input.

Update rate test

Estimates how often the browser receives new data from the controller while you move a stick.

Not measured yet.

Live controller diagram: buttons light up when pressed, triggers fill as you squeeze themLTLBRTRBSelectStartHomeABXYLSRS
Left stick–
Right stick–
Left trigger
0%
Right trigger
0%
All buttons and axes · 0 buttons pressed

Press every button once: each one gets a tick when it registers. Values show analog pressure from 0.00 to 1.00.

Health tests

1. Stick drift

Measures where each stick settles when nobody touches it, and checks for buttons or triggers that read as pressed. Pass: under 5% of full travel. Warning: 5–10%. Fail: 10% or more.

Not run yet.

2. Circularity

Rotate each stick slowly around its outer edge. Measures how far the edge strays from a perfect circle. Pass: up to 10% average error. Warning: up to 20%. Fail: above 20% or a direction that can't reach 75% of full travel.

Left
Right

Not run yet.

3. Vibration

Plays a rumble. The strong motor is the heavy, low rumble in the left grip; the weak motor is the finer buzz on the right.

Connect a controller to test vibration.

More tests for PlayStation controllers

Connect a DualSense, DualSense Edge or DualShock 4 directly for what the standard gamepad connection hides: motion sensors, touchpad, battery and the true report interval, plus adaptive triggers and lights on a DualSense. Your browser asks which device to allow, and the permission lasts until you close the tab. This page only reads the controller and sends effect commands (trigger effects, light bar, player lights), never calibration or firmware, and it resets them when you leave.

Decoded from published formats (the Linux hid-playstation driver and SDL); not yet tested on a real controller. Over Bluetooth, deep mode switches the controller to its full report format until it reconnects, and asks first: if another app or game stops seeing it, turn the controller off and on.

Not connected.

Motion sensors

Tilt and turn the controller: the model follows it, and the graphs show the gyroscope (turn rate, degrees per second) and the accelerometer (g) on each axis. Put it down flat and run the rest check to measure gyro drift.

Gyro – · Accel –

Touchpad

Draw on the touchpad with one or two fingers. Each finger gets its own colour and the ID the controller gives it; a dead strip shows up as a gap in the lines. Press the pad to test its click.

No touch yet.

Adaptive triggers (DualSense only)

Pick an effect, then press L2 or R2. Resistance pushes back from the start point; click is a section of resistance that gives way, like a trigger pull; vibration buzzes the trigger from the start point. The bars show where each trigger is.

L2
–
R2
–

Light bar and player lights

Battery

The level the controller reports, in 10% steps, and whether it is charging. It updates live, so plug in a cable to check the charging port.

–

Report interval

How often the controller sends a report, from the controller's own clock and from the time each report reached this page. This is the report interval, not end-to-end input lag: it leaves out the time a press takes inside the controller, in the game and on the screen.

Controller health report

Selling or buying a used controller? Run the four tests, press every button, then share the report link in your listing or message.

Connect a controller to start the report.

How to measure the update rate

Pick a duration and, if you like, the connection you are using, then click Measure update rate and keep moving a stick in circles until it finishes. The browser only reports new data when something changes, so a stick resting still would look like a slow controller. Gaps longer than 100 ms are treated as idle and left out.

The result shows:

  • Median: the typical rate, from the median gap between updates. This is the headline figure and the one saved in the health report.
  • Average, peak (from the fastest 5% of gaps) and low (the slowest 5%).
  • Jitter: the standard deviation of the gaps, in milliseconds.
  • Steady: the share of gaps within 25% of the median, and late updates: gaps more than three times the median.
  • A stability graph of updates per second in quarter-second steps, with the median as a dashed line. A dip means fewer updates arrived: a dropout, or just a moment when the stick stopped moving, so keep it moving for a fair graph. A flat line is a steady link.

Run it again after switching from USB to Bluetooth, or to a wireless adapter, and the runs appear side by side in a table.

What a browser can and can’t measure

The Gamepad API gives each controller a timestamp that changes whenever the system receives new button or axis values. That is what this test times. It can’t see the USB polling interval the controller negotiated, and Chromium checks controllers on a fixed 4 ms timer (source), so in Chrome and Edge the result tops out around 250 Hz. A reading near 60 Hz usually means the browser only looked once per screen refresh: keep this tab in front and try again.

Wired or Bluetooth?

Gamepadla’s native measurements show why you should test your own setup rather than assume. An Xbox Series controller reported about 125 Hz over cable, its wireless adapter and Bluetooth. A DualSense reported 250 Hz over cable in stock form and faster over Bluetooth. In practice, a cable wins on steadiness: it has no radio interference and no battery saving, so jitter and late updates stay low. If Bluetooth shows dips in the graph, move closer to the receiver, away from USB 3 ports and Wi-Fi routers, which share the 2.4 GHz band.

For a full health check, run the other tests on the controller tester, and check a mouse’s report rate with the mouse test.

Controller TesterSomeone shared their result

Suggested