Glossary / Privacy & security
Dust limit
Also known as Dust threshold.
- Definition
- The dust limit is the smallest amount a bitcoin output can hold before nodes refuse to relay the transaction that creates it, currently 546 satoshis for a legacy address.
Nodes drop transactions that create outputs too small to be worth spending, which keeps the network from filling with unspendable scraps. Bitcoin Core prices the limit at three satoshis per virtual byte of the future spend: 546 satoshis for a pay-to-public-key-hash output, 294 for native SegWit, 330 for Taproot. If a wallet refuses to send an amount, this rule is usually why.
How it works
Bitcoin Core applies the dust limit to each output separately, and it asks a single question: would spending this output later cost more than the output is worth?
The calculation lives in GetDustThreshold in src/policy/policy.cpp. The node adds the size of the output as it sits in the ledger to the size of the input that would eventually spend it, then multiplies by DUST_RELAY_TX_FEE, a policy constant of 3,000 satoshis per kilo-virtual-byte, or 3 sat/vB. Work it through for the three common script types:
- A pay-to-public-key-hash output is 34 bytes and takes 148 virtual bytes to spend, so 182 vbytes at 3 sat/vB gives 546 satoshis.
- A native SegWit output (bech32, starting
bc1q) is 31 bytes and its input is discounted to about 67 vbytes, giving 98 vbytes and 294 satoshis. - A Taproot output (
bc1p) is 43 bytes with the same discounted input, giving 110 vbytes and 330 satoshis.
Two details matter. First, this is relay policy, not a consensus rule: a miner who receives a dusty transaction out of band can put it in a block, and every node will accept that block. Second, OP_RETURN outputs are exempt, because they are provably unspendable, so there is no future input to pay for.
The threshold has also stayed still while the fee market has not. During a spike at 200 sat/vB, spending that same legacy output costs roughly 29,600 satoshis, so it is economically dead long before the network would call it dust.
Where you see it
The dust limit shows up as an error message, almost never as a concept.
Wallets phrase it as "amount below dust threshold", "output too small", or simply grey out the send button. Bitcoin Core and most wallet software also apply it silently to change: if the leftover from a payment would fall under the threshold, the wallet drops the change output and hands that value to the miner as extra fee rather than create something nobody can spend.
Exchanges sit far above the limit anyway. Their withdrawal minimums are set by their own cost of servicing a request, not by policy, so you will hit a 0.0001 BTC or 10 dollar floor long before you hit 546 satoshis.
Lightning carries its own version of the rule. Each channel negotiates a dust_limit_satoshis value, and BOLT 2 requires at least 354 satoshis on channels using anchor outputs. Any payment below that limit gets no output in the commitment transaction at all: if the channel force-closes while such a payment is in flight, the amount goes to miners as fee.
Dust limit vs dust
Dust is a coin; the dust limit is a rule about coins. In everyday use, dust means any output too small to be worth spending at today's fees, a line that moves every time the mempool fills up. The dust limit is a fixed policy constant that does not move at all. That gap is why you can hold an output the network happily relayed, and still find it uneconomic to spend.
Dust limit vs minimum relay fee
The minimum relay fee is a floor on the whole transaction, defaulting to 1,000 satoshis per kilo-virtual-byte, or 1 sat/vB. The dust limit is a floor on a single output, and it uses a deliberately higher rate of 3 sat/vB so that an output is only created if it will still be spendable in slightly worse conditions than the ones it was made in. A transaction can clear the relay fee comfortably and still be rejected because one 200 satoshi output failed the dust check.