Skip to main content
Back to the browser support comparison

What a browser can't test — and why

Gamepad Tester runs on the HTML5 Gamepad API, the one standard every browser uses to read controllers. It describes a controller as buttons and axes, and nothing more. The features below come up constantly, no browser exposes any of them, and switching browsers will not reveal them — but for most of them there is still something useful you can do.

Last updated August 2, 2026

On this page

Not in the spec

Gyroscope and accelerometer

The Gamepad API describes a controller as buttons and axes only, with no interface for motion sensors. No browser can read gyro or accelerometer data from a gamepad, so motion aiming cannot be tested on the web.

The web does have Gyroscope and Accelerometer sensor APIs, but they read the phone or laptop you are browsing on, never the controller in your hands.

What to do instead

Your gyro still works in games — it just never reaches the browser. To check it, use the controller settings on your console, or a desktop layer like Steam Input or DS4Windows, which converts gyro motion into stick movement before any application sees the device. Everything else on the controller tests normally here.

Test buttons, triggers, and sticks

Not in the spec

Adaptive-trigger resistance

Programmable trigger stiffness — the tension DualSense games apply to L2 and R2 — is not part of the Gamepad API.

This is a different feature from trigger rumble, which vibrates the triggers rather than resisting them.

What to do instead

Trigger travel does test here, and it is what catches a worn or sticking trigger: pull each one slowly and watch its analog value sweep from 0 to 1. A plateau, a jump, or a value that never reaches 1.00 points at the sensor. Resistance itself exists only inside native games.

Sweep the triggers on the main tester

Not in the spec

Battery level, firmware version, and calibration data

A Gamepad object carries an id, a mapping, buttons, and axes — and nothing else. There is no field for charge level, firmware revision, or the controller's stored calibration, so no browser can report them.

What to do instead

Battery and firmware live in your console's or operating system's controller settings. Calibration splits in two: reading the values stored on the controller is impossible in any browser, but performing a calibration has a WebHID path — see below. Either way, check first whether calibration is your fix, because a drift test measures how far off-centre each stick actually rests.

Run the stick drift test

Not in the spec

Connection mode, driver state, and which app owns the controller

The browser will not tell you whether a controller arrived over USB or Bluetooth, which driver is handling it, or that Steam Input or another program has claimed it first.

This is often the real cause when a controller is powered on but never appears.

What to do instead

The browser cannot see this, but you can. When a controller is powered on and still never appears, another application usually holds it — Steam Big Picture is the common culprit on Windows. Close it, reconnect, then press a button to wake detection.

Troubleshooting tips

Not in the spec

Touchpad coordinates, swipes, and multitouch

Touch position, gestures, and finger count from a controller touchpad are not reported to the browser.

What to do instead

The click under the touchpad is wired as an ordinary button, so that part does test here — press the pad down and watch for a button to light up. Only the position of your finger stays invisible.

Test a DualSense

Not in the spec

Full advanced haptics and speaker output

Complete DualSense haptic waveforms and the controller's built-in speaker have no web interface. Browsers expose simple rumble magnitudes and durations only.

What to do instead

Plain dual-motor rumble does work in browsers that support haptics, and it answers the question most people are asking: whether each motor still spins, and how hard.

Run the vibration test

Needs hardware

End-to-end latency and true polling rate

The timestamp shows when the browser last received new controller data, which confirms input is arriving. It is not a press-to-screen measurement, and browsers cap how often they poll, so wired-versus-wireless latency comparisons made in a browser are not meaningful.

Real latency figures need a high-speed camera or a dedicated measurement rig.

What to do instead

For an actual number, film the controller and the screen together at a high frame rate and count the frames between the press and the reaction. No in-browser measurement substitutes for that, on this site or any other.

What about WebHID?

A separate standard, WebHID, can reach some of the items above — which is why you may have seen a site that reads a DualSense’s motion sensors or touchpad, drives its adaptive triggers, or recalibrates its sticks. In Chrome and Edge on desktop it opens a raw connection to a device, bypassing the Gamepad API entirely.

The catch is coverage. It asks for permission for every controller you connect, only works on models someone has reverse-engineered one at a time, and does not exist in Firefox, in Safari, or anywhere on iOS. Gamepad Tester stays on the Gamepad API because that works for every controller, in every browser, with nothing to approve.

How this page is maintained

We follow the Gamepad API as it evolves. When browsers ship support for something marked not in the spec, we add the matching test to Gamepad Tester — we just won’t promise a date for any particular one. Anything marked needs hardware is a physical measurement that no browser API can deliver, so it stays off that list for good.

The version numbers in the browser support comparison come from MDN browser-compat-data v8.0.8 , as of July 24, 2026. They describe the browser API only — a specific controller, driver, or connection mode can still behave differently.