Controller Not Detected in Browser

Fix a controller that is not showing up in your browser. Step-by-step troubleshooting for USB and Bluetooth gamepads on Windows, Mac, and Linux.

Controller Not Detected in Browser: Troubleshooting Guide

The Web Gamepad API exposes connected controllers to a page only after the browser detects a connection or after a button or axis is used for the first time.1 This means the most common "not detected" result is not a broken controller: the controller is connected, but the page has not received the interaction that makes the browser expose it. Connect the controller, press any button, and the page should respond within a second.

If pressing a button still produces no detection, the issue is at a deeper level. Work through the checks below in order to isolate whether the problem is at the operating system level, the browser level, or the controller's input mode. Repeat any failed check after a browser reload and after reseating the cable or re-pairing Bluetooth.

What this page covers

  • Windows OS check Win+R > joy.cpl, confirms the controller is visible at the driver level before testing in browser
  • Linux permissions evdev nodes (/dev/input/event*) require membership in the input group: sudo usermod -aG input $USER
  • Chrome internals page chrome://gamepad-internals/ shows raw Gamepad API data, more sensitive than any third-party test page
  • Input mode switch controllers with a D/X switch (e.g. Logitech F310) need XInput mode for reliable browser mapping

Opens the Gamepad Tester with this page's checklist shown at the top of the tool.

Open in the tool →

Checking at the operating system level

On Windows, open the Run dialog (Win+R), type joy.cpl, and press Enter. If the controller does not appear in the Game Controllers list, the issue is at the OS driver level, not in the browser. Reinstall drivers or try a different USB port before opening any test page. On macOS, check System Information under Hardware and USB. On Linux, confirm your user account has read permission on the relevant /dev/input/event* device.2

Start where the browser gets its input

Because the browser reads from the OS, the OS must see the controller first. A device that does not appear in joy.cpl cannot be fixed by browser settings or page reloads alone. Resolve the OS recognition issue first, then test in the browser. The browser Gamepad API has no way to expose a controller that the operating system driver layer has not already registered, so confirming OS-level visibility is the most important first step, the trace a missing gamepad back to the OS or browser check you run before anything else.

Once the OS recognizes the device, open the tester in Chrome or Edge and press any button to prompt the browser to expose it. A controller that is visible in joy.cpl but still missing from the page usually needs that first button press, so do not assume the browser is broken before you have interacted with the device while the tab is open.

Browser compatibility and input mode

Chrome and Edge provide the broadest Gamepad API support. Firefox supports it but can delay exposing a gamepad until the user interacts with it while the page is visible, partly to reduce fingerprinting.3 Safari on iOS and some older macOS versions do not support the Gamepad API at all, so switch to Chrome or Edge if you are on Safari and seeing no detection.

Confirm the controller mode before blaming the browser

If the controller has a mode switch, like the Logitech F310's D/X switch on the back, or the 8BitDo's connection-mode buttons, confirm it is set to XInput mode. Logitech's F310 documentation describes XInput as the modern Windows gamepad standard and recommends setting the switch to X for modern games whenever possible.4 DirectInput mode produces a different device descriptor that some browsers do not map correctly, resulting in detection failures or unusual button assignments.

Bluetooth pairing troubleshooting by platform

Bluetooth controller detection failures in the browser often trace back to the OS pairing state rather than to the browser itself. On Windows 11, open Settings, then Bluetooth and devices, and check whether your controller appears as paired. A device that shows as paired but disconnected needs you to press its power or sync button to prompt Windows to reconnect. For Xbox controllers, hold the sync button on top until the Xbox logo blinks, which puts the controller into pairing mode for a fresh connection.5

On macOS, navigate to System Settings and then Bluetooth and look for the controller in the device list. If it shows as paired but not connected, click Connect next to the device entry. Apple’s Xbox controller guide follows the same pairing pattern: turn on the controller, hold the Connect button to enter pairing mode, then select it from Bluetooth settings.6 DualSense and DualShock 4 do not require any additional app on macOS.

Linux: reconnecting via bluetoothctl

On Linux, use bluetoothctl to inspect the pairing state: run bluetoothctl in a terminal, then type devices to list known devices. If your controller appears in the list, type connect followed by the device MAC address to reconnect. After reconnecting, reload the tester page and press a button. If the OS shows the device as connected but the browser still shows no gamepad, check the evdev permissions described in the Linux controller guide. Chromium opens Linux input devices through evdev nodes such as /dev/input/event*, so a Bluetooth controller has the same permission requirements as a USB connection.2

When to use this

Use this guide when the gamepad tester shows "waiting for controller" or no controller detected even after plugging in or pairing your gamepad via Bluetooth.1

Examples

Browser shows waiting because you forgot to press a button

Before
Status: Waiting for controller... (USB cable connected, no button pressed yet)
After
Status: Controller connected as Standard Gamepad (after pressing A on the controller)

The browser requires one physical button press before exposing the gamepad to the page. This is a security requirement, not a bug.

