Skip to content
FPSDEN

Random Number Wheel

A random number wheel turns the list you type into slices and selects one entry when you press Spin. It opens with the lines 1 to 6. Replace them with names, tasks, or prize tiers, add weights where some entries should win more often, and the winning label appears as text below the button.

Edit the wheel

One unique option per line. Optionally add | followed by an integer weight from 1 to 100000. Up to 100 options, 60 characters per label.

Entries have equal chances unless a weight is specified. Weight 3 has three times the chance of weight 1. Repeats are possible.

Your result will appear here.

1 (1)2 (1)3 (1)4 (1)5 (1)6 (1)123456SpinOptions = 1 2 3 4 5 6

Sector size follows the weight you set; the pointer marks the pick.

angle = weight / total weight * 360 degrees

Wheel options and weights

    Weights and repeats

    Type one entry per line. A line with no bar gets weight 1. Add a bar and a number to change that entry's share, for example A | 1 and B | 3, so B covers three of the four weight units and is drawn three times as often. Blank lines are skipped, and spaces around a label are stripped before it is used. Weights must be whole numbers from 1 to 100000, so zero, a minus sign, and a decimal point are all refused. Labels must be unique inside the list; a repeated label stops the spin until you change one of the two lines.

    What determines the result?

    The code adds every weight into one total, then draws a single whole number below that total with the browser's crypto.getRandomValues. Each entry owns a block of that range as wide as its weight: the first block starts at zero and ends at its own weight, the next begins where the previous one stopped. The block holding the drawn number wins. Before drawing, the code works out how many random bytes the total needs and throws away values that land in the leftover top part of that byte range, so uneven division cannot tilt the odds toward any entry.

    Spinning the default list

    The options box opens with the lines 1, 2, 3, 4, 5 and 6, each at weight 1, so one spin behaves like a die. Press Spin and the status line under the button moves from Your result will appear here to Generating, then to Selected followed by the winning label. The button text becomes Spin again, and every further press draws a fresh value from whatever is in the box at that moment. Typing in the box resets the status line, the dial, and the button to their starting state.

    Working out your own odds

    An entry's chance is its weight divided by the total weight. With A | 5, B | 3 and C | 2 the total is 10, so A wins 5 spins in 10, B wins 3 in 10, and C wins 2 in 10. Doubling every number changes nothing: weights 10, 6 and 4 total 20 and still give 50, 30 and 20 percent. Only the ratio counts. Six plain lines total 6 and give each line 1 in 6, about 16.7 percent on any single spin. One line alone is drawn every time, because it holds the whole total.

    The dial, the pointer, and reduced motion

    The dial is one round element painted with a conic gradient sized from your weights, and neighbouring slices alternate between two theme colours. No labels are drawn on it, only coloured wedges, with the word Spin sitting in the middle. Your labels live in the status line below the button and in the collapsible list under it, which repeats each label with its weight in brackets. On a win the code turns the dial so the middle of the winning slice ends under the small triangle at the top, adding 1800 degrees, five full turns, plus the correction needed to land there. The CSS transition lasts 700 milliseconds and the script waits 750 before writing the answer. If your browser asks for reduced motion the rotation transition is dropped and the answer appears without that wait.

    Limits you will run into

    The box accepts 1 to 100 non-empty lines, each label up to 60 characters, and weights as high as 100000; a field longer than 10000 characters is refused outright. A line with a second bar, such as A | 2 | 3, fails, and so does a bar with nothing before or after it. Letter case is part of a label, so cat and Cat are two separate entries, while spaces around a label are stripped, which makes cat and cat with a trailing space collide as a duplicate. Nothing from the box is written to storage: reload the page and the lines are back to 1 to 6. The only preference the site keeps on your device is the light or dark theme choice.

    Every spin is independent

    Winning does not remove an entry, and the page keeps no count of past spins. With four plain lines the chance that the second spin repeats the first is 1 in 4, because it only has to match whatever already came up. A chosen entry misses a single spin 3 times in 4; over three spins that is 3/4 times 3/4 times 3/4, or 27/64, roughly 42 percent, so it appears at least once about 58 percent of the time. Short runs look uneven for that reason, and it is not a fault in the draw.

    Picking without replacement takes a manual step

    There is no remove-winner control, no rounds, and no elimination mode. To draw several different entries, delete the winning line after each result and press Spin again. Survivors keep their weights, so their shares grow as the total shrinks: four plain lines give each entry 1 in 4, and after one is deleted the three remaining entries each win 1 in 3. Skipping the deletion keeps that winner in the pool, where it can be drawn again. Change the numbers beside the survivors too if their chances should move between rounds.

    When another tool on this site fits better

    This page returns one label from a list you type. The random number generator linked under Related tools returns from 1 to 100 numbers from a range or a digit length, with a no-repeats option inside one batch, which fits drawing lots by number, dice totals, or a raffle over ticket ranges. The letter page returns one capital letter from A to Z, and the state page returns one of the fifty United States with its two-letter code. Those three produce values only, so the wheel is the one that shows your entered list.

    Frequently asked questions

    How does the random number wheel pick a winner?

    It adds the weights together, then draws one whole number below that total with crypto.getRandomValues in your browser. Each entry covers a stretch of that range as wide as its weight, and the stretch holding the drawn number wins. The dial turns afterwards and only shows which slice was chosen; it has no part in the selection.

    Can I put names or words instead of numbers on the wheel?

    Yes. Labels are plain text, so names, tasks, team colours, prize tiers, and short phrases all work. Enter one per line, keep each label to 60 characters or fewer, and stay within 100 lines. Labels must be unique, and the winning text is shown exactly as you typed it after the word Selected.

    What does the weight after the bar symbol do?

    It sets how much of the total weight that entry owns. With A | 2 and B | 8 the total is 10, so A wins 2 spins in 10 and B wins 8 in 10. Weights are whole numbers from 1 to 100000, and a line without a bar counts as 1. Multiplying every weight by the same factor leaves the odds exactly as they were.

    Why did the same option win twice in a row?

    Because spins are independent. Nothing is removed after a win, so an entry that just came up still holds the same stretch of the range on the next press. With four equal entries that is a 1 in 4 chance of an immediate repeat. If each name should win only once, delete its line before the next spin.

    Why do I see a message instead of a result?

    Most of those messages mean the list itself is unusable: more than 100 lines, a label longer than 60 characters, a repeated label, a weight of zero or a decimal, a weight above 100000, or a second bar on one line. A separate message appears when no result could be generated, and the page only offers another press of the button in that case.

    Does the wheel keep my list or my past spins?

    No. The entries live only in the text box, so reloading the page loses them, and a bookmark or a link you send carries no list with it. Nothing about past results is stored either. To use the same set again later, copy the lines into a document and paste them back before you spin.