A seed phrase and a private key can both spend your crypto, but at different levels. A seed phrase, or recovery phrase, is 12 to 24 words from which an HD wallet calculates all of its private keys: every account, coin and address, including ones it has not used yet. A private key is one 256-bit number that controls a single address, or one account on Ethereum and other EVM networks. The phrase can always recreate a key derived from it; no key can give back the phrase. This guide compares the two, traces a public test phrase down to its first Bitcoin address, and covers what each restores, when a key is all you have, the risk of exporting keys and which one to back up. New to the topic? Start with what a seed phrase is and how it works.
| Seed phrase | Private key | |
|---|---|---|
| What it is | Words that encode the random entropy an HD wallet is built from | One secret number that signs for one address or account |
| What it controls | Every account, coin and address derived from it, including future ones | Only the address or account calculated from that key |
| Format | Words from a 2048-word BIP39 list, almost always English | Bitcoin: WIF, a Base58 string; Ethereum: 64 hex characters; sometimes an encrypted file |
| Length | 12, 15, 18, 21 or 24 words: 128 to 256 bits of entropy plus a checksum | 256 bits: 64 hex characters, or a 52-character WIF starting with K or L (51 characters starting with 5 if uncompressed) |
| How wallets use it | Shown at setup to write down; entered again only to restore | Derived from the seed to sign transactions; shown only through an export option |
| What to back up | The phrase, plus the passphrase if you set one | Only keys that do not come from your phrase, such as imported accounts and paper wallets |
The phrase is the root of a tree and the keys are its leaves: every leaf can be recomputed from the root, but no leaf leads back to the phrase. How a WIF string is built is covered in Bitcoin WIF and Base58.
The values below come from the public BIP39 test phrase with no passphrase, the same input BIP84 uses for its test vectors, so never send funds to its addresses.
m/84'/0'/0'/0/0 is the first receiving address of the first native SegWit account.Phrase abandon abandon abandon abandon abandon abandon
abandon abandon abandon abandon abandon about
Entropy 00000000000000000000000000000000
Seed 5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc1
9a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4
Master xprv xprv9s21ZrQH143K3GJpoapnV8SFfukcVBSfeCficPSGfubmSFDxo1kuHnLisriDvSnRRuL2Qrg5ggqHKNVpxR86QEC8w35uxmGoggxtQTPvfUu
Path m/84'/0'/0'/0/0
Private key 4604b4b710fe91f584fff084e1a9159fe4f8408fff380596a604948474ce4fa3
WIF KyZpNDKnfs94vbrwhJneDi77V6jF64PWPF8x5cdJb8ifgg2DUc9d
Public key 0330d54fd0dd420a6e5f8d3624f5f3482cae350f79d5f0753bf5beef9c2d91af3c
Address bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
We computed these values with the @scure/bip39, @scure/bip32 and @scure/btc-signer libraries. The WIF key, public key and address match the test vectors in BIP84, which lists the same master key as a zprv. The seed phrase to private key converter repeats the steps from seed to address for any test phrase.
Change any number in the path and you get a different key. BIP44 notes that one master seed can serve an unlimited number of coins, each in its own branch. The test phrase gives, among many others:
| Path | What it is | Address |
|---|---|---|
m/84'/0'/0'/0/0 |
Bitcoin, native SegWit, first receiving address | bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu |
m/84'/0'/0'/0/1 |
Bitcoin, native SegWit, second receiving address | bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g |
m/44'/0'/0'/0/0 |
Bitcoin, legacy, first receiving address | 1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA |
m/44'/60'/0'/0/0 |
Ethereum, first account | 0x9858EfFD232B4033E47d90003D41EC34EcaEda94 |
The phrase recreates all four keys; each key on its own restores only its row.
Extended keys sit in between. The master xprv derives the same BIP32 tree as the seed, and an account xprv derives every key of one account, so guard either one like the phrase. The public half, an xpub, lists addresses but cannot spend (xpub, ypub and zpub).
Entered into a compatible wallet, the phrase rebuilds every key, and the wallet can find the accounts and addresses you used on every network it supports. MetaMask draws the line plainly: a Secret Recovery Phrase imports an entire wallet with all its accounts, a private key imports one account (MetaMask).
Two conditions apply. The passphrase, if you set one, must match exactly, and the new wallet must scan the same derivation paths as the old one; otherwise the right phrase shows an empty wallet.
A private key restores exactly what it controls. On Ethereum, the address is the last 20 bytes of the Keccak-256 hash of the public key (ethereum.org), so one key means one address, the same on every EVM network. In Bitcoin, the legacy, nested SegWit and native SegWit addresses built from one key are different addresses with separate balances, and a WIF string does not record which one you used.
A phrase recreates only the keys derived from it; anything added from outside stays outside its backup. MetaMask says imported accounts are not derived from your Secret Recovery Phrase and do not appear automatically when you restore with it (import guide), and that the only way back to an account imported from a private key is to import that key again (troubleshooting). Wallets created with Google, Apple or Telegram login are the exception: they sync imported wallets to that login.
Electrum will not import private keys into a wallet that has a seed. A wallet built from imported keys has none, and its FAQ warns that such a wallet must be backed up because it cannot be recovered from a seed (Electrum FAQ).
Some keys sit outside your seed phrase:
The cleanest fix is to move such funds under your phrase. On an EVM network, send them to an account derived from your phrase, keeping some of the network's coin for the fee. In Bitcoin, sweep the key: Electrum's Wallet → Private keys → Sweep sends its coins to an address generated from your wallet's seed, and the key itself does not join the wallet (Electrum FAQ). Electrum treats a plain WIF key as the key of a legacy (1…) address, so for a SegWit address put the script type in front of the key, p2wpkh: for bc1q… or p2wpkh-p2sh: for 3…, as the help button in the sweep dialog shows. After that, one backup covers everything.
No tool can turn a private key back into its words, because the chain from words to keys has steps that run only one way:
Be wary of tools that "convert" a private key into 24 words. A 32-byte key can be written as BIP39 entropy, but a wallet hashes those words into a new seed and derives different keys: with the test key above, none of the first 50 receiving and 50 change keys in the first account of each of the four standard Bitcoin paths (BIP44, BIP49, BIP84 and BIP86) matched it. If a key is all you have, back it up as a key or move the funds to a wallet with a fresh phrase.
An exported key cannot be changed or revoked, and it can expose more than its own address. BIP32 warns that a parent extended public key plus any non-hardened private key below it is equivalent to the parent extended private key. Account xpubs are often shared with watch-only wallets and payment servers, so if yours has leaked and an exported address key leaks too, the whole account is exposed.
With the test phrase it takes a few lines of code: the account xpub at m/84'/0'/0' plus the WIF key of …/0/0 gives back the account xprv, which derives every receiving and change key:
xprv9ybY78BftS5UGANki6oSifuQEjkpyAC8ZmBvBNTshQnCBcxnefjHS7buPMkkqhcRzmoGZ5bokx7GuyDAiktd5HemohAU4wV1ZPMDRmLpBMm
Hardened derivation contains the damage: BIP32 says a leak of private keys at the account level or below never risks the master key or other accounts. Mind what counts as an account, though. MetaMask derives every Ethereum account it creates from a phrase as a numbered, non-hardened child of one branch, m/44'/60'/0'/0 (MetaMask, keyring code), so one exported account key plus that branch's extended public key would expose all of them.
The export is a risk in itself: the key passes through your screen and clipboard, and MetaMask warns of clipboard hacks. Once pasted elsewhere, it is a copy your phrase backup does not track. To move funds, an ordinary transaction is usually better, since no secret leaves the wallet; if a key must come out, the private key export guide covers each wallet's steps.
Back up the seed phrase. BIP32 names the problem it solved: wallets of random keys needed frequent new backups, and a deterministic wallet does not. A phrase covers every key the wallet will ever derive, including change addresses on BIP32's internal chain.
No. The recovery phrase is the master backup from which a wallet calculates all of its private keys. A private key is one of those keys and controls one address or account.
No. The words are hashed into the seed, a one-way step that no key can reverse. If a wallet app still holds the phrase, use its reveal option and write the words down; otherwise move the funds to a new wallet with a new phrase.
It depends on the wallet. MetaMask adds the key as an imported account that the phrase will not restore; Electrum hides its import option in a seed wallet, so you sweep the key instead. Either way, back up the key separately or move its funds under your phrase.
Not the keys derived from it: the phrase recreates them as long as the passphrase and derivation path match, and every extra copy is one more thing that can leak. Imported keys and keystore files need their own backups.
Only with public test phrases like the one in this guide. Never type a real phrase or key into a website, including this site's converter. To see a real key, use the export option of the wallet that holds it.