How to Generate a Seed Phrase Using Dice: BIP-39 Offline Security
🎯 Summary
- Zero Trust Setup: By rolling physical dice, you bypass trusting software random number generators (RNGs) completely.
- What You Need: 1 eight-sided die (d8), 2 sixteen-sided dice (d16), a pen, paper, and the BIP-39 wordlist table.
- The Process: Roll for 11 words, then figure out the 12th word (the checksum) by testing a small set of possibilities directly in a secure wallet.
- Self-Custody Reality: This is as “do-it-yourself” as crypto security gets. Perfect for storing life-changing amounts of wealth.
Generating a seed phrase usually means clicking a button in a wallet app or on a hardware device and writing down the 12 or 24 words it spits out. That is fine for most people. But if you want absolute, unbreakable paranoia-level security? You generate it yourself.
Why? Because trusting a computer’s Random Number Generator (RNG) means trusting the developer who wrote it, the compiler that built it, and the hardware that runs it. By using physical dice, you are creating true entropy in the real world. Nobody can hack a pair of plastic dice.
Here is exactly how to generate a 12-word BIP-39 seed phrase completely offline, using nothing but gravity, plastic, and basic math.

🎲 What is a Seed Phrase (BIP-39)?
A seed phrase is a human-readable representation of a massive cryptographic number. The standard most wallets use is called BIP-39, which relies on a specific English wordlist containing exactly 2048 words.
Every word corresponds to a number from 1 to 2048. When you generate a seed, you’re just picking random numbers and finding their matching words.
💡 Why 12 words instead of 24? 12 words provide 128 bits of entropy, which is mathematically impossible to brute-force before the sun burns out. 24 words doubles the security (256 bits), but also doubles your chances of making a backup mistake. For the vast majority of users, 12 words is more than enough.
⚖️ Wallet vs. Dice Generation
How does manual generation stack up against letting your hardware or software wallet do the work?
| Feature | Wallet-Generated | Dice-Generated |
|---|---|---|
| Trust Model | Trust the manufacturer / developer | Trust physics and math |
| Entropy Source | Silicon RNG chip | Gravity and physical rolling |
| Offline Capability | High (hardware wallets) | Absolute (air-gapped physical) |
| Verification | Opaque (hard to verify RNG) | Transparent (you see the rolls) |
| Difficulty | Very easy | Requires time and attention |
🛠️ Materials Needed
Before we start rolling, you need the right gear. Don’t cheap out on this part.
- 1x d8 (eight-sided die) — this is your “First” die
- 2x d16 (sixteen-sided dice) — your “Second” and “Third” dice
- Printed BIP-39 lookup table — get it here: Valerio Vaccaro’s TRMG Dice Table. You can also download the print-ready PDF from our site
- Paper and pen — no digital notes, ever
- A private room — no windows behind you, no cameras, no shoulder-surfers
💡 Where to buy the dice? You can find d8 and d16 dice on Amazon, at board game stores, or at tabletop RPG shops (D&D supplies). They cost a couple of dollars. Use different colors (e.g., blue d8, purple d16, white d16) so you never mix them up.
⚠️ No 16-sided dice? You can technically use hex-rolling methods with standard casino dice, but the d8 + 2x d16 method we are covering is much faster and less prone to mapping errors.