Logitech F310 not detected because mode switch is in wrong position

Before
Mode switch on back: D position / Browser: no controller detected after button presses
After
Mode switch moved to X position, controller unplugged and replugged then detected immediately on next button press

Always verify the mode switch position before diagnosing USB port or driver issues.

Linux permission issue preventing evdev access in Chrome

Before
ls -l /dev/input/js0 confirms device exists, but Chrome shows no controller
After
sudo usermod -aG input $USER then log out and back in and controller detected on next button press

Chrome on Linux uses the evdev interface (/dev/input/event*), not joydev (/dev/input/js*). Working in jstest-gtk does not guarantee evdev access.

Sources
  1. 1.

    MDN, "Using the Gamepad API," developer.mozilla.org, April 2026. https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API

  2. 2.

    Chromium, "device/gamepad/gamepad_device_linux.cc," chromium.googlesource.com, accessed June 2026. https://chromium.googlesource.com/chromium/src/+/HEAD/device/gamepad/gamepad_device_linux.cc

  3. 3.

    MDN, "Implementing controls using the Gamepad API," developer.mozilla.org, accessed June 2026. https://developer.mozilla.org/en-US/docs/Games/Techniques/Controls_Gamepad_API

  4. 4.

    Logitech, "Using the input mode switch on the Gamepad F310 to select DirectInput or XInput," support.logi.com, accessed June 2026. https://support.logi.com/hc/en-us/articles/360023398693-Using-the-input-mode-switch-on-the-Gamepad-F310-to-select-DirectInput-or-XInput

  5. 5.

    Microsoft Q&A, "Xbox One Controller Discoverable but Fails to Connect to Windows 11 via Bluetooth," learn.microsoft.com, September 2025. https://learn.microsoft.com/en-us/answers/questions/5569932/xbox-one-controller-discoverable-but-fails-to-connect-to-windows-11

  6. 6.

    Apple Support, "Connect an Xbox wireless game controller to your Apple device," apple.com, January 2026. https://support.apple.com/en-us/111101

FAQ

Check that you are using Chrome or Edge. Firefox occasionally delays gamepad detection on first connection. Try pressing multiple buttons in quick succession. If still not detected, open chrome://gamepad-internals/ in Chrome because this internal page shows raw Gamepad API data and is more sensitive than any third-party web page.

Games may use a different input API such as DirectInput, Steam Input, or native OS APIs that do not have the same button-press security requirement as the Web Gamepad API. Press a button while the browser page is active and in focus, then check again.

Chrome on Linux uses the evdev interface, not joydev. Your user account needs read permission on the relevant /dev/input/event* device. Run ls -l /dev/input/event* and confirm you are in the input group. If not, run sudo usermod -aG input $USER and log out and back in.

Probably not. Repeated Bluetooth disconnections usually come from OS power management putting the Bluetooth adapter into a low-power state or from RF interference. On Windows, try disabling Bluetooth power saving in Device Manager. Test via USB first to confirm the controller hardware is functional before diagnosing Bluetooth.

If the OS can see the controller (it appears in joy.cpl or System Information) but the browser cannot, the controller is likely presenting itself as a DirectInput-only device. Try switching to XInput mode if supported. If the OS cannot see it either, the issue is a driver or hardware problem that needs to be resolved at the system level first.

Additional resources

Guides

PlayStation Controller Test: DualShock 4 and DualSense Test a DualShock 4 or DualSense for analog stick drift, read the trigger axes, and document the result for a repair, with the model-specific notes for both PlayStation controllers in one place. Nintendo Controller Test: Switch Pro Controller and Joy-Con Drift Test a Nintendo Switch Pro Controller or Joy-Con for stick drift, read the trigger axes, and document the result for Nintendo's repair process, with the per-model notes for both controllers in one place. Third-Party Controller Test: 8BitDo, Logitech, PowerA and Razer Test an 8BitDo, Logitech, PowerA or Razer controller for stick drift, trigger range and button response, and see how each third-party pad presents itself to the browser Gamepad API. Xbox Controller Drift Test and Per-Model Notes Test an Xbox controller for analog stick drift across the Xbox 360, Xbox One, Xbox Series X/S and Elite Series 2, and see what each generation changes about the same test. Controller Deadzone Test and Calibration Guide Understand and calibrate your controller deadzone using live axis values. Learn how to match your deadzone setting to the specific game you are testing against. Controller Not Detected in Browser Fix a controller that is not showing up in your browser. Step-by-step troubleshooting for USB and Bluetooth gamepads on Windows, Mac, and Linux. Controller Trigger Test: Diagnosing LT and RT Issues Test your controller triggers in your browser. Diagnose triggers that do not register, do not reach full range, or do not return to zero after release. Flight Stick and HOTAS Test - Joystick Axis Calibration Guide Test your flight stick, joystick, or HOTAS in your browser using the Gamepad API. Read axis values, hat switch position, and throttle range without any software install.