See exactly what your browser and controller report to each other, then use the reference guide below to understand what that means for the games and devices you actually care about.
Checking for a controller…
No controller detected
Connect a controller by USB or Bluetooth, then press any button. Most browsers will not notice it until you do.
Connect a controller to generate a report.
This is a best effort guess based on the identifying text your controller and operating system report, not something the controller deliberately announces in plain language. Most controllers do report enough to identify the brand reliably, but some third party and budget pads report a generic chipset name instead, which is normal and not a sign anything is wrong.
A mapping of standard means your browser has matched your controller to the W3C standard gamepad layout, where button and axis positions follow a predictable, consistent order across different controller brands. A mapping of none means the browser is exposing whatever raw buttons and axes the hardware reports without remapping them to that standard order, which still works perfectly well but means button positions are something you may need to confirm yourself using the input map on the main Gamepad Tester rather than assuming index zero is always the bottom face button.
Most modern controllers report 17 buttons and 4 axes under the standard mapping. A count that differs from this is not automatically a problem, since some controllers genuinely have extra paddles, a touchpad click, or additional triggers that add to the standard count, but it is worth knowing your exact numbers if you are troubleshooting an unusual input later.
This checks for the presence of specific browser level APIs your controller might use beyond basic button and axis reporting, vibration support being the most common one people care about. A feature showing as unsupported here means this specific browser is not exposing it right now, which is sometimes a browser limitation rather than a hardware one, since the same controller can support a feature in one browser and not another.
Both platforms support the Gamepad API natively across Chrome, Edge, and Firefox without any extra drivers for most major controllers. Xbox controllers connect over USB or Bluetooth and are recognised immediately by Windows at the system level before a browser even comes into play. DualSense and DualShock controllers work the same way over USB on both platforms, and over Bluetooth once paired through your system's Bluetooth settings first. Switch Pro controllers and Joy Cons also pair over Bluetooth and are picked up correctly once the operating system itself recognises them, which is always the first thing to confirm if a browser is not seeing a controller you have just connected.
Android has supported the Gamepad API in Chrome for a long time, and pairing works the same way as on desktop, through your device's Bluetooth settings first, then opening the page in Chrome afterward. Other Android browsers vary more in their support than Chrome does, so if a controller is not being picked up in a different browser, trying Chrome specifically is a reasonable first troubleshooting step.
iOS and iPadOS have supported the same Gamepad API since version 14.5, which covers any reasonably current device. Both MFi certified controllers, a certification Apple maintains specifically for mobile gaming controllers, and standard Bluetooth controllers from major brands pair through Settings the same way any other Bluetooth accessory does, then work immediately once Safari is opened afterward.
Chrome and Firefox both support the Gamepad API on Linux, and most major controllers work over USB without any extra setup at all. Bluetooth pairing generally works the same way as other platforms through your desktop environment's Bluetooth settings, though some distributions require a one time udev rule to be added for certain Bluetooth controllers to be recognised by the operating system at all. If a controller is not visible at the system level first, checking for missing udev rules specific to your controller's brand is usually the right next step, since a browser cannot see a device the operating system itself has not exposed.
Chrome and Edge, both built on the same underlying engine, tend to have the most consistent and broadly tested Gamepad API support across the widest range of controllers, including the most reliable vibration support of the major browsers. Firefox supports the core API well for button and axis reading but has historically lagged slightly behind on vibration support for some controllers, which is worth knowing if rumble specifically matters to what you are testing. Safari supports the API reliably on both desktop and iOS but has its own particular history with vibration support that varies more by controller model than the other browsers do.
None of this means a controller is broken if one browser shows weaker feature support than another, it simply reflects how thoroughly each browser vendor has implemented the optional parts of the same underlying specification.
The W3C standard gamepad mapping exists specifically so that a website does not need to write separate code for every controller brand on the market. Under this standard, button index zero is always the bottom face button, index one is always the right face button, and so on, regardless of whether the physical controller is from Sony, Microsoft, Nintendo, or a third party brand. Axes zero and one are always the left stick, and two and three are always the right stick.
When your controller reports as standard mapped, any tool built against this specification, including every tool on this site, will correctly label and display your inputs without any manual configuration. When it reports as unmapped, the underlying hardware still works exactly the same, it simply means the raw index order has not been translated to that universal layout, which occasionally results in button labels elsewhere that do not perfectly match your specific controller until you confirm the actual order yourself using a live input display.
Press a button first, many browsers will not register a controller until they see its first input. If it still does not appear, confirm the operating system itself recognises the controller before suspecting the browser, since a browser can only see devices the system has already exposed to it.
This is common for third party and budget controllers that report a generic chipset identifier rather than a specific brand name, and it does not indicate a problem, the controller will still function normally.
Try a different browser, since vibration support varies more between browsers than almost any other part of the Gamepad API, and a controller with working rumble motors can still show as unsupported in a browser that has not implemented that specific feature for that specific controller model.
This is expected behaviour for an unmapped controller rather than a fault. Use the input map on the main Gamepad Tester to confirm the actual order your specific hardware reports, then treat that as your own reference going forward.
If your controller reports something unexpected, a feature you know your hardware supports is showing as missing, or you would like a second opinion on what your results mean before assuming something is broken, reach out directly. A short description of what you are seeing, along with your controller model, browser, and device, is normally enough to help track down what is going on.
info.gpadviewer@gmail.comSign in to your account