Controller input test
This page shows exactly what the browser receives from your pad: the id string, the mapping, the timestamp and every axis and button by index. Use it to find a dead button, check a non-standard pad or build your own button layout when the browser doesn't recognise the controller.
Controller bench
No controller yet
Turn your phone sideways for the full bench.
Press any button on your controller — browsers only show a pad after its first press.
Raw Gamepad API values
Verdict
Connect a controller and run a check — the verdict shows up here.
Checklist for this controller
- Check the id line — it shows the vendor and product ID on most browsers.
- Look at mapping: "standard" means the browser knows the layout.
- Move every stick and press every button and watch which index changes.
- For a pad without standard mapping, run the layout wizard.
How to fix it
- An index that never changes while you press the button points to a dead switch or contact.
- If the D-pad shows up as one axis, that's a hat switch; the page detects it and draws it as a D-pad.
- A saved custom layout stays in this browser only; clear it from the privacy page.
FAQ
What does mapping "standard" mean?
The browser recognised the controller and put buttons and axes in the W3C standard order. An empty mapping means the order is whatever the device reports.
Why does my D-pad show as an axis?
Many generic pads report the D-pad as one hat-switch axis with eight positions instead of four buttons.
What is the timestamp for?
It changes whenever the pad sends new data. The bench uses it to tell real updates from repeated reads.
Why is the input list empty?
Browsers hide a pad until you press a button on it. Press any button or nudge a stick and it shows up.
Why are my buttons numbered differently in Firefox?
On pads without the standard mapping each browser orders axes and buttons its own way, so button 3 in Chrome can be button 5 in Firefox. The layout wizard sorts it out by asking you to press each control.
My generic pad doesn't appear in Safari. Why?
Safari on macOS reads only the pads it knows (MFi, Xbox, DualShock 4, DualSense, Switch Pro) and may not see a generic one at all. Chrome, Edge or Firefox will.