BIP-39: 12 vs 24 word mnemonics — what actually changes
A calm theory note on BIP-39: 128-bit vs 256-bit entropy, checksums, seed derivation, and when 12 vs 24 words matter for wallets — without the fear marketing.
devrels.xyz/a/193short linkWallet setup screens still ask a quiet question: 12 words or 24? Forums answer with slogans. The standard answers with bit counts. This is a short theory piece for builders and careful users — what changes, what does not, and when the choice is real.
Related: hardware wallets and entropy · Solana derivation paths. Spec: BIP-39.
What a mnemonic is (and is not)
A BIP-39 mnemonic is an encoding of random bits (entropy), plus a small checksum, mapped into a fixed wordlist (2048 words → 11 bits per word). From that mnemonic (and optional passphrase) you derive a binary seed; from the seed, HD wallets derive keys along paths (BIP-32 / BIP-44 / Solana’s usual m/44'/501'/… style paths).
The mnemonic is not “the private key” in the app sense. It is the root secret from which many keys can be grown. Lose it, and you lose the tree. Leak it, and an attacker can regenerate the tree.
The bit table
BIP-39 ties length to entropy size:
Words Entropy Checksum Total bits in payload
12 128 bit 4 bit 132 (12 × 11)
15 160 bit 5 bit 165
18 192 bit 6 bit 198
21 224 bit 7 bit 231
24 256 bit 8 bit 264 (24 × 11)So: 12 words ≈ 128 bits of entropy; 24 words ≈ 256 bits. The checksum is not extra secret strength against an attacker who only sees a wrong guess space — it is mainly error detection when humans mistype a word. The wordlist size fixes 11 bits per word; longer phrases mean more entropy bits, not “stronger English.”
What 128 vs 256 bits means in practice
Cryptography usually talks about work factor to exhaust the key space when the secret was generated properly. Under that model:
- 128-bit secrets are the workhorse security level of much of the internet (think AES-128-class targets). Exhaustive search is not a realistic remote attack for a randomly generated 12-word phrase.
- 256-bit secrets match a higher classic target (AES-256-class). They leave more margin against future cryptanalytic surprises and against “I want the seed material as wide as a full curve key” preferences.
They are not “twice as safe” in the casual sense that 24 is twice 12. Security here is exponential in the bit length of the entropy, not linear in the word count. Going from 128 to 256 bits is a large jump in search space — and for a well-generated mnemonic, both sit beyond “someone on the internet brute-forces your phrase” territory.
The attacks that actually empty wallets almost never look like “try all 12-word combinations.” They look like phishing, malware, SIM swaps against recovery flows, $5 wrench, cloud screenshots of seed backups, or — worse — wallets that never used enough real entropy in the first place (see the hardware entropy piece).
Checksum and user error
Longer phrases give a larger checksum field (4 bits at 12 words, 8 bits at 24). That improves detection of typos in theory. In practice, wallet UX (word suggestions, checksum validation on import) matters more than the two-bit difference in checksum length. A 12-word phrase with a clean import UI beats a 24-word phrase written wrong on wet paper.
Passphrases (the 13th / 25th “word”)
BIP-39 allows an optional passphrase. It mixes into seed derivation so the same word list can hide multiple wallets. That can be useful (plausible deniability, compartmentalization). It can also brick funds if the passphrase is forgotten or mistyped — there is no checksum on the passphrase. Treat it as a second secret with its own backup story, not as a free upgrade that replaces good entropy.
When 12 is enough; when 24 is reasonable
12 words are a solid default for most consumer wallets when generation is on a trustworthy device and backup discipline is real. Many mobile and extension wallets standardize here for UX: shorter to write, shorter to verify aloud, fewer transcription errors.
24 words are reasonable when you want seed material at the full 256-bit width, when policy or custody design calls for it, or when a hardware wallet’s default ceremony is already 24 and you do not want to fight the device. Some institutional and cold-storage procedures simply standardize on 24 so nobody bikesheds length in a ceremony.
Neither length fixes a bad backup. Neither length saves a phrase that was generated with a weak RNG. Neither length helps if the phrase is typed into a fake “support” site.
Solana-shaped notes
Solana accounts are ed25519 keypairs. A single key is 32 bytes of seed material at the curve layer; HD wallets still hang that off a BIP-39 root in most consumer apps. Whether the root mnemonic was 12 or 24 words, child keys are derived; the phrase length does not change on-chain account layout. What matters for Solana users is the same as everywhere else: honest entropy at generation, correct derivation path, and backups that never touch a hot keyboard if the funds are serious.
Multi-account wallets (many addresses from one phrase) multiply operational risk of phrase leakage — one leak drains the tree — but that is about hierarchy, not about 12 vs 24.
A simple decision rule
If generation is trustworthy and backup is offline:
12 words — fine for most people and most apps
24 words — fine when you want 256-bit-wide seed material
or your device/process standard says so
If generation or backup is shaky:
Word count will not save you — fix the ceremonyWhat this piece is not saying
- That 12-word wallets are “toy” security by default.
- That 24 words make phishing safe.
- That you should re-generate a living wallet just to lengthen the phrase (migration is its own risk).
- That BIP-39 is the only encoding that exists (other schemes appear in niches; most retail still means BIP-39).
Resources
Bottom line
Twelve words encode ~128 bits of entropy; twenty-four encode ~256. Both are strong when the bits were real and the backup is offline. Prefer 24 when you want wider seed material or a stricter process default; prefer 12 when shorter ceremonies reduce human error. Spend anxiety on entropy quality and phishing resistance — not on doubling word count for its own sake.
Keep reading
Most wallets optimize for onboarding; Unruggable optimizes for not getting drained. The project spans a pure-bash ATM-style CLI wallet, a Rust/Dioxus app for all five platforms with MPC instead of seed phrases, and an open-firmware ESP32 signer that only signs when you physically press the button. The first hardware run already sold out.
Every Solana transaction verifies Ed25519 signatures over the transaction itself — but when your program needs to verify a signature over an arbitrary message (a signed voucher, an oracle price, a relayed intent), you need the Ed25519 precompile. It can't be CPI'd, its offsets are attacker-controlled, and getting the introspection check wrong is a classic exploit. The full reference.
Your wallet is your identity. Sign In With Solana turns that into a real auth protocol: a structured message, a wallet signature, and a server that verifies the Ed25519 sig and issues a session. No email required. Here's how to implement the full stack — frontend signIn call, backend nonce management, signature check, and JWT — plus the security edge cases that trip people up.
Get new articles in your inbox
Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.
