Glossary / Addresses & keys
Output descriptor
Also known as Descriptor, Descriptor wallet.
- Definition
- An output descriptor is a single line of text that states which script type, which keys and which derivation branch a wallet should use, with a checksum on the end.
Specified in BIP-380.
Descriptors exist because an extended key on its own is ambiguous. The same xpub can produce legacy, nested SegWit, native SegWit or Taproot addresses, and only the wrapper function settles the question. Bitcoin Core has created descriptor wallets by default since version 23.0, released in April 2022, and a multisig backup without its descriptor is often unrecoverable.
How it works
A descriptor is a function applied to a key expression, followed by a hash mark and eight checksum characters. The function names the script: pkh for legacy, sh(wpkh(...)) for nested SegWit, wpkh for native SegWit, tr for Taproot, and wsh(sortedmulti(2,...)) for a 2-of-3 vault.
The key expression carries the rest. Square brackets hold the origin, meaning the master fingerprint and the path used to reach that key, as in [1a2b3c4d/84h/0h/0h]. The extended key follows, then a suffix such as /0/* where the asterisk is a wildcard standing for every address index in turn. A descriptor with a wildcard is called ranged, and asking for addresses 0 to 999 from it is one RPC call rather than a thousand imports.
Receiving and change are two descriptors, not one, which is why wallets import them in pairs ending /0/* and /1/. BIP-389 tidied that up with multipath notation, writing the pair as /<0;1>/ in a single string.
The checksum is small and load bearing. BIP-380 defines an eight character code over the descriptor text, designed to catch the kind of damage that actually happens to a long string: a swapped character, a truncated paste, a line break inserted by an email client. Bitcoin Core refuses any descriptor whose checksum does not match, and getdescriptorinfo will compute the correct one for a string you typed yourself.
Where you see it
Descriptors are the backup format for anything more complicated than a single seed. Sparrow, Nunchuk and Specter export one for every wallet they create, and a Coldcard writes the descriptor to microSD during multisig setup so the arrangement can be rebuilt without the original coordinator software.
Bitcoin Core is where they became standard. Version 0.17.0, released in October 2018, introduced them for scanning and address generation; importdescriptors and listdescriptors turned them into the wallet's native language; and the descriptor wallet is now the only kind the software creates. Restoring a Core wallet from a descriptor plus a rescan is a supported path, and one that survives the software being reinstalled from scratch.
For a plain single-signature wallet you can usually get away without ever seeing one, because your seed phrase and the standard path are enough. For multisig, the descriptor is the missing half of the backup: three seed phrases with no record of the script type, the key order, or each cosigner's origin can leave you unable to reconstruct the addresses your coins are sitting in.
Output descriptor vs extended key
An extended key is an ingredient and a descriptor is the recipe. The xpub tells software which keys exist; the descriptor tells it what to build out of them and where to start counting. That is why importing an xpub into two different apps can produce two different address lists while importing the same descriptor cannot. Both disclose the same privacy: anyone holding either one can enumerate your branch, so a descriptor deserves the same care as the key inside it.