2.2 KiB
Random Tools
Generate secure or reproducible random values locally in the browser.
Random Tools is a standalone local-first application in the add·ideas Toolbox. Inputs are processed in the browser and are not uploaded.
Current scope
- Unbiased local WebCrypto integers and strings plus normal-distribution samples
- Explicitly non-cryptographic, seeded deterministic generation with reproduction metadata
- Dice expressions, sampling without replacement, Fisher–Yates shuffling and passphrases
- Exact weighted sampling without replacement from bounded quoted CSV input
- Versioned executable seeded recipes for integers, strings, equal-weight samples and weighted samples
- WebCrypto commit–reveal ceremonies with domain-separated commitments, 256-bit private nonces, canonical participant ordering and fail-closed verification
- UUIDv4, UUIDv7 and random ULID generation
- Local draws for coin flips, shuffled card deals and unique integer sequences
- Random calendar dates with weekday and uniqueness controls, exact decimal fractions, and equal-area spherical coordinates
All functionality runs locally. Secure generation never falls back to the seeded source, and deterministic results/recipes are reproducible but not suitable for secrets. Recipes can embed list values, so review them before sharing. Recipes for custom passphrases identify the normalized list by count and SHA-256 but do not embed it, so reproduction requires the same custom input. A commit–reveal result proves only that the supplied reveals match the supplied commitments; participants must publish every commitment before any reveal through a channel of their choice. The browser CSPRNG is not physical entropy, and no operation is presented as certified for regulated drawings or gambling. See docs/ARCHITECTURE.md and docs/PRIVACY-SECURITY.md.
Development
Requires Node.js 22 and npm 11.
npm ci
npm run check
npm run test:browser
Release
npm run release:artifact creates a deterministic release/rand-tools-0.2.0.zip and checksum sidecar.
Licence
GPL-3.0-or-later. Runtime dependencies retain their own licences; see THIRD_PARTY_NOTICES.md.