LuckPickerSpin the Wheel

Methodology

Think of a fair result on this site as coming from three stacked layers, each solving a different failure mode. The bottom layer is where the randomness itself comes from. The middle layer is how that raw randomness gets turned into a specific number, letter, or position without quietly favoring some outcomes over others. The top layer is what happens when the job is reordering or splitting a whole list rather than picking one value. This page walks through each layer in turn.

Layer one: where the raw randomness comes from

Ask a browser for a random number and, unless a tool is deliberate about it, you will get Math.random() — a fast function built from a deterministic formula, tuned for speed rather than unpredictability. Feed it enough of its own past output in certain implementations and its internal state can be worked out, at which point future values stop being a secret. Nobody notices this in a UI animation. It becomes a real problem the moment a value is standing in for a password, a PIN, or who wins a raffle.

This site sidesteps that risk entirely by never calling Math.random() for anything a tool produces. Every draw instead goes through crypto.getRandomValues, part of the Web Crypto API, which pulls from the operating system's own cryptographic random source — the same category of generator that produces encryption keys. Nothing about a past result leaks information about the next one.

Layer two: turning a byte into a fair outcome

A single random byte from that source can be any of 256 values. Plenty of the things this site generates don't have exactly 256 possible outcomes, though — a d20 has 20 faces, the alphabet has 26 letters, a country list has 195 entries. Squeeze a byte into one of those ranges the lazy way, with a straight modulo operation, and the leftover handful of byte values that don't divide evenly gets dumped onto the low end of the range, nudging early outcomes very slightly ahead of later ones.

The fix used across the number, date, time, password, PIN, letter, and country tools (among others) is to simply throw away any byte that would land in that uneven leftover zone and pull another one, repeating until a byte lands somewhere that maps cleanly. It costs an occasional extra draw, invisibly, in exchange for every outcome having an identical share of the odds. A handful of tools skip this step because their specific outcome count happens to divide 256 with nothing left over — flipping a coin only needs to check one bit, and eight compass directions split 256 into equal eighths on their own.

The spinner wheel's different approach

The spinner and number wheels don't pick from a countable list of outcomes at all — they draw a position somewhere along a continuous 360-degree circle and see which entry's slice that position falls in. Because the draw is continuous rather than discrete, there's no leftover-byte problem to correct for in the first place, and it has a side benefit: giving one entry a bigger slice of the circle is all it takes to give it better odds, with no separate weighting math required.

Layer three: reordering and splitting whole lists

Picking one value is a different job from reshuffling an entire list, which is what the team generator, the order randomizer, and the Secret Santa generator all do. Each relies on the Fisher-Yates algorithm rather than the tempting shortcut of tagging every item with a random number and sorting by it — that shortcut can quietly favor certain end orderings depending on quirks of the sort implementation, while Fisher-Yates is mathematically guaranteed to make every possible ordering equally reachable. The Secret Santa generator asks one thing more of that shuffle: no participant can land on their own name, so it discards and reshuffles until it finds an arrangement with zero self-matches, a check a plain team split has no need for.

What never leaves your device

None of these three layers involve sending anything to a server. A name list, a generated password, a Secret Santa roster — the input stays in the tab you're looking at, the draw runs on your device's own hardware, and the result is rendered back to that same screen. For the Secret Santa generator in particular, that's not just a privacy nicety — it's what makes the "only you see your own match" promise actually true, since there was never a complete pairing list sitting anywhere for anyone else to find.

The individual tool pages go one layer deeper still, tying each mechanic above to that specific tool's own use case and its own frequently-asked questions.