Decision Wheel
Add custom options and spin a colorful wheel to make random decisions. Animated CSS wheel with smooth deceleration.
Reviewed by Aygul Dovletova · Last reviewed
How to Use the Decision Wheel
- Add at least two options in the input field. Type an option and press Enter (or click Add) to drop it onto the wheel; repeat up to twenty options.
- Remove any option with the small "x" button on its tag in the list. The wheel redraws instantly so you can see the adjusted slice layout before spinning.
- Click Spin. The wheel rotates with a CSS cubic-bezier deceleration curve that mimics the physical spin-and-slow of a real wheel.
- Read the winner highlighted below the wheel. The winning option is chosen first algorithmically; the animation simply lands on it.
- Spin again to reroll, or edit the option list between spins for progressive rounds - knocking one finalist out each time.
What This Tool Does and How It Works
Under the hood, the wheel is not a physical simulation. When you click Spin, the component first calls Math.random(), multiplies by the number of options, and floors the result to pick an index - this is the winner. The animation then computes the target rotation angle that lands the winning slice under the indicator and applies it to the wheel via a CSS transform: rotate(N deg) with a three-to-four second transition and an ease-out curve. The pie-slice geometry uses conic-gradient() - a CSS function introduced with CSS Images Level 4 around 2018 - which produces cleanly colored sectors without any SVG or canvas drawing. Text labels are positioned with per-label absolute rotation and a counter-rotation so the words stay right-way-up regardless of where on the circle their slice sits.
Because the winner is chosen before the animation rather than during, every option has exactly equal probability - Math.random() is uniformly distributed, and the wheel visualization is cosmetic. The animation length, easing curve, and final landing angle are all chosen so that the outcome feels natural; they do not affect fairness.
When You Would Use the Decision Wheel
- Breaking a four-way tie on where to go for team lunch when nobody wants to be the one to pick.
- Randomly selecting a presenter to go first in a standup, hackathon demo, or classroom activity.
- Choosing which feature to ship this sprint out of a shortlist where the team is genuinely indifferent between candidates.
- Picking a charity to donate to, a movie to watch, or a recipe to cook when decision fatigue has set in.
- Running party or birthday games where a randomized picker replaces drawing names out of a hat.
- Teaching children about probability - the wheel is a vivid visual demonstration of "each option is equally likely" when slice sizes are equal.
Common Pitfalls and Edge Cases
The most common mistake is using the wheel for a decision that genuinely matters. Randomness is a terrible substitute for analysis when the options have different expected outcomes - a team that spins for "ship the risky feature or the safe one" is abdicating responsibility, not exercising judgment. The wheel is for cases where every option is acceptable and the picker just wants to move on. A second issue: with many options and long text labels, slice labels become cramped and hard to read. The tool caps option text at thirty characters and caps option count at twenty for exactly this reason. Math.random() is not cryptographically secure - it is a pseudo-random number generator seeded from browser entropy and fine for casual use, but you would not use it for a lottery that carries money. Finally, multiple people watching the same wheel can accidentally rig outcomes if someone notices a slight pattern in how slices visually cluster after several spins; the mathematics is truly uniform, but humans are pattern-finding machines.
Randomness and Decision-Making
Using chance to decide between acceptable options has a long history: Roman sortition picked magistrates by lot, the Icelandic Althing assigned speaking turns randomly, and medieval Italian cities drew lots to settle disputes. The psychology literature on "decision fatigue" (popularized by Roy Baumeister and John Tierney in their 2011 book Willpower) supports the instinct that randomizing trivial choices preserves cognitive bandwidth - though the original ego-depletion research has been partially replicated and partially not, so treat the theory as suggestive. The CSS conic-gradient() powering the wheel is a recent addition; before it, the same effect required SVG paths or canvas pie charts. Math.random() uses a PRNG (xorshift128+ in V8) seeded from system entropy; deterministic given the seed but unpredictable in practice.
Comparison to Alternatives
A physical die or coin flip is honest and fast if you only have a few options. Picker Wheel and Spin The Wheel sites offer richer features: save wheels for reuse, share a wheel via URL, remove-winner-after-spin mode for round-robin selection, custom colors per slice, sound effects. Random.org provides cryptographically audited randomness if you actually need it for stakes. A quick Slack bot (/shuffle or a custom slash command) lets a team run the same decision without anyone sharing their screen. Against these, this page\'s wins are zero friction and zero account requirement - open a tab, type options, spin. It loses whenever you want to reuse a wheel across sessions, run a no-repeat draft, or share the result URL with a colleague who was not watching the spin. For high-stakes random selection, use a platform with audit logs; for casual team decisions, this is perfect.
Frequently Asked Questions
Is the wheel actually random, or does the animation decide?
The winner is chosen first by Math.random() and the animation is computed backward to land on that slice. The visible rotation is pure decoration - the math is fair regardless of how the wheel appears to slow. Each option has exactly 1/N probability. Across enough spins, each option comes up approximately equally often with the variance you would expect from fair coin flips.
Why Math.random() instead of a cryptographic random source?
Math.random() is a PRNG seeded from browser entropy, implemented as xorshift128+ in V8 and similar algorithms elsewhere. It is deterministic given its seed but unpredictable in practice, more than good enough for casual decision-making. A cryptographically secure source (crypto.getRandomValues) is overkill for "pizza or tacos". For audited stakes - prize drawings, lotteries - use Random.org or a properly audited RNG.
What happens if I add the same option twice?
Duplicates are treated as separate entries and each gets its own slice. If you add "pizza" three times among nine total options, pizza wins with 3/9 probability instead of 1/9. This is a useful way to weight a wheel - if you want one option to be twice as likely, add it twice. The tool does not deduplicate automatically because that would prevent this intentional use.
Is there a limit on the number of options?
Twenty options maximum, each capped at thirty characters. The limits are legibility constraints, not technical. Beyond twenty slices the text is too small to read at normal zoom, and beyond thirty characters labels wrap awkwardly. If you have more options, you probably want a list-and-shuffle approach rather than a wheel.
Does the tool save my options between visits?
No. The options list lives in Preact component state and is discarded on tab close or reload. Most decision-wheel uses are one-off and there is no persistent-list concept. For reusable wheels, Picker Wheel or Wheel of Names let you save and share. To avoid retyping a common list, a text expander or a saved clipboard snippet handles it.
Can I remove a winner so it cannot be picked again?
The wheel does not remove the winner automatically, but you can click the "x" on the winning option after each spin to knock it out. This is the manual version of "elimination mode" or "no-repeat mode" in other tools. For long round-robin sequences (presentation order for fifteen people), dedicated sites with automatic elimination are a better fit.
Does the wheel work on mobile and tablet?
Yes. The wheel renders as responsive CSS, the inputs are standard HTML form elements, and the spin is a CSS transform so it runs on mobile GPUs without jank. On very small phones the layout stacks vertically and labels can be hard to read with many options - consider fewer options on mobile, or zoom in. Touch events for adding and removing work identically to mouse clicks.
Is the animation tunable?
Not through the UI. The spin duration is fixed at three to four seconds with an ease-out cubic-bezier curve that approximates physical deceleration. Some users ask for an "instant" mode for mass-draws, but the animation is the whole point - it creates the dramatic pause that makes "the wheel chose" feel satisfying rather than arbitrary. For headless draws, a shuffle-and-pick tool or Slack command is more appropriate.
Is my list of options sent anywhere?
No. The options array, the result, the spin state - everything lives in component memory. There is no fetch call, no analytics event carrying option text, no write to storage. You can type confidential-sounding options (candidate names, salary bands, internal project codes) without worrying about them leaving the page.
Should I trust important decisions to a random wheel?
No. A wheel is useful when options are close to equivalent and you just want to stop arguing - "three equally-good restaurants" or "who demos first". It is a bad tool when options differ in expected outcome, because randomness does not incorporate any information that would distinguish a good choice from a bad one. The decision-fatigue case for trivial choices is sound; extending it to serious decisions is a misreading.
More Fun & Utility
Aesthetic Text Generator
Transform text into vaporwave, upside down, small caps, bold, italic, strikethrough, bubble, and square Unicode styles.
Open toolASCII Art Generator
Convert text to large block-letter ASCII art. Supports A-Z, 0-9, and basic punctuation.
Open toolCoin Flipper
Flip a virtual coin with animation. Track heads/tails counts, percentages, and streaks.
Open toolColor Blindness Simulator
Simulate how colors appear with protanopia, deuteranopia, tritanopia, and achromatopsia using color transformation matrices.
Open toolDice Roller
Roll D4, D6, D8, D10, D12, or D20 dice. Choose quantity, see individual results and totals with roll history.
Open toolFortune Cookie
Open a virtual fortune cookie to reveal a random fortune with lucky numbers. 50+ unique fortunes.
Open tool