How to Run a Controller Input Test in Your Browser (Buttons, Stick Drift, Triggers, Vibration)
You can run a full controller input test in your browser without installing anything: connect the controller by USB or Bluetooth, open an HTML5 gamepad tester such as controllertest.io, and press any button to wake the Gamepad API if the page shows "No Controller Detected." The test then reports button presses, analog stick position, trigger pressure, and vibration output, which is enough to judge whether a controller has drift, a dead button, or a failing rumble motor. This works with Xbox 360/One, PS3/PS4/PS5, Switch Pro, and other major controllers that expose a standard Gamepad API signal.
Before You Start
- A controller with a USB cable or Bluetooth connection
- A Chromium-based browser (Chrome, Edge) or Firefox — the Gamepad API is the underlying mechanism, so the tester reads hardware signals directly with no driver download
- The controller powered on and paired/plugged in
Step 1: Connect and Wake the Controller
- Plug the controller in via USB, or pair it over Bluetooth through your OS settings.
- Open the tester page.
- If the visualizer still shows "No Controller Detected," press any button on the controller. Browsers only expose a gamepad to the page after a user gesture, so a button press is what triggers detection.
Expected result: the page switches from "Waiting for Input" to an active controller slot (P1–P4), and the button/axis readouts start updating.
Common snag: the controller appears in your OS but not in the browser. Re-press a button, refresh the page, and reconnect. Some controllers only register after the first input event.
Step 2: Test Buttons and Layout Mapping
Press each button one at a time and watch the visualizer.
- Each press should light the matching on-screen button and increment the "Button Pressed" indicator.
- Confirm the ABXY / face-button layout matches what you pressed — this catches swapped or mis-mapped buttons.
- Check shoulder buttons (LB/RB, L1/R1), stick clicks (L3/R3), D-pad directions, and Start/Select/Share.
Expected result: every button registers exactly once, with no ghost presses and no button that stays stuck on after release.
Common snag: a button that never lights usually means a worn contact or a broken trace; a button that stays lit after release points to a stuck membrane or debris.
Step 3: Read Analog Stick Values (Drift, Deadzone, Centering)
Leave both sticks untouched and read the live coordinates.
| Reading | What it means | Likely action |
|---|---|---|
| Values sit at or near +0.00, +0.00 | Stick is centered and healthy | None |
| Small constant offset at rest (e.g. +0.08) | Static drift / offset | Clean the stick module; consider hall-effect replacement if it grows |
| Values wander or jitter at rest | Sensor noise or wear | Monitor; clean or replace if it affects gameplay |
| Stick won't reach the outer edge | Reduced range / deadzone issue | Check for physical obstruction or worn potentiometer |
Then push each stick in a full circle and watch linearity, drift, and circularity:
- A clean circle with a small centering error (the "Err" value) means good calibration.
- A lopsided or squared-off circle indicates a worn or dirty potentiometer.
Expected result: sticks return to center on release and trace a smooth circle when rotated.
Common snag: a stick that reads fine but drifts only in-game is often a deadzone setting in the game, not the hardware — the tester's raw values tell you which.
Step 4: Check Trigger Pressure Range
Pull each trigger slowly from rest to fully pressed.
- The trigger readout should move smoothly from 0.00 to 1.00 (analog pressure, 0–1).
- A trigger that jumps straight to 1.00, or never reaches it, has a worn or miscalibrated sensor.
Expected result: a gradual, continuous value across the full pull on both LT/L2 and RT/R2.
Step 5: Test Dual-Motor Vibration
Use the vibration test controls (HEAVY, LIGHT, BURST, PULSE) to fire each motor independently.
- Heavy motor = low-frequency rumble (usually the larger weight)
- Light motor = high-frequency buzz (smaller weight)
Expected result: each motor produces a distinct, separate vibration. If one side is silent or weak, that motor or its wiring is failing.
Common snag: some controllers only rumble over certain connections — if vibration is dead over Bluetooth but works over USB, the issue is the connection, not the motor.
Step 6: Compare Wired vs Bluetooth Polling Rate and Latency
Run the polling rate / latency readout once over USB and once over Bluetooth.
- Higher polling rate and lower latency = more responsive input, which matters for competitive play.
- A large gap between wired and wireless tells you the wireless link is adding delay.
Expected result: wired typically shows a higher, steadier polling rate; Bluetooth may show more variance.
Deciding What to Do With the Results
| Symptom | Likely cause | First step | If it persists |
|---|---|---|---|
| Stick drifts at rest | Dust/debris or worn potentiometer | Clean the stick module | Replace module or switch to hall-effect sticks |
| Button never registers | Worn contact / broken trace | Re-seat and retest | Repair or replace controller |
| Trigger skips 0→1 | Worn sensor | Clean and recalibrate | Replace trigger sensor |
| One rumble motor dead | Motor or wiring fault | Test over USB vs Bluetooth | Repair or replace |
| High wireless latency | Bluetooth link | Switch to USB | Use wired for competitive play |
FAQ
Do I need to download software? No — the tester runs on the browser's native Gamepad API, so no driver or app install is required.
Is my input data sent anywhere? On controllertest.io, all input processing happens locally in the browser, so the raw controller data stays on your machine.
My controller isn't detected at all — why? Press a button to trigger the Gamepad API, refresh the page, and confirm the controller is paired or plugged in at the OS level first.
Can I test any controller? Any controller that exposes a standard Gamepad API signal works, including Xbox, PS4/PS5, and Switch Pro.