Putting a wheel on a live stream? Read the OBS wheel guide

Embed a spin wheel on your website

Type your entries, choose how visitors use the wheel, and copy one snippet. It works on any https page that accepts HTML, with no account, plugin or fee.

Set up your wheel

Add the entries, choose the controls, and check the preview.

1 Entries
2 to 100 entries, up to 80 characters each 4 / 100
2 Visitor controls
3 Look
Background
Wheel colors
5 seconds
Wheel title

Live preview

This is the wheel your visitors will use. Try a spin.

Interactive

Wheel by ChoiceSpin

4 entries · Click to spin Open the wheel on its own page

Copy the code for your site

Paste this into an HTML or embed block. The wheel resizes with your page.

Your entries are saved inside the code, not on our servers. Anyone who can see your page source can read them, so leave out private names, passwords and account details.

How to embed a spin wheel

Three steps, and the wheel is live on your page. You can come back and change it at any time.

  1. 01

    Add your entries

    Type 2 to 100 entries above, one per line. Pick the controls, colors and spin length.

  2. 02

    Spin the preview

    The preview runs the same wheel your visitors get, so a test spin here shows how it will behave on your page.

  3. 03

    Paste the code

    Copy the snippet into an HTML or embed block on your page, then publish the page as usual.

Where to paste the code

Most site builders have a block for HTML or embed code, but each one names it differently. On a page you write yourself, paste the snippet inside <body> where the wheel should appear. There is no script tag, stylesheet or API key to add.

WordPress

  1. In the block editor, type /html and pick the Custom HTML block.
  2. Paste the code, then update or publish the page.

In the classic editor, paste it on the Text tab. WordPress keeps embed code only from users allowed to post unfiltered HTML, normally Administrators and Editors. On WordPress.com it needs a paid plan with hosting features turned on.

Google Sites

  1. Click Insert, then Embed, then the Embed code tab.
  2. Paste the code, click Next, then Insert.
  3. Drag the box's edges until the whole wheel shows, then Publish.

Wix

  1. Click Add Elements, then Embed Code, then Embed HTML.
  2. Click the new element, choose Enter Code, paste, and click Apply.
  3. Drag the element's edges until the wheel fits.

In Wix Studio, the same element is under Add Elements, then Embed & Social, then Embed Code.

Squarespace

  1. Click Add block, choose Code, then click the pencil icon.
  2. Paste the code, set it to HTML and leave Display Source off.

Embed code runs on the Core, Plus and Advanced plans and the older Business and Commerce plans, but not on Basic. If the wheel is missing while you are logged in, check the page with Preview in Safe Mode.

Webflow

  1. Open the Add panel and drag a Code Embed element onto the page.
  2. Paste the code, then click Save & Close.

Code Embed needs a paid Workspace or Site plan.

Shopify

  1. Go to Online Store, then Pages, and open a page.
  2. Click Show HTML in the editor toolbar, paste the code and click Save.

To put the wheel in a theme section instead, open Edit theme, click Add section and choose Custom Liquid.

Notion

  1. Switch the output above to Direct URL and copy the link.
  2. In Notion, type /embed, choose Embed link and paste it.

Notion takes links only, so pasting the embed code does not work there.

Canvas LMS

  1. In the Rich Content Editor, choose Insert, then Embed.
  2. Paste the code into Embed Code and click Submit.

If your school has turned on Canvas's content security policy, an admin may need to add choicespin.com to its allowed domains.

Moodle

  1. In a Page resource or an HTML block, open the editor's Tools menu and choose Source code.
  2. Paste the code and save.

Forum posts remove embed code, and so does every area on sites with Content cleaning everywhere turned on.

When a plan strips out embed code, or a tool only takes a link, switch the output above to Direct URL. Pasted as a link or a button, it opens the same wheel on its own page.

Using the wheel in Google Slides or PowerPoint

Presentation apps do not run embed code, so the dependable way is a link. One click during the slideshow opens the wheel in a browser tab, ready to spin.

Google Slides

Select some text on a slide, choose Insert, then Link (Ctrl+K, or ⌘+K on a Mac), and paste the Direct URL. In present mode, click the link to open the wheel, spin it, then switch back to your slides.

PowerPoint

Select text or a shape, press Ctrl+K (⌘+K on a Mac) and paste the Direct URL. Click it during the slideshow to open the wheel in your browser. Microsoft retired its free Web Viewer add-in in December 2024. Paid add-ins from other companies can show web pages inside a slide, but we have not tested them.

Change the size

The code fills your content column up to 760 pixels wide, and the height follows the width.

Make it narrower

Change max-width:760px in the first line to a smaller width, such as 480px. The wheel shrinks with it and stays centered.

Keep it readable on phones

The min-height value stops the frame from getting too short on narrow screens: 460 pixels for a plain wheel, 560 with the Spin button and 760 when visitors can edit. Leave it in.

Builders that draw a box around embeds

