Fix controller connection issues on Windows, macOS, and Linux. Covers Xbox, PlayStation, Switch, and third-party gamepads with USB and Bluetooth troubleshooting.
If your gamepad isn't being detected by your computer or browser, this guide will help you identify and fix the problem. We cover every major controller type, operating system, and connection method with step-by-step troubleshooting.
Quick checks
Start by testing your controller using our online gamepad tester. Connect your controller and press any button.
Controller shows up in the tester: It's working — the issue is with a specific game or app
Controller doesn't appear at all: Continue with this troubleshooting guide
Important: Browsers require you to press a button or move a stick before they detect a gamepad. This is a privacy feature of the Gamepad API — simply plugging in isn't enough.
The Web Gamepad API is designed so that browsers only register a controller after a physical button press. This is an intentional privacy measure to prevent websites from fingerprinting connected devices.
Connect your controller via USB or Bluetooth
Open the gamepad tester page
Press any button on the controller (face buttons work best)
The controller should appear within a second
If you connected the controller after loading the page, try pressing a button — no need to refresh.
Before diving into software troubleshooting:
Try a different USB port — prefer rear ports on desktops (directly on the motherboard) over front panel ports
Avoid USB hubs — connect directly to your computer, especially for power-hungry controllers
Try a different cable — some USB-C cables are charge-only and don't carry data
Check for loose connections — push the cable firmly into both the controller and the computer
USB-C to USB-C cables are not all the same. If your controller came with a cable, use that one.
Browser issues
Browser support for the Gamepad API varies significantly:
Chrome / Edge: Best support. Recommended for gamepad testing. Supports vibration API.
Firefox: Good support. Sometimes detects controllers that Chrome misses on macOS.
Safari: Basic support added in recent versions, but less reliable than Chrome/Firefox. No vibration support.
Opera / Brave / Vivaldi: Based on Chromium — generally works like Chrome.
Tip: If your controller isn't detected in one browser, try another. This is the quickest way to determine if it's a browser issue or a system-level problem.
Check these browser-specific settings:
Chrome
Navigate to chrome://flags and search for "gamepad"
Ensure Restrict gamepad access is not enabled (or set to Default)
Some security extensions can block Gamepad API access — try in an incognito window without extensions
Firefox
Navigate to about:config and search for dom.gamepad
Ensure dom.gamepad.enabled is set to true
Check dom.gamepad.extensions.enabled for vibration support
Safari
Go to Safari → Settings → Advanced
Gamepad API support requires macOS Ventura or later
Safari may prompt for permission when a gamepad is first used
The Gamepad API only works when the browser tab is in the foreground and focused. If you switch to another window or tab, gamepad input is paused.
Make sure the gamepad tester tab is the active, focused tab
Click anywhere on the page to ensure it has focus
If the controller disconnects when you switch tabs, that's normal — it will reconnect when you return
Windows troubleshooting
First confirm Windows sees your controller:
Press Win + I to open Settings
Go to Bluetooth & devices → Devices
Look for your controller in the device list
You can also check via the classic Game Controllers dialog:
Press Win + R, type joy.cpl, press Enter
Your controller should appear in the list
Select it and click Properties to test buttons and axes
If Windows doesn't see the controller at all, the issue is with the connection or drivers — not the browser.
Check Device Manager for driver issues:
Press Win + X → Device Manager
Expand Human Interface Devices or Xbox Peripherals
Look for your controller — a yellow warning icon means driver problems
To fix driver issues:
Right-click the device → Update driver → Search automatically
If that fails: right-click → Uninstall device → disconnect and reconnect the controller
For PlayStation controllers: no official Windows driver exists — Windows uses generic HID drivers
Xbox controllers are notoriously finicky with Bluetooth on Windows:
Old Bluetooth adapters: Xbox controllers require Bluetooth 4.0+ with Low Energy support. Older adapters won't work.
Xbox Wireless vs Bluetooth: Xbox controllers have two wireless modes. The Xbox button blinks fast for Xbox Wireless (needs Xbox Wireless Adapter dongle) and blinks slow for Bluetooth. Hold the pair button for 3 seconds to enter Bluetooth pairing mode.
Firmware updates: Update your controller firmware via the Xbox Accessories app — older firmware can cause Bluetooth disconnections
Preferred fix: Use USB for the most reliable connection. If you need wireless, consider the official Xbox Wireless Adapter over Bluetooth.
To pair a Bluetooth controller on Windows:
Put your controller in pairing mode (usually hold the pairing/sync button until the light blinks rapidly)
Open Settings → Bluetooth & devices → Add device
Select Bluetooth (not "Everything else")
Wait for your controller to appear and click it to pair
If pairing fails:
Remove the controller from your paired devices list and try again
Turn Bluetooth off and on again in Settings
Restart the Bluetooth Support Service: press Win + R, type services.msc, find Bluetooth Support Service, right-click → Restart
Check if Bluetooth is disabled in BIOS/UEFI (for desktops with add-in Bluetooth)
macOS troubleshooting
macOS has native support for certain controllers since macOS Catalina (10.15):
Xbox Wireless Controller: Bluetooth works natively on macOS Catalina+. USB works on macOS Ventura+ but may not work on older versions or in Chrome specifically.
PS4 DualShock 4: Fully supported via Bluetooth and USB
PS5 DualSense: Supported on macOS Monterey+ via Bluetooth and USB
Switch Pro Controller: Supported via Bluetooth on macOS Big Sur+
Switch Joy-Cons: Limited support — may appear as separate devices
Known issue: Some USB controllers (especially Xbox) are not detected in Chrome on macOS. Try connecting via Bluetooth or using Firefox instead. This is a Chromium bug that has persisted for years.
macOS may require explicit permission for browsers to read gamepad input:
Open System Settings → Privacy & Security
Look for Input Monitoring (or Accessibility on older macOS)
Ensure your browser (Chrome, Firefox, Safari) is listed and enabled
If it's not listed, you may need to add it manually using the + button
After changing permissions, you may need to restart the browser for changes to take effect.
Put the controller in pairing mode
Open System Settings → Bluetooth
The controller should appear under "Nearby Devices"
Click Connect
Controller-specific pairing modes:
PS4/PS5: Hold Share + PS button until the light bar flashes rapidly
Xbox: Hold the pair button (top of controller) for 3 seconds until the Xbox button blinks rapidly
Switch Pro: Hold the sync button (top of controller) until the lights cycle
If the controller previously paired with a console, it may try to reconnect to the console instead. Turn off the console or unpair the controller from it first.
Linux troubleshooting
Most modern controllers work on Linux with built-in kernel drivers. Verify detection:
Connect your controller and run lsusb to check if it appears
Check dmesg | tail -20 for connection messages right after plugging in
Look for /dev/input/js* or /dev/input/event* devices
Use jstest /dev/input/js0 to test button and axis input directly
Install jstest-gtk for a graphical testing tool if the web tester isn't detecting your controller.
Linux controller driver options:
xpad (built-in): Default kernel driver for Xbox controllers. Loaded automatically. Works with Xbox 360, Xbox One, and Xbox Series controllers via USB.
xone: Community driver for Xbox One/Series wireless dongle support. Install from github.com/medusalix/xone
PlayStation: PS4 and PS5 controllers work with the built-in hid-sony and hid-playstation kernel modules
Steam: If you have Steam installed, its controller support can interfere with browser detection — try closing Steam
If the controller is detected by the system but not by the browser:
Check device permissions: ls -la /dev/input/js*
Add your user to the input group: sudo usermod -aG input $USER (log out and back in)
Install udev rules for your controller. For Steam users, Steam's udev rules (usually at /usr/lib/udev/rules.d/70-steam-input.rules) cover most controllers
For Snap/Flatpak browsers, ensure the browser has permission to access input devices
Controller-specific issues
Xbox Series X|S controller
USB: Works on Windows and Linux immediately. On macOS, use Ventura+ or try Bluetooth instead.
Bluetooth: Works on all platforms. Make sure the controller firmware is updated — early firmware had Bluetooth bugs.
Xbox Wireless: Requires the official Xbox Wireless Adapter. Only works on Windows.
Xbox One controller
Revision 1 (2013 model, no 3.5mm jack) has no Bluetooth — requires USB or Xbox Wireless Adapter
Revision 2+ (2016 and later, with 3.5mm jack) supports Bluetooth
Xbox 360 controller
Wired: Plug and play on Windows. On macOS, requires third-party driver (e.g., 360Controller). On Linux, uses the xpad kernel module.
Wireless: Requires the Xbox 360 Wireless Gaming Receiver (not Bluetooth). Windows only with official drivers.
PS5 DualSense
USB: Works on all platforms with no driver needed
Bluetooth: Hold Share + PS button for 3 seconds to enter pairing mode (light bar flashes blue)
Adaptive triggers and haptic feedback are not available via browser — only basic button/stick/trigger input
PS4 DualShock 4
Widely compatible — works via USB and Bluetooth on all major platforms
Light bar color may not change when connected to PC (this is normal)
On Windows, some games require DS4Windows software for XInput emulation, but browser testing works natively
Bluetooth: The DS3 uses a non-standard Bluetooth protocol — it doesn't pair like modern controllers. Needs special software.
On Linux, the hid-sony module provides basic support via USB
Switch Pro Controller
USB: Works on Windows and Linux. On macOS, supported on Big Sur+.
Bluetooth: Hold the sync button on top until the green lights cycle. Works on all platforms.
Some browsers may misidentify the button layout — use the controller type override if labels are wrong
Joy-Cons
Each Joy-Con connects as a separate device via Bluetooth
Hold the sync button (between SL/SR) on each Joy-Con until the lights cycle
Browser support is limited — Joy-Cons may appear as generic controllers with unusual axis mappings
No built-in way to combine two Joy-Cons into a single virtual controller in the browser
8BitDo controllers: Many 8BitDo controllers have switchable input modes (XInput, DInput, Switch, macOS). Use XInput mode for best browser compatibility. Check the manual for the correct button combination (usually hold Start + X for XInput).
GameSir controllers: Similar to 8BitDo — check for XInput mode. Some models have a physical switch on the back.
Logitech F310/F710: Has a physical DInput/XInput switch on the back. Set it to X (XInput) for browser detection.
Generic/unbranded controllers: These often use DInput protocol which has inconsistent browser support. You may see a "non-standard mapping detected" warning. Buttons may not match expected labels.
Racing wheels and flight sticks: May be detected but with unusual axis mappings. The browser treats them as generic gamepads.
DInput vs XInput: XInput is the modern standard used by Xbox controllers and most PC games. DInput is an older protocol. Browsers handle XInput controllers more reliably. If your controller has a mode switch, always use XInput.
Connection type issues
If your USB controller isn't detected:
Disconnect and reconnect the cable
Try a different USB port (USB-A if available, as USB-C adapters can be unreliable)
Try a different cable — some USB-C cables don't support data transfer
Check if the controller charges via USB (light turns on) — if yes, the cable works for power but may not for data
Try connecting to a different computer to rule out a controller issue
USB-C specifics
Use a cable that supports USB 2.0 data (most do, but cheap cables may not)
If using a USB-C to USB-A adapter, make sure it's a quality one
Some USB-C docking stations may not pass through gamepad data — try a direct connection
General Bluetooth troubleshooting for all controller types:
Remove and re-pair: Delete the controller from your Bluetooth devices and pair it again from scratch
Check battery: Low battery can cause intermittent disconnections and failed pairing
Distance: Stay within 3 meters of your computer during initial pairing
Interference: Move away from other Bluetooth devices, USB 3.0 devices (they emit RF interference on 2.4GHz), and Wi-Fi routers
One controller at a time: If pairing fails, disconnect all other Bluetooth controllers first
Reset the controller: Most controllers have a small reset button (usually a pinhole on the back)
Tip: If Bluetooth is unreliable, USB is always more stable. Use Bluetooth only when you specifically need wireless.
Xbox Wireless Adapter: Windows only. Install the latest driver from Windows Update. The adapter can connect up to 8 controllers simultaneously.
PlayStation dongles: Some third-party Bluetooth dongles specifically designed for PS controllers exist but aren't needed — standard Bluetooth works.
8BitDo USB adapter: Works as a standard Bluetooth adapter. Switch to XInput mode for browser compatibility.
Generic 2.4GHz dongles: Controllers that come with their own USB receiver typically work as plug-and-play on Windows, but may need drivers on macOS/Linux.
Software interference
Some software takes exclusive control of controller input, preventing the browser from seeing the gamepad:
Steam: Steam's controller support can intercept gamepad input even when you're not playing a game. Close Steam entirely or disable Steam Input in Settings → Controller → General Controller Settings.
DS4Windows: This tool creates a virtual Xbox controller from a PS4/PS5 controller. While running, the browser may not see the original device. Close DS4Windows to test natively.
reWASD / x360ce / AntiMicroX: Any remapping or emulation software can intercept input. Close all such tools before testing.
Virtual controller drivers: Software like ViGEmBus can create virtual gamepads that confuse detection. Check Device Manager for phantom HID devices.
When troubleshooting, simplify your setup:
Disconnect all other controllers and test with only one
Some systems have a limit on concurrent Bluetooth devices — try disconnecting other Bluetooth accessories
If a "ghost" controller appears after disconnecting, refresh the page to clear stale state
Still not detected?
If you've tried everything above:
Test on another computer to determine if the controller itself is faulty
Test with a different controller on your computer to rule out a system-level problem
Update your operating system — OS updates often include improved controller support
Update your browser to the latest version
Try USB if using Bluetooth (or vice versa) — one connection method may work when the other doesn't
Check the manufacturer's website for firmware updates or known issues
Once your controller is connected, head to our gamepad tester to verify that all buttons, sticks, and triggers are working correctly and to check for stick drift.