# Set up a spin wheel in OBS

> A wheel in your scene that you, your mods or your chat can spin.

published: 2026-10-19 | updated: 2026-10-19 | source: https://twitch-overlays.coding-freaks.com/en/guide/spin-wheel-in-obs

The [prize wheel](https://twitch-overlays.coding-freaks.com/en/overlays/prize-wheel) is a spin wheel overlay for OBS. You or your mods spin with `!drehen` in chat or with a button in an OBS dock, and viewers can spin with channel points if you want. For a giveaway, viewers add themselves with `!mitmachen`. It is free and needs no account. You only need a bot for channel points. Every command has an English twin that works the same way: `!spin`, `!wheel`, `!giveaway` and `!join` next to `!drehen`, `!rad`, `!verlosung` and `!mitmachen`.

## 1. Set it up in the Config Hub

Open the [Config Hub](https://twitch-overlays.coding-freaks.com/en/setup/), pick the Zufallsrad (the prize wheel), enter your Twitch channel and click Next. Tick the terms of use, choose a folder and save. The hub writes `widget.html` and `config.js` to the `games/zufallsrad` folder. It needs Chrome or Edge.

## 2. Add it as a browser source in OBS

In OBS click the plus under Sources, then Browser. Tick Local file, choose the `widget.html` in the `games/zufallsrad` folder, width 1920, height 1080, OK. At the end the hub asks whether you went this way or pasted the address into the URL field, and gives you the finished `file:///` address to copy for either. Out of the box the wheel only appears to spin and is invisible in between. `!rad` shows it for good, `!rad aus` hides it again. If any of these moves trips you up, the [general guide to browser sources](https://twitch-overlays.coding-freaks.com/en/guide/set-up-twitch-overlay-in-obs) walks through them in detail.

## 3. Bring in your entries from a spreadsheet

In the hub, on the Zufallsrad, go to Content from a spreadsheet, click Import, then get the template. It is an Excel file with the columns Entry, Weight, Wheel and Colour and two sample wheels. Entry is what shows on the wheel. Weight is empty or a number: 2 means twice the space on the wheel and twice as often. Colour is optional, as `#rrggbb`. Fill it in, save as .xlsx or .csv and pick it under Upload file. The hub shows which rows it recognised before anything is saved, then writes them to `felder.js` next to the overlay. Duplicate rows within one wheel are removed on the way, the same entry in two wheels stays in both. To make an entry come up more often, use the Weight column instead of a second row.

## 4. Several wheels in one source

The Wheel column splits your entries into several wheels. Every name in that column becomes a wheel of its own, for example Next game and Forfeits. Rows without a name go to the wheel called My wheel. On stream you switch with `!rad forfeits` or in the control panel. The name does not have to be exact, `!rad forf` finds Forfeits too. There is no switching while a spin is running.

## 5. Spin from chat

`!drehen` spins the active wheel, `!drehen forfeits` a particular one. Out of the box only you and your mods can use it, otherwise chat would spin it every second. Turn on Viewers can spin in the hub and anyone can, with a cooldown per viewer. The result stays large under the wheel for 8 seconds. With a bot that can write to chat, it can go to chat as a message too. If a mod types `!drehen` while the wheel is still turning, nothing happens. Who may spin and what the commands are called is set in the hub under All settings of this overlay, in the Commands block.

## 6. Run a giveaway with !mitmachen

`!verlosung 60` opens a giveaway for 60 seconds. The wheel shows the command and a clock. Every viewer who types `!mitmachen` in that time lands on the wheel once, a second `!mitmachen` does not count. Because the stream runs a few seconds behind chat, the wheel still takes late entries for 5 seconds after the clock runs out. Then it spins on its own and the winner appears large underneath. The winner comes off the wheel right away: while the name is still shown large under the wheel, another `!drehen` draws the next winner from the remaining names. After that the wheel you had selected before the giveaway is back, and a later draw works with `!drehen giveaway`. Channel points never spin the giveaway wheel: a redemption during the giveaway waits and then spins your selected wheel. `!verlosung zu` closes the giveaway at once, `!verlosung abbrechen` cancels it without a spin. If the wheel should not spin on its own after the clock, turn off Spin on its own afterwards in the hub.

## 7. Spin with channel points

Viewers can spin themselves with Twitch channel points. That needs a bot connected to your Twitch account that passes the redemption on to the overlay: [Streamer.bot](https://streamer.bot/), [StreamElements](https://streamelements.com/) or [Firebot](https://firebot.app/). An overlay in OBS cannot sign in to Twitch on its own. Create a reward in your Twitch dashboard, for example Spin the wheel. In the [Config Hub](https://twitch-overlays.coding-freaks.com/en/setup/) pick your bot and enter the reward's title under Channel points, spelled exactly as on Twitch. It then spins the currently selected wheel. For several rewards, or one that spins a particular wheel, the `config.js` in the overlay's folder holds a ready-made `channelPointsTriggers` example to uncomment, along with `channelPointsSource` for your bot. There, `command: '!drehen forfeits'` makes a reward spin one particular wheel. Every redemption is one spin. If a spin is running, the redemption waits in a queue until its turn, none get lost. Twitch only offers channel points to affiliates and partners.

## 8. Add the control panel as an OBS dock

The most comfortable way to spin needs no chat. The control panel is a second page next to the overlay, the `host.html`, and it goes into the OBS window as a dock instead of into a scene. Enter the path of your folder once in the OBS step of the hub, and the finished address for the control panel appears there. In OBS open Docks in the top menu bar, then Custom Browser Docks (up to OBS 29 under View), enter a name, paste the address, Apply. In the panel you spin, switch wheels, edit entries, open a giveaway and take a winner off the wheel. Do copy the address from the hub: the dock and the source only find each other when both addresses have the same form.

## Frequently asked

### Can I run a giveaway with a spin wheel on Twitch?

Yes, Twitch allows giveaways, but as the promoter you are solely responsible: for the official rules, picking winners, the prizes and making sure the giveaway is legal where you are. Twitch also requires you to show or read out a fixed disclaimer when you promote or run it: “This is a promotion by [Your Name]. Twitch does not sponsor or endorse this promotion and is not responsible for it.” That is section 8d, Promotions, of the [Twitch Terms of Service](https://legal.twitch.com/en/legal/terms-of-service/) (retrieved 19 October 2026). The wheel only draws the name. Post the rules, such as who may enter and how the winner has to get in touch, in your panel or in chat beforehand.

### Is the spin wheel in OBS really random?

Yes. Before the wheel starts moving, the overlay draws the result with `crypto.getRandomValues`, the browser's random number generator. Every entry gets picked in proportion to its share of the wheel. The spin only shows the result that was drawn. If the source sits in two scenes, both show the same spin.

### Do I need a bot?

Not for spinning, giveaways or the control panel, the wheel reads your Twitch chat directly. You only need a bot such as Streamer.bot, StreamElements or Firebot if viewers should spin with channel points or the result should appear as a chat message.

### How do I give one entry better odds?

With the Weight column in the spreadsheet. A 2 gives the entry twice the space on the wheel and twice the chance, a 3 three times. Adding the same entry twice to one wheel does not help, the import removes duplicate rows.

### What happens to channel point redemptions while the wheel is spinning?

They queue up. The prize wheel keeps every redemption in a line, shows under the wheel how many are waiting, and spins them one after another. The queue even survives a refresh of the source in OBS.
