Dynamic On-Screen Voting

Platforms
YouTubeKickTwitch
Software
StreamlabsMeld StudioOBS Studio
Overlay Available Browser Source Dock

Create on-screen polls with real-time vote bars, countdowns, and chat commands — fully controllable from a built-in dock with save/load support.

★★★★★★★★★★5.0(1 Review)
195Downloads
Dynamic On-Screen Voting

Download Dynamic On-Screen Voting

Click the button below to download Dynamic On-Screen Voting! If you find it useful, consider leaving a tip to support development.

Ko-fi

This Streamer.bot extension adds fully dynamic on-screen voting to your stream. Start a poll from chat or from the dock, let viewers vote with !vote, and watch the bars fill in live. Polls can be saved and reloaded at any time, so your favorite recurring votes are always one click away.

How Dynamic Voting Works

The extension has two components:

  1. Overlay — A transparent browser source that shows the poll on stream. Displays the question, each option with an animated fill bar and live vote count, a countdown timer, and the total votes cast.
  2. Dock — A control panel you can add to OBS, Meld, or SLOBS. Build a new poll from scratch, set the duration and max votes per viewer, or load a saved poll. You can also end a running poll early from the dock.

Customizing the Overlay URL

https://www.mustachedmaniac.com/widgets/Dynamic_Voting

Live Preview

ParameterExampleDescription
host192.168.1.1Only needed if your Streamer.bot WebSocket address is not 127.0.0.1
port8118Only needed if your Streamer.bot WebSocket port is not 8080
endpoint/stuffOnly needed if your Streamer.bot WebSocket endpoint is not /
passwordmYp@$$Only needed if you have authentication enabled on your WebSocket server
alignleftPosition of the poll panel — left, center, or right (default: center)
fontRobotoAny Google Font name (default: Plus Jakarta Sans)
fontColor#ffffffText color for option labels and the footer (default: #ffffff)
progressColor#7c6af7Fill color for the vote bars (default: #7c6af7)
bg#0f0f11Background color of the option cards and footer (default: dark near-black)
opacity80Background opacity as a percentage, 1–99 (default: 88)
shadowOnEnable a text shadow — On or Off. Pair with shadowColor and shadowBlur
shadowColor#000000Color of the text shadow (default: #000000)
shadowBlur8Blur radius of the text shadow in pixels, 0–50 (default: 8)
winnerDelay15Seconds to keep the winner on screen before hiding the overlay, 5–30 (default: 10)

Customizing the Dock URL

https://www.mustachedmaniac.com/widgets/Dynamic_Voting/dock
The dock URL also accepts host, port, endpoint, and password parameters — if your WebSocket server isn't on the defaults, add those to the dock URL as well.

Available Chat Commands

CommandDescription
!vote 1Cast a vote for option 1 (number matches the option's position in the list)
!startVoteStart a new poll with the current settings configured WITHIN Streamer.bot
!endVoteEnd the current poll early and show the winner (if any)
!saveVote [name]Save the current poll settings to the dock's saved polls list (requires a name)
listPollsList all saved polls in the dock with their assigned numbers for loading
!loadPoll [name] or !loadPoll [number]Load a saved poll from the dock's saved polls list
!deletePoll [name] or !deletePoll [number]Delete a saved poll from the dock's saved polls list

Streamer.bot Arguments

The following arguments are available when a poll starts or a vote is cast.

ArgumentTypeDescription
pollTitlestringThe poll question/title
pollOptionsjsonArray of option objects with prompt and voteCount
pollDurationintPoll duration in seconds
maxVotesPerViewerintMaximum number of times a single viewer can vote
pollOption1VoteCountintCurrent vote count for each individual option
totalMultiVotesintTotal votes cast across all options
winningMultiPollOptionstringVariable name of the winning option after the poll ends

Changelog