The Number That Makes a Satoshi Worthless

You open your wallet and find a few hundred satoshis sitting there from some change output, a faucet drip, a swap that didn't round cleanly. You try to move it. The wallet either refuses outright or returns a fee estimate that's larger than the amount itself. Congratulations. You have dust.

What actually pushes a UTXO across that line? The answer isn't a single hard number handed down from Satoshi. It's a calculation rooted in byte counts and fee rates, and understanding it tells you something genuinely useful about how Bitcoin's economics work at the edges.

Fees Are Bought by the Byte, Not by the Amount

This is the part most explainers skip. Bitcoin transaction fees are priced per virtual byte (vbyte) of block space consumed, completely independent of the value being moved. Sending 1 BTC and sending 0.00001 BTC in the same transaction structure costs the same fee. The network doesn't care about denomination. It cares about data.

A typical single-input, single-output transaction using a legacy P2PKH output occupies roughly 148 vbytes for the input and 34 vbytes for the output, plus 10 vbytes of overhead, around 192 vbytes total for the simplest possible spend. A SegWit (P2WPKH) input is cheaper to spend, around 68 vbytes for the input portion, because the witness data gets a discount under the weight formula introduced in the SegWit upgrade.

Now apply a fee rate. At 10 sat/vbyte, a calm and uncongested baseline, spending that P2PKH input costs roughly 1,480 satoshis just for the input's contribution to the transaction size. If the UTXO holds fewer satoshis than it costs to include it in a transaction, spending it is a net negative.

That's the dust threshold in one sentence: the point at which the cost to spend an output exceeds the value of the output itself.

How Bitcoin Core Actually Calculates It

Bitcoin Core has a specific policy for what it considers dust, and it's been in the codebase since the early days, refined over time. The threshold isn't defined at a fixed sat/vbyte rate pulled from current mempool conditions. Instead, Core uses a hardcoded reference rate of 3 sat/vbyte for the dust calculation, regardless of what fees are actually doing on any given day.

The formula multiplies that 3 sat/vbyte rate by the estimated size of the output plus the input required to spend it later. For a P2PKH output:

  • Output size: 34 vbytes
  • Input size to spend it later: 148 vbytes
  • Combined: 182 vbytes
  • At 3 sat/vbyte: 546 satoshis

So 546 satoshis is Bitcoin Core's dust limit for P2PKH outputs. UTXOs below that value won't be relayed by default-configuration nodes. For P2WPKH (native SegWit), the math changes because the input is cheaper to spend: the combined size comes out lower, and the resulting threshold drops to 294 satoshis.

Consider two people: Priya and Tomasz, both receiving 400 satoshis as change from separate transactions. Priya's change lands in a legacy P2PKH address. Tomasz's lands in a native SegWit (bech32) address. Priya's 400-sat UTXO sits below the 546-sat P2PKH dust limit, so Core-compatible nodes will refuse to relay a transaction that creates it. Tomasz's 400-sat UTXO clears the 294-sat SegWit threshold. His output is considered spendable by policy, even though both amounts are tiny.

Same satoshi count. Different output type. Different outcome.

What "Unspendable" Actually Means (and What It Doesn't)

Here's the wrinkle that trips people up: dust limits are a node relay policy, not a consensus rule. A transaction spending a sub-dust UTXO is not invalid. Miners can include it in a block, and the network will accept that block. Dust policy lives in the mempool layer, not the validation layer.

In practice, this matters less than it sounds. If default-configuration nodes won't relay your transaction, it won't propagate to miners under normal conditions. You'd need a miner to accept the transaction directly, out-of-band. Some mining pools have offered this as a service. Technically possible, just not the standard path.

The folk wisdom that dust is "permanently locked" needs to die. It's more accurate to say dust is economically irrational to spend under normal fee conditions and practically difficult to move through standard channels. Those are real constraints. They are not the same as impossible.

Still, for most holders, the practical outcome is identical to locked. If your UTXO holds 200 satoshis and the minimum economically sensible fee to spend it is 800 satoshis, you're not spending it through any standard wallet without losing money.

The Consolidation Problem (and Why Exchanges Create Dust)

Dust doesn't just happen to individuals. It's a structural byproduct of how high-volume services operate, and exchanges are particularly good at manufacturing it at scale. Payment processors and mixing services create enormous numbers of small UTXOs during periods of low fees, then face a reckoning when fees spike. A service casually sweeping 200-sat change outputs during a quiet mempool period can find itself holding thousands of UTXOs that are suddenly uneconomical to consolidate, like a restaurant that bought too much fish on a slow Tuesday and can't move it by Friday.

The canonical advice is UTXO consolidation during low-fee windows: gather many small UTXOs into one larger one before fees climb. Straightforward in principle. Fiddly in execution, and often neglected until it's too late. The catch: consolidating dust requires spending it, which requires fees to be low enough that spending it makes sense. Timing matters enormously.

Wallets that do coin selection poorly make this worse. A wallet grabbing the first UTXOs it finds rather than optimizing for fee efficiency can accidentally burn value on fees that smarter selection would have avoided. This is a solvable engineering problem that too many wallet developers treat as someone else's concern.

The 3 Sat/vbyte Number Is Frozen in Amber

Bitcoin Core's reference rate of 3 sat/vbyte for the dust calculation was set when fee markets looked very different from what they became during periods of heavy network activity. The threshold was never designed to track real-time fee pressure. It's a policy constant, not a dynamic calculation.

Which, frankly, creates a quiet conceptual trap. An output that clears the 294-sat SegWit threshold might still be economically unspendable if the actual fee market sits at 50 sat/vbyte or higher. The economic dust threshold and the policy dust threshold are two different things, and conflating them is a common mistake.

The policy threshold is what nodes enforce. The economic threshold is what your wallet's fee estimator will tell you when you try to spend something small. Are you watching both numbers, or just assuming the wallet will warn you before you lose money? Pay attention to both.

If you're auditing your own UTXO set, a lot of outputs below roughly 1,000 satoshis is worth noticing. Not because any of them are necessarily stuck forever, but because they're a sign that consolidation during the next low-fee window would be worth doing. A pile of tiny UTXOs isn't a crisis. It's a maintenance task that tends to become a crisis only when you keep ignoring it.