Set a range, choose how many numbers you want, and draw. Turn on “no repeats” for a raffle, where the same number must not come out twice.
Result
Why most generators are slightly unfair
The usual way to squeeze a random number into a range is to take a raw value and use the remainder: pick a byte from 0 to 255, divide by 6, keep what is left over, and you have a die. It works, and it is not quite fair. There are 256 possible bytes and 6 faces, and 256 does not divide by 6: it goes 42 times with 4 left over. Those four spare values land on faces 1 to 4, so a die built this way rolls 1, 2, 3 and 4 on 43 of the 256 bytes and 5 and 6 on only 42. That is about 2.4% too often for the low faces: invisible in twenty rolls, and perfectly systematic across twenty thousand.
The fix is to throw the spare values away. This generator asks the browser for a 32-bit number, and if it falls into the leftover chunk at the top that would not divide evenly, it discards it and asks again. What remains divides exactly, so every value in your range is equally likely. Not nearly, exactly. The cost is that occasionally a draw takes two tries instead of one, which nobody can perceive and which is the whole price of fairness.
The numbers come from crypto.getRandomValues, the browser’s cryptographic source, and not from Math.random. Math.random is fast and fine for shuffling a background animation, but it is a predictable algorithm: given enough of its output, its future output can be worked out. For deciding who does the dishes that is irrelevant. For drawing a prize it is the difference between a draw and a formality.
One thing this page will not tell you is that the draw is verifiable. It is not, and neither is any other in-browser generator: the result is computed on your own machine, and nothing about it proves anything to somebody who was not watching your screen. For a classroom, a game or a decision between friends, that is entirely enough. For a draw with money or a legal obligation attached, you want a process with witnesses, not a web page.
Frequently asked questions
Are the numbers really random?
They come from crypto.getRandomValues, which the browser seeds from operating-system entropy: mouse timings, hardware noise and similar. That is the same source used for cryptographic keys. It is not a mathematical formula whose next output can be predicted from earlier ones, which is what Math.random is.
What does “no repeats” do?
It draws each number at most once, like pulling tickets out of a hat and not putting them back. Six numbers from 1 to 60 come out all different. If you ask for more numbers than the range contains (say six different numbers between 1 and 5) the tool refuses instead of quietly giving you five.
Can I get the same number twice?
Yes, unless you tick “no repeats”. Independent draws from the same range repeat more often than people expect: draw two numbers from 1 to 10 and they match about one time in ten. That is not a fault, it is what independence means.
Is this good enough for a giveaway or raffle?
The numbers themselves are as fair as they can be made. What a web page cannot give you is proof for other people: the draw happens on your computer and leaves no evidence anyone else can check. For an informal giveaway that is fine. Where the outcome is contested or legally binding, run the draw with witnesses or a service built to be audited.
How many numbers can I draw at once?
Up to 1,000. The limit is about what fits on a screen and stays readable, not about the generator. Drawing a million would be just as fast and completely useless to look at.
We use cookies to measure how the site is used and to show ads. The calculators themselves work either way: what you type never leaves your device. Privacy