Zodiac Wheel

Twelve signs, twelve equal 30° segments, one uniform draw — a zodiac wheel for games and prompts. It picks signs; it does not do horoscopes, and it says so. That angle, and every angle, percentage and count below, is computed at build time by the same engine that runs the wheel.

Spin: Aries to Pisces

The twelve signs in conventional order. Each segment is exactly 30 degrees.

Press “Spin the wheel”. The winner is drawn by cryptographic randomness the instant you press — the spin you watch is just the announcement.

What people actually spin this for

Icebreakers, mostly: spin a sign and everyone born under it answers the question, shares an embarrassing story, or takes the next turn. Astrology-themed parties use it to assign teams. Writers spin it as a character prompt — a random sign plus its stock traits is a fast seed for a personality sketch. And in a group that enjoys its horoscopes, spinning "tonight's designated Scorpio" is reliably funnier than it has any right to be.

Everything below is a walk through what the engine actually does with this preset. Every angle, percentage and count on this page is computed at build time by the same code that runs the wheel, and the worked draws use scripted bytes so they can be replayed — a live spin draws its bytes from crypto.getRandomValues instead. If you are running the wheel for a room — an icebreaker circle, a class, a game table — the practical side (loading a list of names, removing duplicates, eliminator mode so nobody is picked twice, sharing a prepared wheel with a co-host, resetting) is the subject of the guide Using the wheel for groups: classrooms, meetings, households. The full mechanism is on the methodology page, and the rest of the guides are collected at /guides/.

The signs and their dates

The wheel carries the twelve tropical signs in their conventional order — Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces — the cycle beginning at the March equinox. The date ranges (listed in the FAQ below) are the commonly printed ones; boundary dates wobble by about a day from year to year because the astronomical crossings do. This site takes no position on what any of it means — the wheel is a fair twelve-way picker wearing a celestial costume.

What the preset is, and how to change it

The zodiac wheel is a fixed list of 12 names, loaded in conventional order into the same editable entry list every other wheel on the site uses. Nothing else rides along: no dates, no traits, no groupings — the names, one per line. Because the entries are ordinary text, the list is yours to edit. Delete the lines you do not want, paste the signs of the people in the room, or replace the signs with names entirely; the wheel treats whatever list it is given as N equal segments. An edited list is saved in your browser's local storage so it survives a reload, and Reset list puts the 12 signs back in conventional order. Two caps apply, each with an honest error rather than a silent trim: a wheel holds at most 100 entries, and a single entry can be at most 80 characters, because anything longer will not fit on a segment.

12 segments of 30°

A wheel of N entries divides the circle into N equal segments of 360/N degrees, in list order, with every boundary computed as an exact multiple. For this preset N is 12, so each sign spans 30° and wins 8.33% of spins. Aries sits at index 0 and runs from 0° to 30° clockwise from the pointer, and Pisces closes the circle from 330° to 360°. The midpoint column is where the pointer lands: when a sign wins, the wheel is rotated so that its midpoint rests under the pointer. The rotation is worked out from a winner that already exists, not the other way round.

Index Sign Start End Midpoint Colour
0 Aries 0° 30° 15° #7e22ce
1 Taurus 30° 60° 45° #2563eb
2 Gemini 60° 90° 75° #047857
3 Cancer 90° 120° 105° #b45309
4 Leo 120° 150° 135° #dc2626
5 Virgo 150° 180° 165° #0e7490
6 Libra 180° 210° 195° #db2777
7 Scorpio 210° 240° 225° #4d7c0f
8 Sagittarius 240° 270° 255° #7e22ce
9 Capricorn 270° 300° 285° #2563eb
10 Aquarius 300° 330° 315° #047857
11 Pisces 330° 360° 345° #b45309

Colours are cosmetic. They cycle through a fixed palette of 8 in list order, which is why Aries and Sagittarius share #7e22ce on a 12-sign wheel. The engine makes one adjustment: when the cycle would give the last segment the same colour as the first, the last segment takes the second palette colour instead, so no two neighbours ever match. On the full preset that never triggers — Pisces sits on #b45309 — but trim the list to the first 9 signs and it does: the plain cycle would hand Sagittarius the same #7e22ce as Aries, and the engine gives it #2563eb instead, on a wheel of 40° segments. None of this touches probability. The geometry exists for the eyes; the winner is picked by index from random bytes, and each segment's chance is exactly 1/N however it is coloured. The segment geometry guide covers the arithmetic for every wheel size.

One scripted spin, byte by byte

Scripted spin on the 12-sign wheel. Feed the engine the bytes 13 then 9 and ask it to spin the full preset. It asked the byte source 2 times: the first byte, once its excess top bits were masked away, still landed at or beyond 12 and was discarded; the second was accepted: index 9, the sign Capricorn, with a landing angle of 285°. A remainder would have kept that first byte and assigned it a sign. The engine never takes a remainder.

