This is the maddening one. Windows sees the controller, the lights are on, the drivers are installed, and yet the game does nothing when you move the sticks. Because the controller clearly "works," people waste hours re-pairing it and reinstalling drivers when the real problem sits in the software layer between the controller and the game. Here's how to find and fix it, in order.
Fix 1: Prove the controller itself is fine
Before touching any game setting, confirm the hardware and connection genuinely work, because it decides where you look next. Open a browser button test and press buttons and move the sticks.
If the tester responds, the controller, cable, drivers, and connection are all fine, and the problem is entirely inside the game or its launcher. Everything below applies. If the tester shows nothing, your problem is actually upstream in the connection, not the game, and you should troubleshoot detection first. Assuming the tester reacted, continue.
Fix 2: Toggle Steam Input
Steam Input is the single most common reason a working controller does nothing in a game, and it cuts both ways: some games need it on, others break when it's on.
Steam Input intercepts your physical controller and hands the game a virtual, remappable one instead. Configured right, it's great. Misconfigured, or fighting a game that reads controllers its own way, the game sees nothing usable. To toggle it: in Steam, right-click the game > Properties > Controller, and switch "Override for [game]" between "Enable Steam Input" and "Disable Steam Input," relaunching each time. Try both. This one setting resolves a large share of dead-controller-in-game reports.
Rule of thumb: games with native controller support (most big modern titles) often work best with Steam Input disabled so they read the pad directly, while older games or ones with no built-in controller support need it enabled. When unsure, flip it and relaunch.
Fix 3: Check the game's own controller settings
Plenty of games have an in-game controller toggle or an input-mode setting that must match your pad. Dig into Options > Controls or Input and look for a master "enable controller/gamepad" switch that might be off, an input-device selector where you pick "controller" over "keyboard," or a controller-type setting. Some games default to keyboard-and-mouse and ignore a controller until you explicitly enable it, and a few apply the change only after a restart, so relaunch after adjusting.
Fix 4: Understand XInput vs DirectInput
This is the technical root of a lot of controller trouble. Modern games speak XInput, the standard Xbox controllers use. Older games use the legacy DirectInput standard. A controller presenting only as DirectInput is invisible to an XInput-only game, and vice versa.
Xbox controllers are natively XInput, which is why they "just work" most often. PlayStation and Switch controllers aren't XInput by default, which is exactly why tools like DS4Windows and Steam Input exist: they translate a PlayStation or Switch pad into a virtual Xbox controller the game understands. So if a game refuses your DualSense but takes an Xbox pad fine, you've found an XInput-only game, and enabling Steam Input (or DS4Windows) to emulate Xbox input is the fix.
Fix 5: Kill double inputs and conflicts
If your controller does something but wrong, like every button firing twice or menus scrolling on their own, two input layers are active at once. This happens when Steam Input and a separate mapper (DS4Windows, third-party software) both feed the game, or when the game reads both the raw controller and the emulated one.
Collapse to a single input path: use Steam Input alone (close the other mapper) or the mapper alone (disable Steam Input for that game). To force it, hide the physical controller so only the emulated one gets through, using DS4Windows' hide toggle or the more persistent HidHide. Keeping the input chain lean also matters for responsiveness, which our input lag optimization guide covers from the performance side.
Fix 6: Handle the Epic and non-Steam launcher wrinkle
Games launched outside Steam don't get Steam Input, which changes everything. An Epic Games Store, GOG, or standalone game relies on its own native controller support plus whatever Windows and any mapper provide. So if your controller works in Steam games but not Epic games, that's the tell: you were leaning on Steam Input, and the Epic version has nothing translating your non-Xbox pad. Two fixes: use an Xbox controller for the Epic game, since it's XInput-native and needs no translation, or run DS4Windows (for PlayStation pads) to emulate an Xbox controller system-wide. You can also add the Epic game to Steam as a non-Steam game to borrow Steam Input, though results vary.
Fix 7: Sort out the player-order trap
One overlooked cause: the game is reading a different controller than the one in your hands. If you have more than one controller connected, or a virtual controller (from DS4Windows, a wheel, or a capture device) that Windows counts as a gamepad, the game may listen to "player one" while your real pad is player two. Disconnect everything except the controller you want, close background apps that create virtual controllers, and relaunch. In games with a controller-slot screen, make sure your pad is assigned to the active slot. This bites hardest on setups with a wheel, HOTAS, or capture card permanently plugged in.
Fix 8: Clean up conflicting software
If the controller works in the tester and some games but erratically in others, leftover or conflicting software is the likely cause. Close controller utilities you're not actively using, since running DS4Windows, a game's own remapper, and Steam simultaneously invites conflicts. If you've installed and uninstalled controller tools repeatedly, a clean reinstall of the one you actually use rebuilds its virtual drivers correctly. For controllers misbehaving specifically after a Windows update, recalibrating through the OS can help; our hardware calibration guide covers resetting the controller configuration.
When button prompts are wrong but the controller works
A related symptom worth naming: the controller works, but the game shows the wrong button prompts (Xbox icons for your PlayStation pad, or vice versa). This isn't a fault and doesn't stop the controller functioning, but it's confusing enough that people think something's broken. It happens because a translation layer is presenting your pad as a different type than it physically is, most often Steam Input or DS4Windows emulating an Xbox controller. Many games have a controller-icon or button-layout setting to force the prompts you want, and toggling Steam Input can also flip them. If the inputs land correctly and only the on-screen icons are wrong, you don't have a connection problem at all, just a cosmetic mismatch.
Confirm and move on
Once the game responds, do a final check so you don't hit a different wall mid-session. Run the sticks through the joystick calibration page to confirm they read cleanly, since a controller that works but drifts will feel broken in-game for reasons that have nothing to do with Steam Input. If everything reads clean and the game responds, you're done.
The short version
Test the controller first: if the browser tester reacts, the problem is 100% software. Then flip Steam Input on or off and relaunch, because that fixes most cases. Check the game's own controller toggle. Remember that PlayStation and Switch pads need something translating them to XInput for many games, which is why Epic and other non-Steam launchers often need DS4Windows or an Xbox pad. Collapse to a single input layer to kill double inputs, and rule out the player-order trap. Diagnose in that order and you'll rarely need anything else.
Frequently Asked Questions
Q: My controller works in Windows but not in my game. Why?
Q: Should Steam Input be on or off?
Q: Why does my PlayStation controller work in Steam games but not Epic games?
Q: What causes double inputs where every button presses twice?
Q: How do I know if it's the game or the controller?
Free Online Gamepad Tester
Test your controller for drift, deadzones, and input lag â no download required.
Launch Tester â