Seed Settings
Positions use Scharnagl numbering 0–959 (960 total). Position #518 is the standard chess setup.
Randomness Distribution
By default, counts are summed into 24 bins (40 Scharnagl indices each) so the chart stays readable. Toggle to see all 960 bars. Data reflects generations across all users and should trend uniform over time.
Generation History
This history is saved locally in your browser (per device). It does not include generations from other users.
| Nonce | Client Seed | Index | FEN | Timestamp | Action |
|---|---|---|---|---|---|
| No generations yet. Click "Generate Random Position" to start. | |||||
How verification works
A three-step commitment scheme. Glance at the cards below for the overview, or expand the deep-dive for the full protocol.
Commit
Server locks a secret; you only see its hash until reveal.
—
Draw
Each click runs HMAC(server seed, client seed + nonce) → uniform 0–959.
Reveal
Unlock the secret to verify past draws, then a fresh seed commits for new sessions.
Full technical deep-dive
This tool generates Freestyle (Chess960) positions in a way you can verify later. Think of it like a sealed envelope: the server commits to a secret first, then every result is derived deterministically from that secret plus your inputs.
- Server commitment: On page load the server creates a secret Server Seed, but only shows you its SHA-256 hash. That hash is the commitment: the server can’t change the seed later without the hash changing.
- Client seed: You provide a Client Seed (we generate one for you by default). This ensures the final results depend on something the server didn’t choose.
- How a position is picked (uniform): For each click, the server combines the Server Seed, your Client Seed, and the current nonce using HMAC-SHA256, then turns that into a number from 0–959. We use a tiny extra step (rejection sampling) to guarantee every one of the 960 positions is exactly equally likely.
- Nonce stays in order: Each click uses the next nonce number (0, 1, 2…). If your browser ever sends a nonce out of order (for example from a double-click or a delayed request), the server rejects it and the page resyncs to the correct next nonce.
- Race-proof updates: When the server advances the nonce, it does so with a “write only if nothing changed” safeguard (ETag / If-Match). So if two requests happen at the same time, only one can succeed.
- Verify anytime: Use Reveal secret · Start new session to reveal the Server Seed for the current session. You can then recompute every result yourself and confirm the server didn’t tamper with anything. After revealing, the server rotates to a fresh seed for future generations.
Use the revealed Server Seed, your Client Seed, the nonce, and (if shown) the retryCounter. The Copy verification payload button in the dialog includes everything needed.