Transparent product methodology
How TarotCards24 Selects Random Cards
The exact client-side method TarotCards24 uses to select cards without replacement, choose reversals and protect question privacy.
Published 2026-10-17 · Version 1.0 · Editorial and technical review; no native-speaker review is claimed.
Math.random() with crypto.getRandomValues() on 85 pages. Question text is not part of the random seed.Selection algorithm
- Copy the selected deck into a working pool.
- Generate a Web Crypto random number in [0, 1).
- Multiply by the current pool length and take the integer index.
- Remove the selected card, preventing duplicates in the same spread.
- For methods using reversals, generate a separate value for orientation.
values = new Uint32Array(1); crypto.getRandomValues(values); random = values[0] / 4294967296; index = Math.floor(random * pool.length);Claims and limits
| Claim | Status |
|---|---|
| Client-side selection without replacement. | Verified in deployed code. |
| Stronger and less predictable source than Math.random. | Technical property; it does not make Tarot predictive. |
| Equal intended probability at each draw from the remaining pool. | True for the formula, subject to browser implementation. |
| Fixed-future prediction. | Not claimed. |
Privacy boundary
GA4 receives tarot_spread_complete only after analytics consent, with spread ID, deck ID, card count, language and page path. The question, card names and interpretation are excluded.
Auditability
The implementation is versioned as /assets/tarot-random-v1.js. Random draws are intentionally not reproducible from a public seed.