Generate one or more random numbers in a range using a secure random source.
Generates one or more random whole numbers within a range you set — for drawing a giveaway winner, rolling dice, picking a random sample, assigning an order, or seeding a game.
Numbers come from your browser's cryptographically secure random source (crypto.getRandomValues), not Math.random(), so every value in the range is equally likely.
Math.random() is fast but produces a predictable sequence — given enough of its output, future values can be reconstructed. This tool uses the Web Crypto API instead, the same source browsers use for security tokens, drawing from a 32-bit range and mapping it onto yours. Any leftover bias from that mapping is on the order of one part in billions — far too small to matter for a draw, a sample, or a dice roll.
For a public draw, that's the difference between “random” and “defensibly random”. For a serious prize, still record how you did it — screen-record the draw, or note the range and count — since the result itself can't be reproduced or audited afterwards.