📝 Step-by-Step Guide
Step 1: Roll the Dice
Grab your three dice and roll them all together on a flat surface. Always read them in this exact order:
- d8 (e.g., Blue) → first number
- First d16 (e.g., Purple) → second number
- Second d16 (e.g., White) → third number
Write the three numbers on your paper, separated by dashes. Example: if the blue die shows 1, the purple shows 1, and the white shows 6, write 1-1-6.
Step 2: Look Up the Word
Open your printed lookup table. The columns are labeled “First” (d8), “Second” (first d16), and “Third” (second d16). Find the row matching your combination.
Here’s an excerpt from the table so you can see how it works:
| First | Second | Third | Word |
|---|---|---|---|
| 1 | 1 | 1 | abandon |
| 1 | 1 | 2 | ability |
| 1 | 1 | 3 | able |
| 1 | 1 | 4 | about |
| 1 | 1 | 5 | above |
| 1 | 1 | 6 | absent |
| 1 | 1 | 7 | absorb |
| 1 | 1 | 8 | abstract |
| 1 | 1 | 9 | absurd |
| 1 | 1 | 10 | abuse |
| 1 | 1 | 11 | access |
| 1 | 1 | 12 | accident |
| 1 | 1 | 13 | account |
| 1 | 1 | 14 | accuse |
| 1 | 1 | 15 | achieve |
| 1 | 1 | 16 | acid |
| 1 | 2 | 1 | acoustic |
| 1 | 2 | 2 | acquire |
| 1 | 2 | 3 | across |
| 1 | 2 | 4 | act |
So 1-1-6 maps to absent. Write it down as “1. absent” on your paper.
📥 Download the full 2048-word BIP-39 dice lookup table as PDF (d8+2×d16) — print it and use it offline during the procedure. Source: TRMG by Valerio Vaccaro.

Step 3: Repeat Until You Have 11 Words
Repeat Steps 1 and 2 until you have written down 11 words in total on your paper. Not 12 — the 12th word is calculated differently (see below).
Take your time. Double-check every single roll and every table lookup before moving on. One wrong word makes the entire seed unusable.
Step 4: The 12th Word (Checksum)
The 12th word in a BIP-39 seed phrase isn’t entirely random. It contains a “checksum” — a mathematical verification that the first 11 words form a valid sequence. You can’t just roll for the 12th word like the others. But you can figure it out yourself.
Here’s how:
- Roll your d8 and one d16 — you get two numbers (e.g., 2 and 5).
- Look up “2-5” in the table: you’ll see there are 16 rows for that combination (one for each possible Third value, from 1 to 16). Each row corresponds to a different word. Your 12th word is one of these 16.
- Open a secure wallet — a hardware wallet (Coldcard, Trezor, Ledger) or a wallet app on an offline device. Start the “Recover” / “Import existing seed” function.
- Enter your 11 words, then try the first of the 16 candidate words as the 12th. If the wallet says “invalid seed”, try the second, then the third, and so on.
- One of the 16 words will pass validation — that’s your correct 12th word. Write it down on your paper.

⚠️ Warning: Never enter your words on a random website or online tool. Perform this step only on an offline wallet or a trusted hardware wallet. The risk is that someone intercepts your words.
💡 Practice run: If you’ve never done this before, try it first with a free wallet (like MetaMask on an old phone disconnected from the internet). Once you understand the flow, repeat the real procedure on a hardware wallet for your actual seed.
Congratulations. You just created a perfectly secure seed phrase out of thin air.
🛡️ After Generation: Security & Import
You have your 12-word seed phrase written on a piece of paper. Now you need to protect it and import it.
Secure the physical backup
Paper burns, ink fades. For long-term storage, consider engraving the words onto a steel plate (products like Cryptosteel or Billfodl exist specifically for this). Store the backup in a secure location, separate from your wallet device.
Import into a compatible wallet
Pretty much every reputable wallet supports importing a 12-word BIP-39 seed phrase:
- Hardware Wallets: Trezor, Coldcard, and Ledger all allow you to “recover” or “import” an existing seed phrase during the initial setup.
- Software/Smart Contract Wallets: DeGate Wallet supports importing self-generated seed phrases, maintaining exceptional privacy and giving you full control over your keys.
This site is supported and sponsored by DeGate Wallet, an exceptional multi-chain self-custody wallet focused on maximum privacy and security. Discover the new DeGate Card!
This article is for informational purposes only and does not constitute financial, legal, or tax advice. Never share your seed phrase with anyone. An error during the manual generation process could result in the irreversible loss of funds.