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. 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.
Notation entry
Enter a die as d20 or 1d20. Put the number of dice before the d and one optional modifier after the sides: 2d6+3 means roll two d6 and add 3 once. The controls show the parsed count, sides and modifier before you roll.
Rolling multiple dice
Use 2d6, 5d6 or another supported count, or adjust the count control. The receipt lists every individual face and then the arithmetic total. It does not silently apply keep-high, discard or reroll rules.
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.
D100 display modes
Choose physical mode when you want one modeled 100-sided die. Choose percentile mode when the table expects two d10s, one read as tens and one as units. Both cover 1–100, but changing modes changes how the visible dice are read, so declare the mode before rolling.
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.
Randomness and execution paths
The animation decides a result only on the physical WebGL path: the value is the uppermost face after settling. Reduced-motion, non-WebGL, large-roll and handled-error paths use the logical generator instead. Both are intended for casual tabletop play, not regulated draws, gambling or official disputes.
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.
Session history
The visible log is browser-memory for the current tab, not a permanent record. Clear removes it immediately; reloading or closing the page starts without the prior list. If a roll must be retained for a table record, copy it before leaving the page.
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.
Mobile and reduced motion
The same notation, dice controls, result detail and session log work at narrow phone widths. When the browser reports prefers-reduced-motion: reduce, the tool uses the logical result path and avoids the extended physical throw; no result depends on watching motion.
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.