The mask is the other half of the mechanism. The engine takes the minimal number of bits whose range covers the segment count and ignores the rest of the byte. Feed it two bytes that differ only in their top bits — 9 and 201 — and both produce Capricorn: the top bits never reach the comparison, so nothing about them can tilt the result. A live spin differs from the scripted one in a single respect — its bytes come from the browser's cryptographically secure generator instead of a tape — and the order of events is unchanged: the sign is picked first, and the roughly four-second ease-out rotation is then worked out to stop on it. Under reduced motion the animation is skipped and the same sign is named at once; the methodology page sets out the full sequence from click to result.

Why 12 signs need a redraw rule

For a span of 12 the engine needs 4 bits, which fit in a single byte, so each draw asks the source for 1 byte. A byte holds 256 values, and 256 cannot be shared equally among 12 signs. A remainder would put 22 byte values on each of the first 4 signs — Aries, Taurus, Gemini, Cancer — and only 21 on each of the other 8. That tilt toward the low-numbered segments is the modulo bias the methodology page describes. To show what the engine does instead, the build runs every one of the 256 byte values through uniformInt as the first byte of a spin, with a second byte standing by for a redraw. It accepted 192 on the first draw and rejected 64, drawing again for each; the 192 accepted bytes fall on the 12 signs exactly 16 times each, and no sign receives a single extra byte. Because the mask keeps the acceptance rate above half, redraws are rare and spins stay instant. This is the same kind of exhaustive check the automated tests run on other spans.

Trimming the list to the signs at the table

5 signs, two paste styles. Suppose 5 guests name their signs and you want a wheel of just those. Paste Taurus, Leo, Libra, Capricorn, Pisces on a single line: because that one line contains commas, the parser splits on the commas and trims each piece, giving 5 entries. The same 5 signs on 5 separate lines parse to the identical 5. Either way the wheel has 5 segments of 72° each, and every guest's sign wins 20% of spins.

The rule has one trap: commas split only when the whole paste is a single line. Put Taurus, Leo on one line and Libra on the next and the parser keeps the comma, giving 2 entries, one of which is the two-sign label "Taurus, Leo". Duplicates are the other thing to watch for. Type Leo, leo, LEO, Virgo on 4 lines and the parser keeps all 4, because the 3 lines that spell Leo are 3 entries: Leo then holds 3 segments and wins 75% of spins, which is the honest way to weight a wheel when that is what you want. When it is not, tick Remove duplicate entries: the parser drops later copies case-insensitively, keeping the first spelling, and the list collapses to 2 entries with Leo at 50%. The caps are equally plain. Pasting 1 through 101 on 101 lines does not silently trim the last line — the engine refuses with "A wheel holds at most 100 entries — this list has 101. Remove some entries; nothing was silently dropped." — and a 94-character entry such as "Leo — everyone born under this sign answers the question and then passes the phone to the left" is refused with "Entries are limited to 80 characters — "Leo — everyone born …" is too long to fit on a segment."

Eliminator mode as a turn-order dealer

Tick eliminator mode and the reading of a spin inverts: each spin removes the sign it picks, and the survivor is the entry left when every other has been eliminated. For turn order, read the spin history from the bottom up — new lines are added at the top, so the first sign removed is the lowest line — and the survivor takes the last turn; for a knockout, the survivor is the winner. Each elimination is a fresh uniform draw over the signs still on the wheel: 1/12 on the first spin of the full preset, 1/11 on the second, and so on down to the final pair. The walk-through below deals the 5-sign table list from the previous example with scripted bytes; every row is the engine's own output.

Spin Still on the wheel Chance each Removed Left after
1 Taurus, Leo, Libra, Capricorn, Pisces 1/5 (20%) Libra Taurus, Leo, Capricorn, Pisces
2 Taurus, Leo, Capricorn, Pisces 1/4 (25%) Pisces Taurus, Leo, Capricorn
3 Taurus, Leo, Capricorn 1/3 (33.33%) Leo Taurus, Capricorn
4 Taurus, Capricorn 1/2 (50%) Taurus Capricorn

Elimination order Libra, Pisces, Leo, Taurus; survivor Capricorn. Spin 1 needed 2 draws because a scripted byte fell outside the shrinking range and was rejected — the redraw rule applies at every step, not only on the full wheel. Because every spin is uniform over what remains, each of the 5 signs survives with probability exactly 1/5, or 20%. Elimination states are immutable values, so the sequence above can be replayed exactly. Three practical rules follow from the mechanism. Eliminator mode needs at least two entries — with one, the engine answers "Eliminator mode needs at least two entries." Once the survivor is named, the page disables the spin button and the status line under the toggle says to uncheck and re-check eliminator mode; the engine itself refuses a further spin with "This elimination is finished — reset to run it again." And editing the list mid-elimination restarts the elimination on the new list, so settle the roster before the first spin. Eliminator mode has its own guide, Eliminator mode, explained, and the groups guide covers running it in front of a room.

Sharing the wheel by link

