BeogradPC
Deadzone 0.10

No controller detected

Connect your gamepad, joystick, or wheel via USB or Bluetooth, then press any button.
Browsers only expose controllers after the first user input.

Press any button to start

Help — Gamepad Test

Connect your gamepad, joystick, or wheel via USB or Bluetooth. Browsers only expose the device after you press a button on it (security requirement). Once detected, the controller appears as a pill in the top toolbar.

Modes:

Visualizer — schematic gamepad with hit-heatmap (each button color-grades blue→green→cyan→amber→red as you press it more), analog axes, analog triggers, and a full button grid. Labels follow the active label scheme (Xbox / PlayStation / Nintendo / Numeric — cycle via the A/B button in settings).

Stick gamut — rotate each stick in a full circle. The canvas draws all positions visited; outer ring = full deflection, inner ring = current deadzone. Octant coverage tells you whether the stick can reach every direction.

Vibration — test the weak (high-freq) and strong (low-freq) motors independently or together. Magnitude (0–1) and duration (100–3000 ms) are configurable. Not all controllers expose vibrationActuator; the support status row tells you.

Raw data — pretty-printed Gamepad object snapshot, throttled to 100 ms.

Deadzone (top-right slider, 0.00–0.30) filters axis noise: values below threshold display as zero and don't contribute to triggers. Raw values are still recorded in JSON export.

Privacy: All data stays in your browser. The page makes no network calls (CSP connect-src 'none'). Settings (theme, deadzone, label scheme, vibration defaults) are stored in localStorage under the gptest: prefix.

Reset clears button hit counts, stick gamut points, simultaneity peak, and vibration log across all controllers. Export writes a JSON file with system info and per-controller stats.