Deterministic Wallets
Twelve words become millions of addresses.
A modern Bitcoin wallet doesn't store a list of unrelated keys. It stores a single seed — a random number, written down as words — and re-derives every address it will ever hold from that one number. Generate a fresh mnemonic; watch each downstream value change in lock-step.
Deterministic wallet
Twelve words become millions of addresses.
A modern Bitcoin wallet doesn't store a list of unrelated keys. It stores a single seed — a random number, written down as words — and re-derives every address it will ever hold from that one number. Type your own words below or regenerate a fresh mnemonic; watch each downstream value change in lock-step.
Entropy → mnemonic (BIP39)
A wallet starts by generating 128 cryptographically random bits. Those bits, plus a short checksum, are split into 12 chunks of 11 bits each. Each chunk indexes into a fixed list of 2048 English words. The result — your mnemonic — is what you write down.
128 bits of entropy. A 12-word
mnemonic gives 128 bits — the floor for serious use. 24 words
gives 256 bits and a future margin against advances in cryptanalysis.
Click any chip above to type a different word.
Mnemonic + passphrase → seed
The mnemonic is stretched into a 512-bit seed using PBKDF2-HMAC-SHA512 with 2,048 iterations. An optional passphrase — sometimes called the "25th word" — salts the function, so the same mnemonic with a different passphrase produces an entirely unrelated wallet.
Seed → master extended key (BIP32)
HMAC-SHA512 of the seed against the constant string "Bitcoin seed" yields
a 64-byte output. The left 32 bytes become the master private key. The right 32 bytes
become the chain code — the seed-of-the-tree that lets the wallet derive children
deterministically. Together they are serialized as an extended key.
xprv is the private version; xpub is the
public one. You can hand out an xpub safely — anyone
holding it can derive your public addresses, but not spend from them.
Derivation path (BIP44 / 49 / 84 / 86)
The master key derives children at indices. Each integer is one step down the tree; an apostrophe marks a hardened step that can't be reversed even if a child key leaks. The path tells the wallet what kind of address to produce.
m/84'/0'/0'/0/x, broken down as:
m (master) /
84' (purpose, hardened) /
0' (coin type — 0 = Bitcoin) /
0' (account 0) /
0 (external chain — receive addresses; 1 is for change) /
x (address index).
Receive addresses
Finally, the wallet derives one child key per address index along the external chain. Each child public key is hashed and encoded in the format the purpose level prescribed — base58 for legacy, bech32 for SegWit, bech32m for Taproot.
m/84'/0'/0'/0/0m/84'/0'/0'/0/1m/84'/0'/0'/0/2m/84'/0'/0'/0/3m/84'/0'/0'/0/4m/84'/0'/0'/0/5m/84'/0'/0'/0/6m/84'/0'/0'/0/7