On Wix, Google Sites and similar builders, the code sits inside a box you can resize. Drag the box until the whole wheel and the credit line show with no scroll bar.

What your visitors get

The embed runs the same wheel as ChoiceSpin itself, inside its own frame.

A fair spin

Every entry has the same chance on each spin. In modern browsers, Web Crypto random numbers pick the winner. See how the wheel picks.

Keyboard and screen readers

Visitors can focus the wheel and press Space or Enter to spin. Screen readers announce each result as it lands.

No cookies or tracking

The frame is sandboxed, so it cannot set cookies or save anything in the browser. It loads no ads and no analytics.

A light page

The code asks the browser to load the wheel only when a visitor scrolls near it, so the top of your page stays fast.

Control the wheel with JavaScript

The copied code works on its own. If you write your own page code, you can also start spins, change entries and read each winner through window messages, without loosening the frame's sandbox.

Start a spin and read the winner

Add <button id="spin-from-page" type="button" disabled>Spin</button> to your page, and put this script after the embed code. The wheel ignores commands until it sends ready, so the button stays disabled until then.

const frame = document.querySelector('iframe[src^="https://choicespin.com/e"]');
const spinButton = document.querySelector("#spin-from-page");

// Every message carries the same channel and version.
function send(action, extra = {}) {
  frame.contentWindow.postMessage(
    { channel: "choicespin.embed", version: 1, action, ...extra },
    "*"
  );
}

window.addEventListener("message", (event) => {
  if (event.source !== frame.contentWindow || event.origin !== "null") return;
  const data = event.data;
  if (data?.channel !== "choicespin.embed" || data?.version !== 1) return;
  if (data.event === "ready") spinButton.disabled = false;
  if (data.event === "spin-end") console.log("Winner:", data.winner);
});

spinButton.addEventListener("click", () => send("spin"));

Actions you can send

  • spin starts a spin
  • setEntries replaces the entries with an entries array of 2 to 100 strings
  • addEntry adds one entry string
  • removeWinner removes the latest winner
  • reset brings back the entries from the code

Events you receive

ready, spin-start, spin-end with winner and index, entries-changed and error. Each one also reports the current entry count.

Three rules to know

Send messages with "*" as the target, because a sandboxed frame has no origin you could name. The message still goes only to that one frame. When a message comes back, its origin reads "null", so trust it only when event.source is also the frame's window. The wheel listens only to the page that embeds it and answers a malformed command with an error event. Keep the generated sandbox and referrerpolicy attributes as they are: the wheel learns which page embeds it from the referrer, so a no-referrer policy switches messaging off.

If the wheel does not show up

Most problems come from where the code was pasted. Check these first.

The code shows up as text

It went into a normal text block. Delete it and paste it into an HTML, code or embed block instead.

An empty box

The wheel only loads on pages served over https. If your page address starts with http, or your plan strips embed code, use the Direct URL as a link.

The wheel is cut off

The embed box is too short. Drag it taller until the wheel, its buttons and the credit line all show. The frame alone needs at least 460 pixels, 560 with the Spin button and 760 when visitors can edit. The credit line adds about 30 more.

No sound

Check that Play a finish sound is ticked. Browsers only allow sound after a visitor has clicked or pressed a key inside the frame, so a spin started from your own code before that stays silent.

Common questions

Short answers before you add the wheel to a public page.

Is the embedded wheel free?

Yes. It costs nothing, needs no sign-up, and the same code can go on as many pages as you like.

How do I change the wheel after I embed it?

Build the new version here and replace the old code on your page. The entries are stored inside the code itself, so there is no account or saved copy to update.

Can visitors change my wheel?

Only their own copy. With Let visitors edit they can type new entries, and the Remove winner button or Remove each winner takes winners out. Nothing they do reaches your page or anyone else, and reloading brings back your entries.

Does the embedded wheel use cookies or track visitors?

No. The wheel runs in a sandboxed frame that cannot set cookies or store anything in the browser, and it loads no ads or analytics. Your entries are part of the code, so anyone who views your page source can read them.

How many entries can an embedded wheel have?

From 2 to 100 entries of up to 80 characters each. Because the entries travel inside the link, all of them together can use about 3,900 characters, or fewer in scripts such as Japanese. For bigger lists, weights or saved results, use the full ChoiceSpin wheel, which takes up to 2,000 entries.

Does the embedded wheel work on phones?

Yes. It fills the width of your content column and never gets shorter than 460 pixels, so the labels stay readable on small screens. Visitors spin it with a tap.

Can I remove the ChoiceSpin credit?

Yes. Untick Show a ChoiceSpin credit before you copy the code, or delete the credit line from the code afterwards. The wheel works the same either way.

Will the wheel page show up in Google instead of my page?

No. The wheel-only page is marked noindex, so it stays out of search results. Your page's own search visibility depends on its own content and settings.

Need more than 100 entries?

The full wheel takes up to 2,000 entries, with weights, images, saved wheels and a results history. Teachers can find classroom ideas in the teacher guide.

Open the full wheel