UTXO Management

Bitcoin Dust Limits and What a Small UTXO Costs to Spend

Bitcoin's dust limit is 294 sats for bc1q outputs and 546 for legacy ones. Above that, at 1 sat/vB, a small UTXO costs about 68 sats to spend.

Bitcoin Dust Limits and What a Small UTXO Costs to Spend

Bitcoin uses the word "dust" for two quite different things. One is a relay rule: by default, Bitcoin Core won't relay a transaction that creates an output below 294 sats for an ordinary bc1q address or 546 sats for a legacy one. The other is a judgment call, a UTXO that costs more in fees to spend than it's worth. At the 1 sat/vB that has been typical since late 2025, a native SegWit input costs 68 sats to spend. By that measure almost anything above the relay limit still adds more than it costs.

The more interesting case is a tiny amount you never asked for. That one is about privacy, not fees.

What is the Bitcoin dust limit?

The definition is tidy once you see it. Bitcoin Core treats an output as dust when spending it would cost more than it's worth at the "dust relay" fee rate, which defaults to 3 sat/vB, and nodes running default policy won't relay a transaction that creates such an output. Bitcoin Core works it out as (size of the output + size of the input that would spend it) × 3.

Output type Address looks like Smallest non-dust output
Legacy P2PKH starts with 1 546 sats
P2SH (including wrapped SegWit) starts with 3 540 sats
Native SegWit P2WPKH bc1q…, 42 characters 294 sats
Native SegWit P2WSH bc1q…, 62 characters 330 sats
Taproot P2TR starts with bc1p 330 sats

Anything below the figure is dust; the figure itself is fine. Core's own code notes the 546 and 294 figures directly. The others follow from the same formula. Taproot, for instance: (43 + 67) × 3 = 330.

A few points that trip people up:

  • It's relay policy, not a consensus rule. Node operators can change the setting. The table shows Core's default.
  • It applies to outputs being created, and depends on the receiving address type. An old UTXO below a threshold isn't frozen by the network. It's just expensive relative to its value.
  • The 2025 fee change didn't move it. Bitcoin Core 29.1 cut the default minimum relay fee to 0.1 sat/vB and left the dust fee rate alone (its release notes).
  • Wallets simplify. Trezor Suite asks for outputs of 546 sats or more across the board (Trezor's coin-control guide). Sparrow checks per address type and shows "Amount below the Bitcoin network dust threshold for this address type."

What does "dust amount detected in one output" mean?

Here's the odd part: that wording doesn't come from Bitcoin itself. It comes from Tatum, a blockchain API that some apps and payment services build on. Tatum's documentation lists three causes: the transaction would create an output too small to be relayed (it quotes about 540 sats for Bitcoin), a UTXO being spent is worth less than the fee to spend it, or nothing spendable is left at the current fee level.

Often the tiny output is your own change. If an app shows this error, try a slightly different amount so the leftover is either zero or comfortably above the limit. Or send the maximum, so no change is created. Or leave the smallest UTXO out of the selection.

Price the input, not the "dust" label

For an output that's above the limit, the useful question is what it adds to a payment you're already making:

extra fee = input vB × fee rate

68 vB is a good planning figure for an ordinary single-signature native SegWit input. Taproot inputs are 57.5 vB and legacy inputs 148 vB. If you're not sure which type you hold, use the transaction-size checks and compare full unsigned previews.

Extra fee for a 68 vB input at 2, 10, 50, and 150 sat/vB: 136, 680, 3,400, and 10,200 sats.

The chart starts at 2 sat/vB. At 1 sat/vB the same input costs 68 sats, and at 0.3 about 20.

For a 10,000-sat P2WPKH output:

Fee rate Extra input fee Value it contributes after that fee
0.3 sat/vB about 20 sats about 9,980 sats
1 sat/vB 68 sats 9,932 sats
2 sat/vB 136 sats 9,864 sats
10 sat/vB 680 sats 9,320 sats
50 sat/vB 3,400 sats 6,600 sats
150 sat/vB 10,200 sats −200 sats

The 50 and 150 rows are congestion territory, near the monthly medians of April 2024 and December 2023 (how those months compare with 2026).

Which leads to a slightly surprising result: at current rates, almost any output above the dust limit is worth spending. At 1 sat/vB, a 294-sat P2WPKH output still contributes 226 sats, and a 1,000-sat output loses under 7% to its input fee. If you'd rather cap that share, use minimum value = 68 × fee rate ÷ 0.10 for a 10% limit: 680 sats at 1 sat/vB, 34,000 sats at 50 sat/vB. The calculation stays in sats, because a change in BTC's price doesn't alter the input fee at a fixed rate.

Dust you didn't expect: the dusting attack

A few hundred sats from a sender you don't recognize is a different problem. In a dusting attack, someone sends tiny amounts to many addresses and waits. The bait works only if you later spend that UTXO together with your other coins. The transaction then shows publicly that all those inputs belong to one wallet, which can link addresses you kept separate and reveal your balance. Not every dust payment is an attack, though. Some of it is advertising or spam, and Trezor's dusting-attack article covers both.

The sats themselves are harmless.

The risk comes from spending them alongside anything else, so the fix is to keep that coin out of your transactions. Don't visit a website, sign a message, or enter a backup to "claim" or remove it.

Stop receiving to the address that got the dust, and if it's saved as a withdrawal address at an exchange, replace it there with a fresh one. The trade-off is explained in why your wallet changes addresses. If you've already spent the dust together with other coins, that link is public and permanent, and moving the coins again to a fresh address doesn't undo it. From then on, keep any coins you still want separate out of that group.

How to freeze or set aside a dust UTXO

In Sparrow:

  1. Open the UTXOs tab.
  2. Right-click the unknown output and choose Freeze UTXO.
  3. Add a label such as "Unknown sender, do not spend".

Frozen UTXOs are excluded from Sparrow's coin selection until you choose Unfreeze UTXO from the same menu. The freeze is a setting in Sparrow's wallet file, not on the blockchain or the hardware device, so other apps using the same seed won't know about it.

In Trezor Suite: there's no freeze option in the coin-control guide. Label the coin, then open Coin control on every send from that account and leave it unticked, because automatic selection could pick it. Too easy to forget? Sparrow can manage the same Trezor account through its Connected Hardware Wallet option (its FAQ), so no recovery words are typed anywhere.

In a wallet with neither freeze nor coin control: many phone wallets pick coins on their own, so you can't guarantee the dust stays out. If the send preview lists inputs, check them before signing and cancel if the unknown coin is there. If it doesn't list them, accept that a future payment may link that address with others in the wallet. The sats themselves still can't touch the rest of your balance.

An unspent UTXO doesn't incur any ongoing fee, so leaving it frozen indefinitely costs nothing.

Your own small UTXOs: leave, spend, or merge

For coins you know, the table usually settles it. Include a small UTXO in an ordinary payment when its input fee is acceptable, and compare the same payment preview with and without it rather than two different amounts. If you have many of them and expect to spend them together, consolidation has its own break-even calculation, and low-fee periods are when it pays.

Sending one tiny UTXO to yourself just to tidy the wallet usually consumes one output and creates another, minus a fee. The better fix comes earlier: fewer, larger withdrawals create fewer small UTXOs in the first place, which is the trade-off covered in how often to withdraw from an exchange.