Alessandro Vettorel80 downloadsAn interactive spinning wheel with sounds, to randomly pick from a list of options.
An interactive, customizable spinning wheel for Obsidian. Pick a random item from a list — for decisions, giveaways, classroom picks, prize draws, or just for fun — right inside your vault.



🍕 Pizza) — they render correctly on Windows, macOS and Linux, and independently of whatever font you pick.main.js, manifest.json) from the Releases page.spin-the-wheel inside your vault's .obsidian/plugins/ directory.main.js and manifest.json into that folder.git clone https://github.com/<your-username>/spin-the-wheel.git
cd spin-the-wheel
npm install
npm run build
Then copy the resulting main.js, together with manifest.json, into <your-vault>/.obsidian/plugins/spin-the-wheel/.
For active development, use npm run dev instead — it rebuilds main.js automatically on every save.
Ctrl/Cmd+P), or via the ribbon icon.If you'd rather manage your options from a normal note (so you can edit it like any other file, or generate it with other plugins/scripts), set "Source file" in the settings to the path of a .md file in your vault. The plugin will read one option per line from that file and use it instead of the manual list. Leave it empty to use the manual list.
| Setting | Description |
|---|---|
| Options (one per line) | The manual list of options, used when no source file is set. |
| Source file (optional) | Path to a note in your vault to read options from instead, one per line. |
| Joker option | If set, must exactly match one of the current options. Landing on it doesn't count as a result — the wheel spins again automatically, in the direction chosen next to it (independent of the main spin direction toggle). Shows a live ✅/⚠️ validation hint while the wheel is open. |
| Spin duration (seconds) | How long a spin lasts, 2–20 seconds. Also adjustable live from the wheel view. |
| Spin force | 1–10. Controls how sharp the start is and how long the braking phase lasts. Also adjustable live from the wheel view. |
| Pointer color | Color of the arrow that marks the winning slice. |
| Wheel font | Font used for the option labels drawn on the wheel, picked from a curated dropdown (Arial, Verdana, Segoe UI, Trebuchet MS, Georgia, Times New Roman, Courier New, Impact, Comic Sans MS, or the plugin's default). |
| Wheel font size | Maximum size (10–32px) of the option labels. Automatically shrinks further when there are many options. |
| Wheel text color | Color of the option labels drawn on the wheel. |
| Wheel colors (start) | Starting color of the gradient used to fill the wheel's slices. |
| Wheel colors (end) | Ending color of the gradient used to fill the wheel's slices. Every slice gets a shade blended between the start and end colors. |
| Reset colors | Restores the start/end gradient colors to the default "rainbow" look. |
| History columns | How many columns (1–3) the spin history grid is displayed in. |
| History size | How many past spins (1–20) are kept and shown in the history. |
| Winner text size | Font size (px) of the winner announcement text. |
| "Spinning.../Removed:" text size | Font size (px) of the transient status text shown while spinning or right after removing a winner. |
| Start button text size | Font size (px) of the label on the main Start button. |
| Direction button size | Font size (px) of the ↻/↺ direction button. |
| Secondary button text size | Font size (px) of the "Remove winner" and "Reset list" buttons. |
| Slider label text size | Font size (px) of the "Spin force: N" / "Spin duration: Ns" labels. |
| Fireworks on winner | Toggles the firework particle effect and the blinking result text when the wheel stops. |
| Enable sounds | Master switch for all sound effects. |
| Ticking while spinning | Toggles the "tick" sound played every time a slice boundary crosses the pointer. |
| Tick volume | Loudness of the tick sound, 0–100. |
| Final sound volume (Ding) | Loudness of the sound that announces the result, 0–100. |
| Custom spin sound (tick) | Path to an audio file in your vault to replace the built-in tick sound. Leave empty for the default. |
| Custom winner sound (ding) | Path to an audio file in your vault to replace the built-in ding sound. Leave empty for the default. |
sounds/ folder.sounds/tick.mp3) in "Custom spin sound (tick)" and/or "Custom winner sound (ding)".If the path is invalid or the file can't be found, the plugin automatically falls back to the built-in sound instead of staying silent.
<li> itself is display: flex. The flex layout now lives on an inner wrapper instead, so the numbering is back while the single-line "name (fits with an ellipsis) + time (never truncates)" layout is preserved.Issues and pull requests are welcome. Please open an issue first for significant changes, so we can discuss the approach.
MIT © Alessandro Vettorel