How SeedSigner turns dice rolls into a seed phrase
Interactive walkthrough of the algorithm used by SeedSigner for 50 dice rolls → 12-word BIP-39 mnemonic. Everything runs locally in your browser.
This page is for education and verification of the algorithm only.
1 Roll a 6-sided dice 50 times
Official example is pre-filled. Change any value — everything below updates live.
↓
2 Concatenate the 50 roll values into 1 string
—
Length: 0 / 50
↓
3 (SHA-256) Hash the string
SeedSigner hashes the string as UTF-8 text.
Input mode: TEXT ·
SHA-256( UTF-8 bytes of the digit string )
Same as: hashlib.sha256(roll_data.encode()).digest()
↓
4 Truncate for entropy
Keep only the first 16 bytes of the hash from Step 3. These raw bytes are the entropy.
↓
5 Convert the entropy hex to binary
The 16 entropy bytes from Step 4, shown in hex and binary.
↓
6 Calculate the checksum
Hash the 16 raw entropy bytes (not the hex text) and keep only the first 4 bits of that hash.
Input mode: RAW BYTES ·
SHA-256( 16 entropy bytes ) — not the hex string as text
Same as: hashlib.sha256(bytes.fromhex(entropy_hex)).digest()
1. Input = the same 16 raw entropy bytes (hex shown for reading only)
2. SHA-256 of those raw bytes → full 32-byte digest
3. Take only the first byte of that digest
4. Keep only the top 4 bits of that first byte
↓
7 Append the checksum to the entropy binary
128 entropy bits + 4 checksum bits. Checksum bits highlighted in pink.
↓
8 Partition into 12 groups
Each group will become a word in the seed phrase.
↓
9 Convert the binary to decimal
Each 11-bit group is an integer from 0 to 2047 since 2^11 = 2048.
↓
10 Lookup the words from the BIP-39 wordlist
Each integer is the (0-based) index for the standard 2048-word English list (0 = abandon … 2047 = zoo).
↓
11 Final 12-word mnemonic
This page is for education and verification of the algorithm only.