Exact outcome mapping
Binary choices and coin flips
A single flip requests one unsigned byte and uses its least-significant bit. Even byte values map to the first configured label and odd byte values map to the second. Because a byte contains 128 even and 128 odd values, the mapping is balanced. Batch flips request packed bytes and read their bits least-significant first; every extracted bit is still an independent binary sample from the source.
Dice and bounded integers
Dice use an unsigned 32-bit little-endian value. When 232 is not divisible by the number of faces, values in the incomplete upper bucket are rejected and a fresh value is requested. An accepted value is reduced modulo the face count, then one is added for the displayed die result. This avoids the modulo bias produced by mapping every possible 32-bit value directly.
Weights and custom labels
All current tools are unweighted. Editing labels changes only the displayed names; it does not change either configured side's probability. Weighted choices are not implemented.
Selection is separate from presentation
The browser selects the result before starting an animation timer. Reduced-motion mode, the visible animation toggle, CSS failure, rendering speed, and the moment a user clicks cannot alter that selected value. The result is also exposed as text and through an ARIA live status, so the coin face is not the only indicator.
What the tests cover
- Exact binary boundaries using deterministic bytes 0, 1, 254, and 255.
- Lower and upper accepted values for D4, D6, D8, D10, D12, and D20.
- Rejection of the incomplete upper modulo bucket before a value is accepted.
- An exhaustive deterministic byte fixture with exactly balanced extracted bits.
- A 10,000-result batch with length, binary range, and total checks.
- Series completion, cumulative proportions, deviation, and streak analysis.
- Explicit failure when Web Crypto is unavailable; no
Math.random()fallback.
Inspect the random module, random fixtures, and decision tests.
Browser and security assumptions
The method relies on a current browser, a secure context, a working operating-system random source, and an uncompromised device and page. Web Crypto is designed for cryptographic use, but this site does not expose the browser's internal entropy source, produce a signed transcript, commit to a value before reveal, or let another party independently reproduce a particular result.
Important limitations
- “Cryptographically strong” does not mean physically or atmospherically random.
- A 50/50 configuration does not guarantee short-run balance or alternating outcomes.
- Client-side results can be changed by a compromised device, browser extension, or modified source.
- This tool is not independently audited evidence for disputes, gambling, legal drawings, prizes, or regulated use.
- Do not use random output instead of informed consent, safety judgment, or professional advice.
Corrections and security reports
Report reproducible correctness problems through the public issue tracker. For a sensitive vulnerability, use the repository's Security page and private reporting option when available; do not publish exploit details in a public issue.