This tool generates random integers between a minimum and maximum value, using the browser's cryptographically secure random number generator (crypto.getRandomValues) rather than Math.random() — nothing is sent to a server, and nothing is stored.


Turn on no duplicates to draw unique values only, useful for things like raffle picks or shuffled selections. It's disabled by default, which allows the same number to come up more than once, like rolling several dice.

Frequently asked questions

How is this different from Math.random()?

This tool uses the Web Crypto API's crypto.getRandomValues, a cryptographically secure random source, with rejection sampling to avoid the modulo bias that a naive Math.random() % range calculation introduces.

Can I generate numbers without duplicates?

Yes — toggle "no duplicates" to sample without replacement, useful for things like raffle drawings or shuffled ID assignment; note the requested count cannot exceed the size of the range in that mode.

Is this suitable for a lottery or drawing?

The randomness source is cryptographically strong, but always check your jurisdiction's rules — many regulated drawings require a certified/audited RNG, not just a strong one.

Related tools

CSV ↔ JSON Converter — Convert between CSV and JSON
YAML ↔ JSON Converter — Convert between YAML and JSON
Markdown Preview — Live preview of rendered Markdown
Diff Checker — Compare two texts and highlight differences


Main page