A complete written walkthrough for getting your controller overlay onto a stream cleanly, covering both setup methods, what to do when each one goes wrong, and a short video reference if you would rather watch it done than read it.
If you would rather watch the setup happen step by step than follow written instructions, these two tutorials cover the same two methods this guide walks through below, chroma keying a window capture and running the viewer as a proper browser source. The first goes through both methods at a normal pace, the second is a much faster, condensed version if you already roughly know your way around OBS and just want the quickest possible path.
Both videos move quickly in places, particularly around the Color Key filter settings, so the written steps below go slower and explain what each setting is actually doing rather than just where to click.
There are two genuinely different ways to get this onto a stream, and which one suits you depends mostly on how much manual tweaking you want to do versus how much control you want over the result. Chroma key works by capturing your entire browser window and then telling OBS to treat one specific colour as invisible, which works in any version of OBS but means you are keying out a colour by eye and occasionally fighting a faint edge around the controller graphic. Running the page as a proper browser source skips that entirely, since the page's own transparent background comes through directly with no keying step needed at all, generally giving a cleaner result with less fiddling once it is set up correctly.
If you have never set up a browser source in OBS before and want the fastest path to something working, start with chroma key, since Window Capture is a source type every OBS install already has. If you want the cleanest possible result and do not mind one extra step the first time, go straight to the browser source method instead.
For a deeper walkthrough covering exact sizing for different canvas resolutions, multiple controller layouts, and the most common transparency failures in more depth than the steps above, the dedicated OBS Gamepad Overlay Guide goes considerably further.
Whichever method you used, do a full check before trusting it on a real broadcast rather than assuming it works because it looked right in the properties window. Press every button on your controller and move both sticks through their full range while watching the OBS preview specifically, not just the original browser tab, since those are two separate renders and a working tab does not guarantee a working OBS source. Switch away to a different scene and back, since some setups, particularly Browser sources with Shutdown source when not visible left checked, can fail to resume cleanly after being hidden.
If you are running co-op content with more than one controller, this single viewer setup only shows one at a time. The dedicated Multi-Controller Viewer is built specifically for showing two to four controllers simultaneously and is worth switching to entirely rather than trying to run several single viewer instances side by side.
Raise Smoothness slightly and lower Similarity a little at the same time, since a fringe usually means Similarity is set just high enough to leave a faint, half keyed border rather than a clean cut. Picking the background colour again with the eyedropper, clicking a spot further from any text or graphic edge, also helps.
Check that Shutdown source when not visible is unchecked in the Browser source's properties, then click the small refresh icon at the bottom of that same properties window. If that does not resolve it, try toggling Use hardware acceleration when available off under OBS Settings, Advanced, then fully restart OBS rather than just closing the properties window.
Click directly into the source's preview area in OBS, then press a controller button, since the Gamepad API needs that direct interaction to register its first input inside that specific embedded browser context.
This is most often caused by your controller simply not being connected yet when OBS loaded the scene, or by an OBS update changing its internal browser engine. Re-pressing a button on the controller, or re-entering the same URL into a fresh Browser source, resolves the large majority of cases.
If neither method is behaving the way this guide or the video describes, your specific OBS version seems to handle a setting differently, or you just want a second opinion before going live, reach out directly. A short description of what you are seeing, along with your OBS version and operating system, is normally enough to help track down what is going on.
info.gpadviewer@gmail.comSign in to your account