> ## Content Index
> Fetch the complete content index at: https://obsguides.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to add Twitch chat to OBS as an on-screen overlay
- URL: https://obsguides.com/twitch-chat-overlay-obs/
- Published: 2026-11-03T15:07:52.000Z
- Updated: 2026-11-10T15:02:37.000Z
- Description: Put a chat widget on the OBS canvas for viewers and keep a separate dock for reading. Follow the Browser-source setup, choose the right viewport and check a recording before going live.
- Author: Ryan Parker
- Tags: Streaming and overlays

Add a Browser source to your OBS scene and paste the widget URL from a chat provider such as Streamlabs or StreamElements. That puts Twitch chat on the canvas, so viewers see it with your game or camera. The Chat dock is a separate reading panel for you; opening it alone does not add chat to the stream.

I'd start with a hosted widget and OBS's built-in Browser source because this route needs no extra OBS plugin. Keep the dock beside the preview if you also want to read messages. A screen or window capture can pick up that panel, so check what your capture includes before treating chat as private.

[![OBS Studio 33 main window on Windows with a Chat dock beside the preview and a Chat overlay Browser source showing chat lines over the game](https://storage.ghost.io/c/1f/f4/1ff41619-63d0-4562-aeda-c43118aa7da0/content/images/2026/11/03-obs-studio-ui-twitch-chat-overlay-obs-0-2e4c2fdea9fe.webp)](https://storage.ghost.io/c/1f/f4/1ff41619-63d0-4562-aeda-c43118aa7da0/content/images/2026/11/03-obs-studio-ui-twitch-chat-overlay-obs-0-2e4c2fdea9fe.webp?ref=obsguides.com)

The Chat dock is a reading panel in the OBS workspace. A Browser source joins the scene sent to the output.

## Get the chat widget URL

Choose the route for the provider you use. You need Twitch connected to that provider and the correct channel selected. [Connecting Twitch in OBS](https://obsguides.com/connect-twitch-to-obs/) is a separate job: it gives OBS account access and docks, but does not configure a hosted chat widget.

Keep the stream stopped while copying addresses, and keep the provider dashboard and OBS Properties window out of any recording or screen share. [StreamElements treats overlay tokens as sensitive](https://support.streamelements.com/hc/en-us/articles/10474479981074?ref=obsguides.com) and warns against sharing the overlay URL publicly. Give support a description of the problem, not your widget address.

### Streamlabs Chat Box

1. Sign in to the Streamlabs dashboard and open **Chat Box** in the left navigation.
2. Under **Platforms**, include your connected Twitch channel. Set the style, font size and font color for your scene.
3. Use **Click to copy the Widget URL**. This is the address for the Browser source, not the address of the dashboard you are editing.

[Streamlabs' Chat Box instructions](https://support.streamlabs.com/hc/en-us/articles/52815318480283?ref=obsguides.com) include a Browser-source route for OBS, so you can [keep using OBS Studio without installing Streamlabs Desktop](https://obsguides.com/streamlabs-vs-obs/) or its OBS plugin. **Hide Message After** fades messages after a set time; **Always Show Messages** keeps them from fading. Leave optional chat notification sounds off while setting up the picture if you do not want new-message sounds in the output.

### StreamElements

Open Overlays, choose **Add New Overlay**, and choose the layout resolution. In the editor, use the blue plus and select **Stream Tools > Your Stream's Chat**. Size the chat box inside the layout, save the overlay, name it, then copy its URL with the link icon. The [StreamElements chat setup](https://support.streamelements.com/hc/en-us/articles/18771535988370?ref=obsguides.com) recommends a Custom theme and text shadow for readability.

A Streamlabs Chat Box is a chat widget page. A StreamElements overlay can be a whole layout with chat placed inside it. That difference decides the Browser source dimensions in the next step.

## Add a Browser source in OBS

In OBS 33, the Add Source dialog creates the source before opening its Properties. The [Browser source is included on Windows and macOS and in official Linux packages](https://obsproject.com/kb/browser-source?ref=obsguides.com). If your build has no Browser option, check which OBS package you installed before looking for a chat plugin.

1. Select the scene that should show chat in the **Scenes** dock.
2. Click **+** in the **Sources** dock. In the Add Source dialog, choose **Browser**.
3. Keep **Make source visible** checked and click **Add a new Browser**. OBS adds the source to the selected scene and opens Properties.
4. Leave **Local file** unchecked. Replace the sample address in **URL** with the widget URL you copied.
5. Set **Width** and **Height** for the widget layout, following the distinction below, then click **OK**.

Older OBS versions use a source-type list followed by **Create new**, a name field and **OK**. Both routes lead to the same Browser source Properties. Rename the finished source **Chat overlay** so you can find it among other web widgets.

[![OBS Studio 33 Add Source dialog on Windows with Browser selected, the Add a new Browser button and Make source visible checked](https://storage.ghost.io/c/1f/f4/1ff41619-63d0-4562-aeda-c43118aa7da0/content/images/2026/11/03-obs-studio-ui-twitch-chat-overlay-obs-1-754eb1349aeb.webp)](https://storage.ghost.io/c/1f/f4/1ff41619-63d0-4562-aeda-c43118aa7da0/content/images/2026/11/03-obs-studio-ui-twitch-chat-overlay-obs-1-754eb1349aeb.webp?ref=obsguides.com)

Choose Browser, keep Make source visible checked and click Add a new Browser; OBS then opens Properties.

### Choose the viewport, then leave unrelated fields alone

**Width** and **Height** start at 800 and 600\. They set the web page's viewport, the area in which it lays out messages. They do not change your stream resolution.

For a chat-only widget, choose the area you want the messages to fill: a narrower viewport wraps text into a column. For the default 1080p StreamElements layout, [set the Browser source to 1920×1080](https://support.streamelements.com/hc/en-us/articles/10474479981074?ref=obsguides.com) so the entire layout fits. If you built that overlay at another resolution, match that layout instead.

Keep the default **Custom CSS**. It makes the page body transparent, removes margins and hides overflow. Leave **Shutdown source when not visible** and **Refresh browser when scene becomes active** unchecked: unloading or reloading the page can interrupt message timers and clear chat. [Streamlabs specifically recommends leaving shutdown off](https://support.streamlabs.com/hc/en-us/articles/52815318480283?ref=obsguides.com) for Chat Box.

[![Lower OBS Browser source properties: default Custom CSS, Shutdown source when not visible and Refresh browser when scene becomes active unchecked](https://storage.ghost.io/c/1f/f4/1ff41619-63d0-4562-aeda-c43118aa7da0/content/images/2026/11/03-obs-studio-ui-twitch-chat-overlay-obs-2-38acedf620eb.webp)](https://storage.ghost.io/c/1f/f4/1ff41619-63d0-4562-aeda-c43118aa7da0/content/images/2026/11/03-obs-studio-ui-twitch-chat-overlay-obs-2-38acedf620eb.webp?ref=obsguides.com)

Leave both boxes unchecked to keep a scene change from unloading or refreshing the chat page.

The audio, custom frame-rate and page-permission fields can stay at their existing defaults for this setup. Their controls differ between browser builds; none is a substitute for the right URL and viewport.

## Position chat and keep the background transparent

Send a message in your Twitch channel's chat and look for it on the OBS canvas. Drag the source to place it, and drag a corner to scale it. For exact placement, select the source and open **Edit > Transform > Edit Transform**.

Resizing the viewport changes how the web page arranges messages. Scaling the source changes how large the entire rendered page looks. If a full StreamElements layout needs to match the canvas, **Edit > Transform > Fit to screen** fits that layout; stretching a small chat-only widget across the canvas usually makes the text needlessly large.

Put the chat source above the game or camera sources that would cover it. OBS follows the [order shown in the Sources dock](https://obsproject.com/kb/sources-guide?ref=obsguides.com): higher sources appear on top. Keep messages away from game information, captions and your camera frame.

A solid chat background comes from what the widget paints. Transparent body CSS cannot erase a background drawn inside the widget. Choose a background-free style or lower its background opacity at the provider, then use its font color, font size or text shadow to keep messages readable. I'd change those visible widget controls before adding CSS selectors, because custom rules depend on the provider's page structure.

To show the same chat in another scene, add the existing **Chat overlay** source there instead of creating another widget instance. This also avoids duplicate chat notification sounds if you enable them.

## Read Twitch chat in a dock

For your own reading panel, open **Settings > Stream**, choose **Twitch**, and use **Connect Account (recommended)**. Complete sign-in and save Settings. OBS loads the Chat dock for the connected channel. If you close it, turn **Chat** back on in the top-level **Docks** menu.

Account integration depends on the OBS build and display backend. In [OBS 33's native Linux Wayland path](https://github.com/obsproject/obs-studio/blob/33.0.1/frontend/oauth/TwitchAuth.cpp?ref=obsguides.com#L502-L511), Twitch account integration is disabled. When [account connection is unavailable](https://obsguides.com/obs-twitch-authentication-failed/), or you stream using a key, a Custom Browser Dock can serve as the reading panel if your build includes browser docks:

1. Copy the address of your Twitch channel's **Popout Chat** window.
2. Open **Docks > Custom Browser Docks**. Enter a name under **Dock Name** and paste that address under **URL**.
3. Click **Apply**, then arrange the new dock beside the preview.

If browser docks are also absent, keep Twitch chat open in a normal browser. A dock is a panel of the OBS workspace, so plan where you will read chat while playing on a single monitor. Showing chat over the game is a separate desktop arrangement from adding messages to the stream.

## Find where a blank, stale or delayed overlay stops

| What you see                               | Where to check                | Next action                                                                                     |
| ------------------------------------------ | ----------------------------- | ----------------------------------------------------------------------------------------------- |
| The dock has messages; the canvas does not | Widget URL and Browser source | Check the provider's channel, source visibility, dimensions and layer order.                    |
| Chat appears, then disappears              | Widget message lifetime       | Check Hide Message After and Always Show Messages.                                              |
| Chat clears on scene changes               | Browser page lifecycle        | Check shutdown and refresh-on-activation options.                                               |
| The canvas updates; viewers see it later   | Stream output and player      | Check OBS Stream Delay and compare the streamed picture, not just Twitch's separate chat panel. |

### Nothing appears on the canvas

Send a new message first. A widget with no recent messages can be transparent, and a fade timer can remove the evidence before you look at OBS. Confirm that the provider is reading the same Twitch channel as your dock, then check the source's eye icon, layer order and viewport.

If the source shows **Couldn't load that page!**, copy the complete widget address again. Use the widget's copy button rather than the dashboard address bar. After a Streamlabs API-token reset, every old widget URL must be replaced; [Streamlabs documents that consequence](https://support.streamlabs.com/hc/en-us/articles/115000090014?ref=obsguides.com), so a token reset belongs late in diagnosis, not at the start.

When the right address still draws nothing, turn off custom HTML or CSS in the provider's widget if you cannot account for those rules. As a later check on builds that show it, toggle **Settings > Advanced > Sources > Enable Browser Source Hardware Acceleration** and restart OBS. Streamlabs lists that as a widget-rendering fix. Restore the previous setting if it makes no difference.

### The style is old or messages clear between scenes

Save the widget's changes at the provider, then open Browser source Properties and click **Refresh cache of current page**. Expect a reload, so send a fresh message afterwards. If every scene switch clears chat, leave both shutdown and refresh-on-activation off. Whether old messages return after a reload depends on the widget; OBS does not promise to rebuild its history.

### Messages arrive late

Check **Chat Delay** in Streamlabs first: it controls when messages appear in that widget. If the message is already on the OBS canvas but the streamed picture is behind, inspect **Settings > Advanced > Stream Delay**. That delays the stream output containing the overlay. A current dock beside an older video frame is therefore not proof that the widget is slow.

## Check a recording before going live

Keep streaming stopped. Start a short local recording, send a few messages in your channel chat, wait for them to appear on the output canvas, and stop the recording. In [Studio Mode](https://obsproject.com/kb/obs-studio-overview?ref=obsguides.com), check **Program**, not only the scene you are preparing in Preview. Use **Transition** to send a prepared scene to Program before recording it.

Play the file back at the size your audience will watch. Confirm that the text is readable, chat appears once, and no widget URL or dashboard is visible. Switch scenes during the next short recording to check that chat stays where you intended. Once those checks hold, the overlay has reached the same canvas as your game and camera.