Dust
Dust is an output whose value is so small that spending it would cost more in fees than the output is worth, at a reference fee rate. Colloquially the word is also used for any tiny UTXO. In node software the term is a precise mempool policy: transactions that create spendable dust outputs are not relayed or mined by default.
Dust limits are policy, not consensus. A miner may include a sub-dust output in a block, and the output remains spendable if a later transaction pays the fee.
Background
Every output occupies space in the UTXO set until it is spent. Outputs that are uneconomical to spend tend to remain there, imposing a cost on every full node. Early Bitcoin Core versions treated very small outputs as non-standard. The current definition, introduced with a dedicated -dustrelayfee setting, compares the output's value to the fee that would be required to create it and later spend it at that rate.
Dust is also a privacy and wallet-UX problem. Dusting attacks send tiny amounts to many addresses in the hope that a later spend will link those addresses. Wallets may hide or freeze dust so that automatic coin selection does not sweep it.
How it works
Bitcoin Core's GetDustThreshold estimates the serialized size of the output plus a typical input that would spend it. For witness programs the input size is counted with the SegWit weight discount. That size is multiplied by the dust relay fee rate. If the output value is below the resulting amount, the output is dust.
The default dust relay fee rate is 3,000 sat/kvB (3 sat/vB). At that rate the usual thresholds are:
- 546 satoshis for a P2PKH output (34-byte output plus a ~148-byte input)
- 294 satoshis for a P2WPKH output
- 330 satoshis for a P2WSH or P2TR output, using a conservative spend-size estimate (Taproot key-path spends are smaller, but the threshold was not lowered further)
Unspendable outputs, such as OP_RETURN, have a dust threshold of zero because they never enter the UTXO set as spendable coins.
The dust relay fee is independent of the node's minimum relay fee rate. Changing -minrelaytxfee does not by itself change dust thresholds. Operators may set -dustrelayfee, but a transaction still has to satisfy the policies of the peers it must cross.
Wallets apply a related idea when creating change addresses. If a prospective change output would be uneconomical at a discard fee rate (often tied to a long-horizon fee estimate, bounded below by the dust rate), the wallet may add that remainder to the miner fee instead of creating the output.
A later policy relaxation, ephemeral dust, allows a single dust output in limited cases when a child transaction in the same package spends it immediately, so the dust never sits in the UTXO set.
Implementations
Bitcoin Core enforces dust as standardness in mempool admission and relay. Other full nodes that follow Bitcoin Core policy do the same. Wallet software uses the same numbers when deciding whether a change output is worth creating. Lightning funding and some contract protocols have their own dust-like floors for outputs that must be spendable on chain under time pressure.