55 / Device Tests

Gamepad & Controller Tester

Test every controller button, trigger, stick, drift, range, browser-visible update rate, and vibration, then save a repair or resale report.

Controller inputs, device labels, measurements, and exported reports stay in this browser tab. No login, upload, or account is used.0 uploads · local

Live browser controller lab

Press it. Move it. Prove it.

Connect by USB or Bluetooth, keep this tab visible, then press any controller button. The test starts without a download or account.

ControllerWaiting
Buttons tested0 / 0
Browser update rate0 Hz
Resting driftNot run
WAITING FOR INPUTConnect a controller and press a buttonThe browser may hide an already-connected controller until the first interaction.
LB / L10.00
LT / L20.00
RB / R10.00
RT / R20.00
Y / △B / ○A / ×X / □
ViewHomeMenu
L30.000, 0.000
R30.000, 0.000

Waiting for the first controller input. Keyboard and mouse events are ignored.

01 / Stick drift

Five seconds at rest

Release both sticks, then start the test.
Left stickWaiting
95th percentile
Maximum
Suggested deadzone
Right stickWaiting
95th percentile
Maximum
Suggested deadzone

A browser can show whether a released stick keeps reporting movement. It cannot recalibrate controller firmware. Compare the result in a game before repairing or returning hardware.

02 / Range

Rotate both sticks fully

Trace the outside edge twice.
Left horizontal0%
Left vertical0%
Right horizontal0%
Right vertical0%

Coverage compares the lowest and highest browser-reported values with the standard −1 to +1 range. Small shortfalls can come from the controller, driver, or browser mapping.

03 / Haptics

Test controller vibration

Support varies by browser and device.

No haptics test has run.

A failed browser vibration test does not prove the motor is broken. Some controllers expose input but keep haptics unavailable to the Web Gamepad API.

04 / Buttons & triggers

Press every control once

Analog values run from 0.000 to 1.000.
A / Cross0.0000 presses
B / Circle0.0000 presses
X / Square0.0000 presses
Y / Triangle0.0000 presses
LB / L10.0000 presses
RB / R10.0000 presses
LT / L20.0000 presses
RT / R20.0000 presses
View / Share0.0000 presses
Menu / Options0.0000 presses
Left stick0.0000 presses
Right stick0.0000 presses
D-pad up0.0000 presses
D-pad down0.0000 presses
D-pad left0.0000 presses
D-pad right0.0000 presses
Home0.0000 presses

Portable repair or resale proof

All measurements stay here. Run the tests, then save or share the report.

Field note

Test a controller before replacing, repairing, or reselling it

Connect the controller by USB or Bluetooth, leave this page visible, and press a button. Browsers intentionally wait for controller interaction before exposing input. Siftlet then reads the latest buttons and axes locally with navigator.getGamepads().

Controller button and trigger test

Press every button once and pull both triggers through their full travel. The standard mapping covers Xbox, PlayStation, Switch-style, and many generic PC controllers. Extra buttons and axes still appear in the raw report even when the browser has no friendly label for them.

Stick drift, deadzone, and range test

Release both sticks before the five-second resting test. The 95th-percentile reading ignores a small number of isolated spikes, while the maximum preserves the worst sample. The suggested deadzone adds a small margin above the resting reading; it is a diagnostic starting point, not a firmware calibration.

What the polling number means

The update-rate estimate uses changes in the Gamepad API timestamp. It measures updates visible to this browser tab. It is not a certified USB polling or end-to-end input-latency measurement, and browsers may cap or merge visible updates.

The implementation follows the W3C Gamepad specification and current MDN usage guidance. The saved report includes the device label the browser exposes, button counts, stick range, drift summaries, and browser-visible update rate.