How BIP39 Seed Phrases Work (and Why You Must Never Reuse One)
July 27, 2026 · DevTools
A 12-word phrase protects your cryptocurrency wallet. It can restore every key, every address, every transaction history. Lose it, and your funds are gone. Someone else sees it, and your funds are gone. The system behind it — BIP39 — is elegant and worth understanding, because the security of your wallet depends entirely on understanding what the phrase does and does not protect.
You can generate BIP39 mnemonics with the BIP39 Mnemonic Generator — but read this warning first.
The security warning you must acknowledge
Never use a BIP39 mnemonic generator on a machine connected to the internet for real wallets. The tool on this page is for educational purposes and testing only. Generate real wallet mnemonics on a hardware device disconnected from the internet, or use a trusted open-source wallet in an air-gapped environment.
With that said: understanding how BIP39 works is essential for every developer building wallet integrations, multisig systems, or key recovery tools.
From entropy to words
BIP39 takes entropy — random bits — and maps it to words from a standardized wordlist of 2,048 words. The process:
- Generate entropy — 128 bits (12 words) or 256 bits (24 words) of cryptographically random data
- Compute a checksum — SHA-256 hash of the entropy, take the first
entropy/32bits of the hash - Append the checksum to the entropy
- Split into 11-bit groups — each group maps to a word index (0–2047)
- Look up each index in the wordlist to get the 12 or 24 words
For 128 bits of entropy + 4 bits of checksum = 132 bits = 12 words:
Entropy: 0123456789abcdef...
Checksum: f (first 4 bits of SHA-256 hash)
Combined: 0123456789abcdef...f
Split: [0x000] [0x001] ... [0x7ff] (11-bit groups)
Words: abandon able ... ... about
The wordlist is carefully chosen: each word is unique in its first 4 letters, so aban is enough to identify abandon. No word is an offensive term. The list is language-specific — English, Japanese, Korean, Spanish, French, Italian, Portuguese, Czech, Chinese (simplified and traditional).
Why the checksum matters
Without a checksum, a single-bit error in one word would silently produce a different wallet. With a checksum, most accidental changes — a typo, a swapped word, a missing word — are caught, because a wallet client will reject a phrase whose checksum does not match.
This is the same principle as a credit card number's last digit (Luhn algorithm): not for security, but for error detection. A typo in a seed phrase will usually not silently create a different wallet — it will fail to restore.
A note of caution, though: a passing checksum is not a proof that the phrase is the original one. Some altered word sequences can still produce a valid checksum, so a wallet that accepts a phrase only confirms the words are internally consistent — not that they are the ones you intended. Always verify a recovered phrase by checking that the addresses it derives are the ones you expect, and never edit a seed phrase by hand.
Deriving keys from the mnemonic
The mnemonic is not the private key directly. It goes through a PBKDF2 key-stretching function with a salt (mnemonic + optional passphrase) to produce a 512-bit seed. The seed is then used in BIP32/BIP44 hierarchical deterministic key derivation to generate the entire key tree.
Mnemonic (12-24 words)
→ PBKDF2 (2048 iterations, SHA-512)
→ 512-bit Seed
→ BIP32 HD Key Derivation
→ Master Key
→ Derived Keys (BIP44 paths: m/44'/0'/0'/0/0, etc.)
This means: one mnemonic generates all addresses in your wallet, and you can derive child keys without knowing the original entropy directly.
Entropy and keyspace
128 bits = 2^128 possible 12-word mnemonics ≈ 1.7 × 10^38. That is a staggeringly large number. Brute-forcing a BIP39 mnemonic is computationally infeasible.
The security of the system depends entirely on the randomness of the entropy source. A mnemonic generated with weak randomness (a broken RNG, low-entropy source, or predictable "random" selection) can be guessed. Hardware wallets use certified random number generators; software wallets use the OS's secure random source (CSPRNG).
Passphrases (BIP39 optional extension)
BIP39 allows an optional passphrase — a 13th "word" that is not stored with the mnemonic. Without it, the passphrase is an empty string.
Passphrase: "" → Seed A → Wallet A
Passphrase: "hunter2" → Seed B → Wallet B (completely different)
Passphrase: "HUNTER2" → Seed C → Wallet C (case-sensitive)
This means: even if an attacker obtains your 12-word mnemonic, they cannot access your funds if you used a passphrase they do not know. It also means: if you forget the passphrase, the words alone are useless. There is no recovery mechanism.
This is the right balance: passphrase-protected mnemonics are genuinely more secure, but they require careful backup practices.
What BIP39 mnemonics do not protect
- Social engineering. No cryptography protects against being tricked into sending funds.
- Phishing. Phishing sites that look like your wallet drain funds before you realize the mistake.
- Keyloggers and clipboard loggers. Copy-pasting a mnemonic from a text file exposes it.
- Cloud backups. If your mnemonic is in an iCloud note, a compromised Apple account exposes it.
The mnemonic is the secret. Treat it like cash: write it on paper, store it physically, never type it on a networked device.
Generating test mnemonics
The BIP39 Mnemonic Generator generates valid BIP39 mnemonics using the Web Crypto API for entropy. Use the validation feature to verify that a mnemonic's checksum is correct — a mnemonic with an invalid checksum will not restore any wallet in a real wallet application.
For generating random identifiers in non-cryptographic contexts, the UUID Generator is the right tool. For secure random passwords and passphrases, use the Password Generator.