AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I roll dice online for D&D or board games?

Open AnyTool Dice Roller, add the dice you need (d4, d6, d8, d10, d12, d20, d100) with a quantity per type and an optional +/− modifier, then press Roll or the spacebar — the dice tumble and settle on values decided by your browser’s crypto-secure randomness for fair, unbiased rolls. You can also type standard RPG notation like “3d6+2”, “2d8-1” or “4d6kh3” (keep the highest 3), and a d20 supports 5e advantage or disadvantage. Every die, the per-group subtotals, the grand total and a roll history are shown. Nothing is uploaded.

  • Crypto-fair rolls (Web Crypto, no modulo bias) — never Math.random
  • Standard dice d4, d6, d8, d10, d12, d20, d100 with a quantity per type
  • RPG notation: 3d6+2, 1d20, 2d8-1, 4d6kh3 (keep highest/lowest), modifiers
  • d20 advantage / disadvantage (roll 2d20, keep highest / lowest)
  • Animated tumble, every die + subtotals + total, roll history · 100% in your browser

What is

Dice Notation (NdS+M)

Dice notation is a compact algebra for tabletop dice: NdS means “roll N dice with S sides” and an optional +M or −M adds or subtracts a flat modifier — so 3d6+2 rolls three six-sided dice and adds 2. Keep/drop suffixes like kh (keep highest) and kl (keep lowest) select a subset, as in 4d6kh3, and rolling 2d20 keeping the higher or lower result is D&D 5e advantage or disadvantage.

Generators

Related terms

Polyhedral diceModifierKeep highest / lowestAdvantage & disadvantageCrypto-secure random

Frequently Asked Questions

Yes. AnyTool rolls each die with crypto-secure randomness (Web Crypto) using rejection sampling, so every face is exactly equally likely with no bias.

AnyTool Dice Roller draws each die from the browser’s Web Crypto API (crypto.getRandomValues) using rejection sampling, so a d20 gives every number from 1 to 20 exactly a 1-in-20 chance with no modulo bias — it never uses the predictable Math.random. Unlike a physical die, there is no wear, weighting or “loaded” bias, which makes it a fair stand-in for tabletop RPGs and board games when you have lost your dice.

You can type NdS+M notation — e.g. 3d6+2, 1d20, 2d8-1 — plus keep-highest/lowest like 4d6kh3 and 2d20kh1 for advantage.

The roller parses standard RPG dice notation. NdS rolls N dice of S sides; an optional +M or −M is a flat modifier (3d6+2 = three d6 plus two). You can combine terms (2d6+1d4+3), use d% for a d100, and apply keep/drop suffixes: kh keeps the highest, kl the lowest, dh drops the highest and dl drops the lowest — so 4d6kh3 (the classic ability-score roll) keeps the best three of four d6. Rolling 2d20kh1 is mechanically advantage, and 2d20kl1 is disadvantage.

Advantage rolls two d20s and keeps the higher; disadvantage keeps the lower. Toggle it on any d20 and the kept die is highlighted.

In D&D 5e, advantage means you roll two d20s and use the higher result before adding your modifier, and disadvantage uses the lower. AnyTool Dice Roller has a Normal / Advantage / Disadvantage toggle that appears whenever your pool includes a d20: it rolls 2d20, shows both dice with the kept one highlighted, and adds your modifier to the chosen value. Per 5e, advantage and disadvantage do not stack and cancel each other out if you have both.

No. Every roll, dice pool, notation and the history stays in your browser — nothing is uploaded, logged or stored, and no sign-up is needed.

AnyTool Dice Roller runs entirely in your browser. The random rolls, your dice pool, any notation you type and the roll history are computed locally and are never sent to a server, logged, or saved — close the tab and everything is gone. There is no account, no tracking and no upload, and the page works offline once cached. An optional dice rattle is synthesized with the Web Audio API (no audio files) and only plays when you turn sound on.

Detailed Explanation

Methodology

How the Dice Roller Rolls Each Die