Copy share link percent-encodes each entry and joins them with | into a #items= fragment on this page's address. The full preset becomes https://spinthatwheel.net/zodiac-wheel/#items=Aries|Taurus|Gemini|Cancer|Leo|Virgo|Libra|Scorpio|Sagittarius|Capricorn|Aquarius|Pisces — 134 characters in all, of which the list itself is 88, against a cap of 1800 — and the 5-sign table list becomes https://spinthatwheel.net/zodiac-wheel/#items=Taurus|Leo|Libra|Capricorn|Pisces. Browsers do not include the fragment in web requests, so whoever opens the link has the identical wheel rebuilt locally and the list is never sent to the hosting server; legacy ?items= links are still accepted. The link carries the list and only the list. Over-long lists get an honest error rather than a truncated link, and a damaged link is reported as damaged rather than decoded into a garbled wheel.

Reading the result, and four misreadings

The winner is drawn the instant you press Spin the wheel; the result line under the wheel is written when the rotation settles onto it — or at once if your system asks for reduced motion — and the spin history below the list keeps the most recent results while the tab is open, newest line first; it exists only on the page and dies with the tab. Four readings of that history are wrong, each for the same reason: the pick comes from the bytes, not from the wheel. First, "it slowed right past Leo, so Leo nearly won" — the rotation was calculated to stop on the winner, and no other segment was ever in contention. Second, "Scorpio has not come up all evening, so it is due" — each spin is an independent draw at 8.33% whatever came before; the history is a record, not a forecast. Third, "it started from where it stopped last time, so that changes something" — the resting position, the timing of your click and the deceleration curve never reach the pick. Fourth, "eliminator mode changes the odds" — it changes only which signs are still on the wheel; the draw over those signs is uniform, as the table above shows spin by spin. If you would rather check than take this page's word for it, the rigging guide lists what to look for — reduced motion, which announces the draw with no animation to read into, and the network tab, where no request carries your list.

Another fixed-list spin: the Wheel of US States with all fifty. For open-ended party fuel, the Question Wheel spins original icebreakers, and the Color Wheel Picker settles team colors.

Frequently asked questions

What are the dates for each sign?

The conventional tropical ranges: Aries (Mar 21–Apr 19), Taurus (Apr 20–May 20), Gemini (May 21–Jun 20), Cancer (Jun 21–Jul 22), Leo (Jul 23–Aug 22), Virgo (Aug 23–Sep 22), Libra (Sep 23–Oct 22), Scorpio (Oct 23–Nov 21), Sagittarius (Nov 22–Dec 21), Capricorn (Dec 22–Jan 19), Aquarius (Jan 20–Feb 18), Pisces (Feb 19–Mar 20). Sources vary by a day at the boundaries because the sun crosses at a different moment each year.

Does the wheel tell fortunes or read compatibility?

No. It picks one of twelve names with equal probability — that is the entire mechanism, and this site will not pretend otherwise. What the pick means at your party, in your icebreaker, or in your story draft is up to you.

Is each sign really 1 in 12?

Exactly: 12 equal segments of 30° each, and the winner is drawn with cryptographic randomness before the animation. Real-world birthdays are not uniform across signs, but this wheel is.

Can I spin only the fire signs, or only my friends’ signs?

The list is editable — cut it to Aries, Leo, and Sagittarius for a fire-sign draw, or replace signs with your friends’ names entirely. The wheel treats whatever list you give it uniformly.

Can eliminator mode set a turn order?

Yes. Tick eliminator mode and each spin removes the sign it picks; read the spin history from the bottom up as the turn order — new lines are added at the top, so the first sign removed is the lowest line — with the survivor taking the last turn. Each elimination is a fresh uniform draw over the signs still on the wheel — 1/12 on the first spin of the full list, 1/11 on the second, and so on — so every sign survives to the last turn with probability exactly 1/12. Editing the list mid-elimination restarts the elimination on the new list.

I pasted the signs and got fewer entries than I typed — why?

The parser reads one entry per line and splits on commas only when the whole paste is a single line. Pasting "Taurus, Leo" on one line and "Libra" on the next gives 2 entries, because commas inside a multi-line paste are kept as part of the entry. Put every sign on its own line, or the whole list on one line: "Taurus, Leo, Libra, Capricorn, Pisces" on a single line parses to 5 entries.

Why do Aries and Sagittarius share a colour?

Segment colours cycle through a fixed palette of 8 in list order, so on a 12-sign wheel the cycle wraps and Aries and Sagittarius land on the same colour. Colour is cosmetic: the winner is picked by index from random bytes, and every sign stays at 8.33%. The one adjustment is for lists where the last segment would match the first — trim to the first 9 signs and Sagittarius takes #2563eb instead of Aries's #7e22ce, so no two neighbours match.

Can I give one sign a bigger share?

Yes, by listing it more than once — the wheel does not hide it. Enter Leo, leo, LEO, Virgo on 4 lines and the parser keeps all 4 entries, so Leo holds 3 segments and wins 75% of spins. Tick "Remove duplicate entries" and the list collapses case-insensitively to 2 entries, first spelling kept, with Leo back at 50%.

Entertainment only: the wheel makes uniform random picks and no predictions. Lists never leave your browser — see the methodology page.