TextFizz
  1. Home
  2. Tools
  3. Gamepad Tester

Gamepad Tester Online

Connect a controller by USB or Bluetooth and press any button. The page shows every button and axis live, measures how far the sticks sit from centre when you are not touching them (drift), tests the rumble motors and estimates the input latency.

Connect a controller and press any button. Works with Xbox, PlayStation, Switch Pro and most USB/Bluetooth gamepads.

Everything runs in your browser. What you type is never sent to our server.

Try also:📡 Mouse Polling Rate Test🟢 Reaction Time Test⎵ Spacebar Clicker🖱️ Mouse Test
⧉ Embed this tool

How to use

  1. Plug the controller in or pair it over Bluetooth, then press any button — browsers only expose a gamepad after a first press, so nothing shows until you do.
  2. Press each button and pull both triggers. Each one lights up and shows its value (triggers report 0 to 1, so half-pull reads about 0.5).
  3. Take your hands off the sticks and read Stick drift (idle) — the largest distance from centre while untouched. Then roll each stick in full circles to check the range and the corners.
  4. Hit Test vibration to run the rumble motors; the Vibration box says whether the browser could drive them.
  5. Check Hz (how often the controller updates) and Input latency. Try another cable, port or pairing if the numbers look off.

What the tester checks and how

The page uses the browser's Gamepad API. By the W3C specification, stick and trigger values are normalised to the range −1 to 1 (0 to 1 for triggers), and a "standard" controller layout maps 17 buttons and 4 axes to fixed indices: axes 0–1 are the left stick, 2–3 the right stick, button 0 is the bottom face button (A on Xbox, Cross on PlayStation), buttons 6–7 the triggers, and so on. The chip next to the controller name tells you whether the browser recognised it as standard; if not, buttons still work but the numbering may differ.

The state is polled every animation frame with performance.now() timestamps, which gives three derived numbers. Stick drift (idle) is the largest deviation from centre measured on any stick axis while the value is small enough to be "untouched" — the number that tells you whether the controller drifts. Hz is how often the values change, an estimate of the controller's report rate. Input latency is the delay between a button changing state and the page seeing it, as far as a browser can measure it — expect the page's own frame interval to be part of that number.

Stick drift: what the number means

Inside most sticks are two potentiometers — variable resistors that wear with use and collect dust. As they wear, the resting position stops reading exactly zero, and the game sees a tiny constant push: the camera creeps, the character walks on its own. That is stick drift, and it is the most common controller fault on Xbox, DualSense and Joy-Con alike.

Idle readingVerdictIn games
0.00–0.05NormalInvisible; every game's dead zone swallows it
0.05–0.10BorderlineHidden by default dead zones (typically 0.1–0.2); shows up if you lower the dead zone for precision
0.10–0.20DriftCamera creep in games with small dead zones; raise the in-game dead zone as a stopgap
> 0.20Bad driftNoticeable everywhere; clean or replace the stick module

These bands are our working thresholds for an untouched stick, not a manufacturer standard — there isn't a published one. A fresh controller usually reads 0.00–0.03. Drift that appears only after warm-up, or only in one direction, is still drift; note the value and the axis.

Dead zones, vibration and controller quirks

Dead zone is the radius around centre that a game ignores. Bigger dead zones hide drift but make fine aim mushy; competitive players lower them, which is exactly when small drift becomes visible. Many games (Fortnite, Apex, Call of Duty) expose the setting; Steam Input can also add one for any controller.

Vibration uses the API's vibrationActuator with the "dual-rumble" effect — strong and weak motors — and, on controllers that support it, "trigger-rumble". Whether the button works depends on the browser and the connection: Chromium supports rumble for most controllers over USB and many over Bluetooth; Firefox and Safari support is partial, so a silent controller here is not necessarily a broken one. Test in a game before assuming a fault.

Controller notes: Xbox controllers report the standard layout almost everywhere. DualSense and DualShock 4 work over USB and Bluetooth; the touchpad click is a button, the adaptive triggers read as normal triggers. Switch Pro over Bluetooth may need a button press to wake and reports a non-standard layout in some browsers. Third-party pads that emulate Xbox (XInput) look like an Xbox controller to the page.

Fixing drift and other faults

  • Recalibrate first. Xbox Accessories app (Windows) or the controller's own settings on console; DualSense has no user calibration, but Steam's controller settings can re-centre it.
  • Clean. Power off, work the stick in circles while blowing compressed air around the base; a drop of electrical contact cleaner on the potentiometers helps in many cases.
  • Raise the dead zone in the game or Steam Input as a temporary fix.
  • Replace the module. Stick modules are cheap and standard parts; Hall-effect (magnetic) replacements do not wear the same way. Soldering required for most controllers.
  • Buttons that don't light up are usually a dirty membrane; the special buttons (Share, Xbox/PS home) are sometimes reserved by the OS and invisible to the browser — that is not a fault.

What makes our gamepad tester different

  • Idle drift as a number, not just a wobbling crosshair, with clear thresholds.
  • Rate and latency estimates using performance.now() — useful for spotting a bad Bluetooth link or a power-saving USB port.
  • Vibration test for dual-rumble and trigger-rumble where the browser supports them.
  • No ads on the pad, no download, no driver; works with Xbox, PlayStation, Switch Pro and most USB/Bluetooth controllers.
  • Everything in the browser.

Privacy: controller readings are processed on this page and nowhere else. The controller name shown comes from the API and is not transmitted; nothing is stored beyond the current tab.

FAQ

The page says no controller is connected, but it is plugged in.

Press any button. By the Gamepad specification, the browser returns an empty list until a "gamepad user gesture" — a button press or stick movement — has been observed, to limit fingerprinting. If it still doesn't appear, try another USB port or re-pair over Bluetooth.

How much stick drift is normal?

An untouched stick on a healthy controller reads 0.00–0.03 here; up to 0.05 is fine and swallowed by any game's dead zone. Above 0.10 is drift you will notice in games with small dead zones. These are our thresholds, not a manufacturer figure.

Vibration doesn't work in the test. Is the controller broken?

Not necessarily. Browser rumble support is partial: Chromium supports most controllers over USB, Bluetooth and other browsers less so. Try a game before assuming the motors are dead.

Does it work with a PS5 DualSense or Switch Pro controller?

Yes, over USB and Bluetooth. DualSense reports the standard layout in most browsers; Switch Pro may show a non-standard mapping and needs a button press to wake.

Why are the button numbers different from my controller's labels?

The API numbers buttons by position in the standard layout: 0 is the bottom face button (A/Cross), 1 right (B/Circle), 2 left (X/Square), 3 top (Y/Triangle). Controllers the browser doesn't recognise as standard can use their own order.

Can the tester fix stick drift?

No — it measures it. Recalibrate, clean the stick base, raise the in-game dead zone, or replace the stick module (Hall-effect modules don't wear like potentiometers).

Related tools

Latest guides