Viewer Counter
A small line with your live viewers: the Twitch, YouTube and Kick logos, each with its viewer count — or one total for all of them. Switch on Show unique chatters to add how many different people have written in your chat since the stream started.
Platforms: Twitch, YouTube, Kick
Action pack: needed — Stream UI - Backend saves the counts in Streamer.Bot, resets them, and keeps whether the widget is shown. See Who needs what.
How it works
- Viewers come from the platforms. Streamer.Bot regularly sends each platform's viewer count; the widget shows the latest one. A platform switched off on the Connection page is left out.
- Unique chatters adds 1 for each person's first message (Streamer.Bot's First Words event): one per viewer, whatever they write next. Ignored users and the broadcaster and bot accounts connected in Streamer.Bot are not counted.
- Every count is saved in Streamer.Bot, as persisted global variables, so a reload of
the browser source loses nothing — and your own actions can read them:
Variable Holds streamUi.viewers.twitch,.youtube,.kickEach platform's viewers streamUi.viewers.totalTheir total streamUi.firstChatters.twitch,.youtube,.kickEach platform's unique chatters streamUi.firstChatters.totalTheir total - Resets set the counts to 0, viewers and unique chatters both. By default each platform resets when your stream goes live there.
- Only the overlay that runs the actions writes them. Every other overlay follows the variables. → Which overlay runs the actions
The page
The widget's page works like a small app:
- Settings, Style and Controls, the tabs over the editor, switch what it shows.
- The Settings tab holds every setting in the main area. On the Controls tab, a column on the left lists the controls, the picked one's trigger list beside it, and the main area holds the manual controls.
- Widget preview, the panel against the window's right edge: the preview, the test buttons and the widget's own URL. The arrow at the top folds it to a slim rail. Drag its left edge to widen it, up to half the window; it keeps its width. Widget shows the widget in its position, cut from the canvas as your browser source draws it; On canvas, the whole canvas.
How to set it up
Connect Streamer.Bot and add the action pack
The counts are kept by the Stream UI - Backend action → Connection.
Choose what to show
Switch Merge platforms on for one total instead of each platform, and Show unique chatters on to add the chatters.
Check the reset triggers
The defaults reset each platform when it goes live. Add a trigger of your own — a command, a hotkey — to reset everything at once.
Update your browser source
Copy the overlay URL again into your browser source → Layout and browser source.
Settings
Display settings
| Setting | Default | Detail |
|---|---|---|
| Show platform icons | on | The platform logos and the speech icon. Off: the numbers alone. |
| Merge platforms | off (separate) | Off: each platform with its own icon and count. On: one count, the total, behind every platform's icon. |
| Show unique chatters | off | Adds a speech icon with the number of unique chatters, after the viewers. |
Controls
What shows, hides and resets the widget is on the widget page's Controls tab: Show, Hide and Reset in its column, each with its trigger list, and the manual controls in the main area.
Automated controls
Three trigger lists, picked like everywhere else in Stream UI: see Triggers and conditions.
- Show and Hide — none by default: show or hide the widget in every overlay.
- Reset — a Twitch, YouTube or Kick trigger resets that platform only. Any other trigger — a command, an OBS event… — resets every platform.
| Default trigger | Resets |
|---|---|
| Twitch › Stream Online | the Twitch counts |
| YouTube › Broadcast Started | the YouTube counts |
| Kick › Stream Online | the Kick counts |
Manual controls
First a Show / Hide button: one button, Hide while shown and Show while hidden,
with the Show / hide transition, read live: Viewer Counter: Shown or Hidden. Then
one tile per platform switched on, with its live counts (120 viewers · 14 chatters) and a
Reset button for that platform; then Reset all when more than one platform is on.
They are also in the controls window.
They need Streamer.Bot connected and the Backend action; the overlay follows at once.
Hidden, the widget keeps counting; once it has left, its room goes to the other widgets of
its position. It is kept in Streamer.Bot as streamUi.off.viewers.display (1 hidden):
your own actions can show or hide the widget by setting that persisted global variable.
Style
Each element follows the overlay style field by field: a field you change on the Style tab is the widget's own, with a reset arrow beside it. Each platform's icons and counts can also have their own look: pick it in Style for (not the merged total, nor the background around every platform). See Appearance.
| Element | Detail |
|---|---|
| Container | The widget's box, clear by default: it lines up the line on the widget's position. |
| Background | The box behind the whole line: each platform side by side (Direction), centred across, 14 px apart. Follows the overlay's Widgets background style. |
| Icons | The platform logos, each in its platform's colour, and the speech icon. Follows the overlay's Platform icons style. Listed while Show platform icons is on. |
| Counts | The numbers. Follows the overlay's Numbers style. |
| Show / hide transition | How the widget appears and leaves (Show / Hide). While you style it, the preview hides the widget and shows it again. |
Default position
Position Top right, automatic width, size 100 %. All of that is changed on the Overlay builder's Layout tab.
Streamer.Bot events it listens to
| Event | What it triggers |
|---|---|
Twitch.ViewerCountUpdate | The Twitch viewer count |
YouTube.StatisticsUpdated | The YouTube viewer count |
Kick.ViewerCountUpdate | The Kick viewer count |
Twitch.FirstWord, YouTube.FirstWords, Kick.FirstWords | A new chatter — +1. Only with Show unique chatters on |
| Your reset triggers | Sets the counts to 0 |
| Your Show and Hide triggers | Shows or hides the widget in every overlay |
Misc.GlobalVariableUpdated, Misc.GlobalVariableCreated | A count changed in Streamer.Bot — shows the new value; or the widget shown or hidden elsewhere |

