Random Number Generator
Generate random numbers, roll dice, or shuffle and pick from a list — unbiased and entirely on this device.
Press ? for shortcuts · Generated on your device with your browser’s secure random source.
Do it offline:$ shuf -i 1-100 -n 1
How to use it
- Pick a mode — Numbers, Dice, or Picker. Each swaps in its own controls, and each mode keeps its own last result.
- For numbers, set a minimum, a maximum, and how many; turn on Unique for all-distinct values. For dice, type notation like 3d6 or 2d20+5. For the picker, paste one item per line and choose Shuffle or Pick.
- Press Generate — or ⌘/Ctrl + Enter. Each press draws afresh; there is no seed, so a new press means new results.
- Copy the output, download it as a .txt file, or Share a link that carries your settings — never the result.
Draw random numbers across any whole-number range, roll dice by standard notation, or shuffle a list and pull a winner from it — every result is generated on your device and drawn without bias. Pick a mode, set the range, the notation, or your list, then press Generate. Nothing you type or produce is uploaded, and no account is ever required.
How it works
Each draw starts at the browser's cryptographic generator, crypto.getRandomValues, and is folded into your range by rejection sampling: a raw value is kept only when it lands inside the largest exact multiple of the range, and redrawn otherwise. Those few discards keep the lowest outcomes from being favored, so every number, face, and position is equally likely.
Nothing here calls a server, and the tool claims no physical randomness — it runs entirely in your tab. Because no result is seeded or saved, a specific draw cannot be recreated; Share carries the settings so a colleague draws under the same rules, not the same output.
Dice notation is read as a sum of terms — NdF groups with a plus or minus constant, like 1d8+1d6-2 — each die an independent draw; keep, drop, and exploding rules are out of scope. The picker reads one item per line, trims each, drops blank lines, and keeps duplicates as separate entries.
Examples
Numbers · range 1–100 · draw 592, 31, 45, 6, 19Five independent numbers from 1 to 100, drawn with replacement, so a value may repeat. It is illustrative — a live press draws its own.
Numbers · range 1–49 · draw 6 · unique7, 36, 21, 39, 4, 35The lottery shape: six unique numbers from 1 to 49, drawn without replacement via a partial Fisher–Yates shuffle, so none repeats.
Dice · roll 2d20+52d20 (3, 10) + 5 = 18Two twenty-sided dice plus a flat 5, each die shown then summed: 3 + 10 + 5 = 18. Swap in 3d6 or 1d8+1d6-2 for the same grammar.
Picker · pick 1 winner from 5 namesChloeOne name pulled fairly from five — the random-winner use. Pick more for a no-repeats sample, or switch to Shuffle to reorder the list.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
A single-value range needs no draw
When the minimum equals the maximum there is a single possible result, so the tool skips randomness and reports that every value is that number.
Without repeats, you can't exceed what exists
Ask for more unique numbers than the range holds, or more no-repeat picks than items, and the draw is refused with a note. Allow repeats, widen the range, or add items.
Dice are summed — nothing fancier
Notation covers NdF groups and flat modifiers up to 1,000 dice per group and 10,000 in a roll, faces from 1 to a million. Roll-and-keep, exploding dice, and advantage are left out.
How the picker reads your list
One item per line. Carriage returns are stripped, each line trimmed, and blanks dropped with a visible count. Duplicates stay as distinct entries, so a repeated name is likelier to win.
A shared link restores settings, not results
With no seed, a shared link rebuilds your range, notation, or list, then draws fresh. A credential-shaped list stays out of storage and the link — a guard for the one input that might hold a secret.
Common errors
Minimum (100) is greater than maximum (1). Swap them, or lower the minimum, to continue.- The minimum sits above the maximum, so the range is empty. Swap the fields or lower the minimum.
How many must be a whole number between 1 and 10,000.- A run draws 1 to 10,000 values. Zero, a negative, a fraction, or more is refused, not clamped.
Cannot draw 10 unique numbers from a range of only 6. Reduce how many, widen the range, or allow repeats.- Unique draws without replacement, so the count can't exceed the values in range. The note names all three ways to fix it.
Unexpected "x" — use dice notation like 3d6, 2d20+5, or 1d8+1d6-2.- The parser anchors the first character it can't read and lists valid forms. Only digits, d or D, and + or - between terms are accepted.
Cannot pick 5 items without repeats from a list of only 3. Pick fewer, add items, or allow repeats.- In Pick mode without repeats, the count is bounded by the items left after blank lines drop. Turn on repeats to reuse items.
Input is larger than the 1 MB limit for this tool. For bigger lists use the CLI: shuf -n 10 file.txt.- The picker refuses lists past one megabyte instead of freezing the tab, pointing at shuf for oversized files.
FAQ
Are the results actually unbiased?
Yes. Values come from the browser's cryptographic generator, and a plain take-the-remainder step would tilt toward the lowest outcomes when the range doesn't divide evenly; discarding the out-of-band draws removes that tilt.
Can I reproduce the same numbers from a shared link?
No, by design. The link stores your settings — range, notation, or list — never an outcome, because there is no seed. Save the output yourself if you need to keep it.
What dice notation does the roller understand?
Sums of terms: NdF groups joined by + or -, with an optional flat modifier, like 3d6, 2d20+5, or 1d8+1d6-2. A leading count is optional, so d100 rolls one die. It totals the roll; it does not keep, drop, or explode dice.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Draw again — new numbers, a fresh roll, or a new pick.
- ⌘/Ctrl + S
- Download the current output as a .txt file.
- ⌘/Ctrl + C
- Copy the whole output when nothing is selected.
- ⌘/Ctrl + Shift + C
- Copy the output even while a selection exists.
- t
- Cycle the color theme.
- ? or ⌘/Ctrl + /
- Open the shortcut help dialog.
- Esc
- Close the open dialog.