AnyTool Dice Roller rolls every die in the browser using the Web Crypto API. A die of S sides is produced as secureRandomInt(S) + 1, where the integer in [0, S) comes from crypto.getRandomValues via rejection sampling — values that would fall outside an even multiple of S are discarded — so there is no modulo bias and every face is exactly equally likely. Math.random is never used. Build a pool of mixed dice (d4, d6, d8, d10, d12, d20, d100) with a quantity per type and a flat +/− modifier, or type standard dice notation that an in-page parser turns into signed terms and rolls. Each roll plays a short CSS tumble animation, then shows every individual die (pips for a d6, the number for others), per-group subtotals and the grand total.

  • Each die = secureRandomInt(sides) + 1 from crypto.getRandomValues (CSPRNG)
  • Rejection sampling removes modulo bias — every face is exactly equally likely
  • Math.random is never used for any roll
  • Mixed dice pools (d4–d100) with quantity per type and a flat modifier
  • All rolls run client-side — no server round-trip
Use Cases

Dice Notation, Keep/Drop and Advantage

The roller parses standard tabletop dice notation. NdS rolls N dice of S sides; an optional +M or −M is a flat modifier, so 3d6+2 rolls three six-sided dice and adds two, and 2d8-1 rolls two d8 and subtracts one. Terms can be combined (for example 2d6+1d4+3) and d% is treated as a d100. Keep/drop suffixes select a subset: kh keeps the highest, kl the lowest, dh drops the highest and dl drops the lowest — 4d6kh3 is the classic D&D ability-score roll (keep the best three of four d6, equivalent to 4d6dl1). For a d20, a Normal / Advantage / Disadvantage toggle rolls 2d20 and keeps the higher (advantage) or lower (disadvantage) value before adding the modifier, exactly as in D&D 5e; per the rules these never stack and cancel out if you have both.

  • NdS+M notation: 3d6+2, 1d20, 2d8-1, combined terms and d% (d100)
  • Keep/drop: kh (keep highest), kl (keep lowest), dh, dl — e.g. 4d6kh3
  • Advantage = 2d20 keep highest; disadvantage = 2d20 keep lowest (5e)
  • Dropped dice are shown but excluded from the subtotal
  • Shows every die, per-group subtotals, the grand total and a roll history
Privacy & Security

Independence, Fairness and Privacy

Each die is an independent event: a d20 gives every value from 1 to 20 a 1-in-20 chance on every roll, and past results never change the next — so a run of low rolls does not make a high number “due” (the gambler’s fallacy). Summing several dice (like 3d6) produces a bell-curved total that clusters near the middle, which is expected probability rather than bias. Because everything runs in the browser, no roll, dice pool, typed notation or history is sent to a server, logged or stored — closing the tab discards it, and the page works offline once cached. An optional dice rattle is synthesized with the Web Audio API (no audio files are downloaded) and only plays when sound is turned on.

  • Every die is independent — no number is ever “due” (gambler’s fallacy)
  • Multi-die totals are bell-curved (expected probability, not bias)
  • No uploads, logging or storage — rolls and history stay in the browser
  • Works offline after first load (PWA-cached); free, no account, no tracking
  • Optional dice rattle synthesized via Web Audio — no audio files
Dice roller: in-browser (AnyTool) vs typical online dice tools
CapabilityAnyToolTypical online dice tools
RandomnessWeb Crypto CSPRNG, rejection sampling (no bias)Often Math.random
ProcessingRuns in your browserSometimes server-side
Dice typesd4, d6, d8, d10, d12, d20, d100, quantity per typeOften a fixed set
RPG notation3d6+2, 2d8-1, 4d6kh3, d%, combined termsOften basic or none
Advantage/disadvantage2d20 keep highest / lowest toggle (5e)Frequently missing
Results detailEvery die, per-group subtotals, grand totalOften just a total
HistoryFull roll-history log with breakdownOften limited or none
PrivacyNever uploaded, not stored, works offlineMay transmit or log
Cost / signupFree, no signupOften ad-heavy or gated

AnyTool rolls every die locally with crypto-secure randomness for fair, unbiased results and uploads nothing.