🎲
Dice Roller3D Dice Roller

Generation method · reviewed 29 July 2026

How the dice roller chooses and displays a result

A table needs a clear result more than a dramatic animation. This page separates the physical WebGL path, the logical fallback generator, the notation parser and the session log so you can see what the tool does—and what it cannot prove.

Physical WebGL path

When WebGL and motion are available for the selected roll, Cannon simulates the dice bodies. Initial positions, rotations and impulses use ordinary browser randomness. After the bodies settle, the engine rotates each face normal into world space and maps the uppermost face to the displayed value. The cryptographic fallback generator does not preselect this physics result.

Fallback and non-WebGL path

Reduced-motion mode, an unavailable WebGL context, very large rolls and handled animation errors use the logical generator. For each die it requests a 32-bit unsigned integer from crypto.getRandomValues when available, rejects values outside the largest evenly divisible range, then maps the remainder to the die. If that API is unavailable, the compatibility path uses Math.random.

Supported notation and input limits

The public controls support d4, d6, d8, d10, d12, d20 and d100, between 1 and 100 dice, and modifiers from −100 to +100. Examples include 1d20+5, 5d6 and 1d100-percentile. Keep-high, keep-low, exploding dice and comparison operators are not part of this parser; do not assume notation from a virtual tabletop will transfer unchanged.

Physical d100 and percentile d100 are different displays

In the WebGL path, physical mode simulates one 100-face die and reads its uppermost face; percentile mode simulates a tens die and a units die, then maps their uppermost faces. Under the common tabletop convention, 00 plus 0 means 100. In fallback paths, the logical generator produces the equivalent 1–100 result and components. The breakdown names the selected mode so the receipt can be interpreted later.

Worked result

For 2d6+3, the tool selects two independent values from 1 to 6, shows each value, then adds 3 once. A roll of 2 and 4 therefore produces a total of 9. The session receipt keeps the notation, individual dice and total until you clear the log or reload the tab.

Short sequences do not have to look balanced

Six d6 throws do not have to contain every face, and ten coin-like outcomes do not have to split evenly. A fair generator describes the process; a short streak is not proof of bias. This tool does not provide a statistical certification or an export suitable for an audited draw.

Privacy and storage

Dice selection and the visible history run in the browser. The current tool has no account, shared roll log or result-upload API. Clear removes the current list; reloading the page starts a new session. The linked Google Fonts are a separate network request and are not part of the roll engine.

Accessibility behavior

Controls have programmatic labels, results use live regions, the roll overlay receives keyboard focus and Escape closes it. Focus returns to the roll button. A reduced-motion preference removes non-essential transitions; the result remains available without relying on animation.

Verification record

On 29 July 2026, the maintained automated checks passed for all seven supported physical shapes, face/value mappings, modifiers, result ranges, physical and percentile d100 output, session history, overlay cancellation and fallback behavior. Browser checks also exercised Chromium with desktop and narrow mobile viewports, WebGL and non-WebGL paths, focus handling and console errors. This is a reproducible software check, not certification for gambling or regulated use.

Maintenance and corrections

The tool is maintained by Steve T.. Report a notation, result-display or accessibility problem through the Pink Banana Tools contact page, including the notation, browser and result you observed.

Open the dice roller or inspect worked table situations.

Related dice guides

D20 & D&D guide · Dice notation · Dice probability · D100 roller