GeneratorsFree
Free dice roller. Roll NdX dice (like 3d6) with optional modifier. Great for games and quick random totals.
Last updated 9 October 2026
Most pages like this one claim to be fair and leave it there. Here is the actual arithmetic.
Each die is rolled by asking the browser for a cryptographically random 32-bit number and taking the remainder when divided by the number of sides. That is the standard approach and it carries a known flaw: unless the number of sides divides 232 exactly, some faces get one more of the 4,294,967,296 possible source values than the others.
For a six-sided die, 4,294,967,296 divided by 6 leaves a remainder of 4, so four faces are backed by 715,827,883 source values and two are backed by 715,827,882. The favoured faces are more likely by a factor of about 1.0000000005, which is to say by about one part in two billion. For a twenty-sided die the remainder is 16 and the excess is about one part in a billion. The largest case this tool allows, a 1,000-sided die, is about one part in six million.
To notice the d6 bias with any confidence you would need to roll on the order of a billion billion times. It is real, it is disclosed here because you should be told, and it does not matter for any game. If it ever did matter, the fix is to reject source values that fall in the uneven tail and draw again, which is what Node’s crypto.randomInt does.
One d6 gives every face the same chance. Three of them do not. There are 216 possible combinations of 3d6, and only one of them totals 3, while 27 of them total 10 and 27 total 11. A ten is twenty-seven times more likely than a three.
This is why tabletop systems roll several small dice rather than one big one. 3d6 clusters hard around the middle and makes extremes rare; a single d18 would make 3 and 10 equally likely. If you are designing something and want results to bunch, add dice. If you want a flat spread, use one die with more faces.
The same reasoning explains why a modifier is not the same as a bigger die. On this page the modifier is added once to the total, not to each die, so 3d6+2 shifts the whole curve up by two and leaves its shape alone.
crypto.getRandomValues(). developer.mozilla.orgcrypto.randomInt(). nodejs.org/api/cryptoMath.random(). developer.mozilla.orgThe figures on this page were computed from this tool’s own code on 9 October 2026. Where a probability is marked as simulated, it came from 20,000 simulated runs and is an estimate, not an exact value.
Very nearly, and the gap is written out above rather than hidden. A six-sided roll favours four of the six faces by about one part in two billion, because of how a random 32-bit number is squeezed into a range of six. No game will ever notice it.
Because middling totals are genuinely more likely. Of the 216 combinations, 27 total 10 and 27 total 11, while exactly one totals 3 and one totals 18. Adding dice together always bunches the result toward the middle.
To the total, once. 3d6+2 rolls three dice, adds them, then adds 2.
The tool caps at 100 dice of up to 1,000 sides each, and applies the cap without telling you. Roll again for more.
No. Anything under two sides is refused with "Enter valid dice." rather than silently adjusted, because the result would be meaningless.
Both. The total is on top and the individual rolls are listed underneath in the order they were generated.
The browser’s cryptographic random source, crypto.getRandomValues. If a browser lacks it the page falls back to Math.random(), which is fine for dice and unsuitable for anything secret.
Not if the result has to be verifiable. The page keeps no record and produces no seed, so there is nothing to show afterwards. It is for play.