Plug in or pair a gamepad and see buttons, triggers, and analog sticks update in real time via the browser Gamepad API. When the device reports
standard mapping, labels follow the W3C layout; otherwise you still get raw indices and values. Nothing is uploaded to DroidXP — inputs stay in your tab, the same way
APK Analyzer and
APK String Extractor keep processing local. Use Copy snapshot for a text report (support tickets, stream notes).
http:// (except localhost). Open this page over HTTPS or use
127.0.0.1 for local testing.
Connect a controller, then press any button so the browser exposes the device. Multiple pads each get their own card. Related: Screen Resolution Checker, Ping Tester.
No gamepad detected yet
Plug in USB or pair Bluetooth, then press a face button or trigger.
The Gamepad API lets a web page read connected controllers: digital buttons, analog triggers
(often as button value 0–1), and stick axes. This page polls navigator.getGamepads() on every animation frame and renders a live grid — useful for verifying a new pad,
checking whether a button registers, or capturing baseline axis readings. It is read-only; we do not send your inputs to a server, matching the transparency of
APK Analyzer (local analysis only).
When gamepad.mapping === "standard", indices match the W3C “standard gamepad” layout (face cluster, shoulders, triggers, stick clicks, D-pad). Otherwise the tool still lists every
button and axis with numeric fallbacks — some third-party or flight sticks expose extra buttons beyond the usual 17.
Chromium requires a secure context for predictable Gamepad behaviour, and many browsers only populate the gamepad list after the device sends input or the user has interacted with the page. If nothing appears, try a click on the page, then press a face button — same practical troubleshooting flow you would use when a game ignores a pad until it wakes.
Your controller state never leaves the browser tab. Loading this tool only fetches normal static assets from DroidXP, like using APK String Extractor without uploading files.
No. The Gamepad API is read only inside your browser tab; nothing is sent to DroidXP — the same local-only idea as APK Analyzer and APK String Extractor.
Browsers often expose a gamepad only after it sends input (and sometimes after a user gesture). Press any face button or trigger once, then this page can poll it.
Secure contexts (HTTPS or localhost) are required for consistent Gamepad API behaviour in Chromium-based browsers. Plain http on a LAN may fail or behave oddly.
When mapping is standard, button indices follow the W3C “standard gamepad” layout (face buttons, shoulders, triggers, sticks, D-pad). Unknown or empty mapping still works — labels fall back to indices.
Triggers are often exposed as buttons with a floating value (0–1) plus sometimes as axes, depending on the driver. This tool shows the raw button value and axis list from the API.
Yes. Each connected pad appears in its own card with index and id; up to four slots are typical in the API.
This page focuses on reading inputs. Programmatic rumble via gamepad.vibrationActuator is optional in browsers and not required for a button test.
No — you only see live values. Drift is hardware or calibration; use OS/driver dead zones or repair.
Yes: inputs stay in the page. Only ordinary static assets load from DroidXP.
Some browsers restrict gamepad access in cross-origin iframes unless explicitly allowed. Open the tool in a top-level tab on droidxp.com.