BIP85 lets one master seed produce any number of independent child seed phrases. You choose a number, the index, and a BIP85 wallet turns your master key into a new BIP39 phrase, usually of 12 or 24 words, that any BIP39 wallet can restore. The same master and index always give the same child back, so one backup covers them all, and a child that leaks exposes neither the master nor the other children. The standard, Deterministic Entropy From BIP32 Keychains, also derives WIF keys, xprvs, hex, passwords, RSA keys, dice rolls and Nostr keys. This guide covers how the derivation works, every application and its path, the official test vector reproduced in Node, wallet support and when BIP85 is the wrong tool. New to seed phrases? Start with what BIP39 is.
BIP85 starts from a BIP32 master key, however that key was made, from a BIP39 phrase or another scheme. Each child takes four steps:
m/83696968', followed by the application number, its parameters and the index. 83, 69, 69 and 68 are the ASCII codes of S, E, E and D, so the first level after m spells SEED.k at that path.bip-entropy-from-k, turns k into 64 bytes of entropy.k = private key at m/83696968'/{app}'/{parameters}'/{index}'
entropy = HMAC-SHA512(key = "bip-entropy-from-k", msg = k)
The BIP85 specification adds the HMAC step out of caution: hardened derivation already keeps a leaked child key from exposing the parent tree, and the HMAC keeps the output safe even if an implementation skipped the hardening. Both steps are one-way, so a child phrase leads back neither to k, nor to the master key, nor to the siblings at other indexes.
Every level of the derivation path changes the result, including language and word count. The 12-word and 24-word children at index 0 are unrelated phrases, not a short and a long version of one.
Version 2.1.0 of the spec, from August 2026, defines these applications. Their numbers are meant to be meaningful: 39' and 32' are BIP numbers, and 828365 spells RSA in ASCII codes.
| Application | Number | Path | Output |
|---|---|---|---|
| BIP39 | 39' | m/83696968'/39'/{language}'/{words}'/{index}' |
12, 15, 18, 21 or 24 words |
| HD-Seed WIF | 2' | m/83696968'/2'/{index}' |
Compressed WIF key from the first 32 bytes |
| XPRV | 32' | m/83696968'/32'/{index}' |
Extended private key with depth, parent fingerprint and child number set to zero |
| HEX | 128169' | m/83696968'/128169'/{num_bytes}'/{index}' |
16 to 64 bytes of raw entropy |
| PWD BASE64 | 707764' | m/83696968'/707764'/{pwd_len}'/{index}' |
Password of 20 to 86 characters |
| PWD BASE85 | 707785' | m/83696968'/707785'/{pwd_len}'/{index}' |
Password of 10 to 80 characters |
| RSA | 828365' | m/83696968'/828365'/{key_bits}'/{key_index}' |
RSA key; GPG subkeys add /{sub_key}' |
| DICE | 89101' | m/83696968'/89101'/{sides}'/{rolls}'/{index}' |
Die rolls numbered from 0, for PINs or custom alphabets |
| Nostr | 128002' | m/83696968'/128002'/{identity}'/{account_index}' |
An nsec secret key |
The spec fills in the details:
BIP85 is an Informational BIP by Ethan Kosakovsky, numbered in March 2020, with Aneesh Karve as co-author since October 2024. It was marked Final that October and became Deployed in January 2026, after BIP3, the updated BIP process, merged Final and Active into that status. A Deployed BIP is considered final, and changes beyond bug fixes, minor amendments, added test vectors and editorial edits should be avoided. Version 2.1.0 added Nostr without changing any earlier path or output.
The spec publishes a master key with expected outputs for every application except RSA. The key is public, so never use it for funds. This script derives the 12-word English child at index 0 with @scure/bip32 1.7, @scure/bip39 1.6 and @noble/hashes 1.8:
import { HDKey } from '@scure/bip32';
import { entropyToMnemonic } from '@scure/bip39';
import { wordlist } from '@scure/bip39/wordlists/english';
import { hmac } from '@noble/hashes/hmac';
import { sha512 } from '@noble/hashes/sha2';
import { bytesToHex, utf8ToBytes } from '@noble/hashes/utils';
// Master key of the BIP85 test vectors (public: never use it for funds)
const root = HDKey.fromExtendedKey(
'xprv9s21ZrQH143K2LBWUUQRFXhucrQqBpKdRRxNVq2zBqsx8HVqFk2uYo8kmbaLLHRdqtQpUm98uKfu3vca1LqdGhUtyoFnCNkfmXRyPXLjbKb'
);
const k = root.derive("m/83696968'/39'/0'/12'/0'").privateKey;
const entropy = hmac(sha512, utf8ToBytes('bip-entropy-from-k'), k).slice(0, 16);
console.log(bytesToHex(entropy));
console.log(entropyToMnemonic(entropy, wordlist));
With version 2 of these libraries, the current npm release, the same functions are exported only under paths ending in .js, so add .js to the four subpath imports, as in @noble/hashes/hmac.js. Either way, the script prints:
6250b68daf746d12a24d58b4787a714b
girl mad pet galaxy egg matter matrix prison refuse sense ordinary nose
Both lines match the spec. Set the words level to 18' and keep 24 bytes, or to 24' and keep 32, and the script returns the spec's 18- and 24-word vectors, which begin "near account window" and "puppy ocean match". We checked every other vector in the spec the same way, from the raw test cases and the DRNG to WIF, XPRV, HEX, both password formats, dice and Nostr, and all matched. One trap if you try it: the XPRV vector's DERIVED ENTROPY line shows only the second 32 bytes, the private key, not the chain code. The entropy becomes words like any BIP39 entropy, with a checksum appended; the seed phrase generator shows random test phrases next to their entropy.
Started from the seed of the public BIP39 test phrase (abandon abandon … about) instead of the spec's key, the same derivation gives these children. They are public too, so never send funds to them:
| Parent | Path | Child phrase |
|---|---|---|
| Test phrase | m/83696968'/39'/0'/12'/0' |
prosper short ramp prepare exchange stove life snack client enough purpose fold |
| Test phrase | m/83696968'/39'/0'/12'/1' |
sing slogan bar group gauge sphere rescue fossil loyal vital model desert |
Test phrase + passphrase TREZOR |
m/83696968'/39'/0'/12'/0' |
climb typical because giraffe beach wool fit ship common chapter hotel arm |
These are not official vectors: we computed them with the same libraries and confirmed them with an independent implementation that uses only Python's standard library. Index 1 bears no visible relation to index 0. And because a BIP39 passphrase changes the master key, the same words with TREZOR, the passphrase of the official BIP39 test vectors, give different children.
Any BIP39 wallet can restore a child, but deriving one takes a wallet that implements BIP85. These document the feature as of October 2026:
| Wallet | Where to find it | What it derives |
|---|---|---|
| COLDCARD Mk4 and Q | Advanced/Tools → Derive Seed B85 (Mk4) or Derive Seeds (BIP-85) (Q) | 12, 18 or 24 words, WIF, XPRV, 32 or 64 bytes of hex, 21-character Base64 passwords |
| BitBox02 | BitBoxApp: Settings → Expert settings → Show BIP-85 child key | 12 or 24 words |
| Blockstream Jade | Options → Wallet → BIP85 | 12 or 24 words |
| Passport Core | Enable Key Manager in Settings → Extensions, then tap New Key | 12 or 24 words, loadable as a temporary seed |
| SeedSigner | Settings → Advanced → BIP-85 child seeds (off by default), then BIP-85 child seed in the seed's options | 12 or 24 English words |
| Krux | Wallet → BIP85 | 12 or 24 words, Base64 passwords |
| AirGap Vault | Settings → the secret's details → Generate BIP85 Child secret recovery phrase | A phrase of the chosen length, with an optional passphrase |
BitBox02 added the feature in firmware 9.18.0 (April 2024), Jade in 0.1.45 (February 2023), SeedSigner in 0.6.0 (February 2023) and Krux in 24.07.0 (July 2024), so update first if the menu is missing. Two details differ between wallets:
What BIP85 gives you:
What it costs:
| Situation | Use BIP85? | Why |
|---|---|---|
| A phone hot wallet next to a hardware wallet | Yes | The master never touches the phone, and a leak costs only that child |
| Wallets for testing, a Lightning node or separate projects | Yes | Each gets its own phrase without another seed backup to store |
| A wallet you manage for a family member | With care | You can always spend from it, so it is never fully theirs |
| A wallet someone else should own outright | No | Whoever holds the master can re-create it at any time |
| Replacing a seed you think is compromised | No | Children of a compromised master are compromised too; create a new seed |
| Splitting a backup or planning inheritance | No | BIP85 makes more phrases, not shares; see SLIP39 vs BIP39 and crypto inheritance |
If you use it, the master seed becomes your most valuable secret: protect it as described in how to store a seed phrase, and note each child's index, word count and passphrase status next to its purpose.
Yes. It is a standard BIP39 phrase with a valid checksum, and a wallet that restores it cannot tell that it was derived.
No. Hardened derivation and HMAC-SHA512 cannot be reversed, so a child reveals neither the master nor the other children. The reverse does not hold: the master re-creates every child.
Not strictly: the master backup and the derivation details re-create any child, which is why COLDCARD and Jade ask you to keep track of the index. A separate backup of an important child removes the dependence on a BIP85 tool.
Yes. The passphrase goes into the BIP39 seed and so changes the master key: the same words with and without it give different children, as the test phrase table shows.
A second account, such as m/44'/0'/1' in the BIP44 scheme, is another branch of the same seed and restores only with the original phrase. A BIP85 child is a separate seed phrase that you can load into another wallet on its own.