Understanding UTXO Fees
Open-source hardware wallet with 7,500+ supported assets. Your keys never leave the device.
Open-source hardware wallet with 7,500+ supported assets. Your keys never leave the device.
The fee on a Bitcoin transaction is not a percentage of the amount being sent. It's a function of how many bytes your transaction takes up — and that depends on which historical chunks of Bitcoin (called UTXOs) your wallet picked to assemble it. A fee slider in your wallet is the very tip of an iceberg of decisions made on your behalf. This guide walks through the iceberg.
When you tell your wallet "send 0.01 BTC," the wallet doesn't have a single "0.01 BTC" to work with. It has a bunch of UTXOs of various sizes, scattered across your addresses. To send 0.01 BTC it must:
Each input added to a transaction increases its byte count by ~140 bytes (Legacy) or ~70 vbytes (SegWit / Taproot). So a transaction that consumes one big UTXO is much smaller — and cheaper — than a transaction that consumes ten small ones.
This is why the same "send 0.01 BTC" can cost different fees on different days, even at identical fee rates per vbyte. The cost depends on how many UTXOs your wallet selected.
Wallets implement different strategies for picking which UTXOs to spend. The popular ones:
Modern wallets (Bitcoin Core, Sparrow, Electrum, KeepKey-via-Vault-Desktop) generally use a Branch-and-Bound primary algorithm with one of the others as a fallback. The smaller the resulting transaction, the lower the fee — so a wallet's coin-selection quality directly shows up in your fee bill.
The script type of your UTXO determines how compact it is on-chain:
| Format | Approx. input size | Why |
|---|---|---|
Legacy (1... | ~148 bytes | No SegWit discount |
P2SH-SegWit (3... | ~91 vbytes | Wrapped SegWit discount |
Native SegWit (bc1q... | ~68 vbytes | Full SegWit discount |
Taproot (bc1p... | ~57 vbytes | Smallest spend size |
If your wallet has been receiving to legacy
1...A UTXO is dust when the fee to spend it costs more than the UTXO is worth. At a fee rate of 30 sat/vB, spending a single SegWit input costs ~2,040 sats — so any UTXO smaller than 2,040 sats is unprofitable to spend. The market dust threshold floats with fees: in low-fee periods, smaller UTXOs become spendable again; in high-fee periods, more UTXOs slip below the line.
Dust matters because:
Best practice: leave dust alone. Don't consolidate dust into large transactions during low-fee periods unless you've thought through the privacy implications. If you must consolidate, do it intentionally and not as part of a normal spend.
The mempool is a competitive auction. Miners (the computers building blocks) earn block rewards plus the fees of every transaction they include. Their goal is to maximize fees per block subject to the 1MB (4M weight unit) block-size limit. They almost always do this by selecting transactions with the highest fee-per-vbyte first until the block is full.
Critical implications:
The fee estimators in your wallet (or in mempool.space) are predictions about future mempool dynamics. They're educated guesses, not guarantees. Pick a fee level that matches the urgency of the transaction and accept that "guaranteed in 10 minutes" is not a thing in Bitcoin.
When in doubt, set a high fee. You can always send less in the future; you can't always recall a stuck transaction.
A "stuck" transaction is one that's been broadcast but is too low-fee to clear the current mempool. It will eventually either:
If you don't want to wait, you have two unstucking tools.
If your transaction was originally broadcast with the RBF flag set, you can replace it with a new transaction spending the same UTXOs but with a higher fee. Miners prefer the new version; the old one drops out.
Vault Desktop and most modern wallets ship with RBF enabled by default for outgoing transactions. To use it:
If the stuck transaction is one you received (so you can't replace it — you don't own the inputs), you can spend its output in a follow-up transaction with a high enough fee that miners include both together to capture the bundled fee rate. The "child" pays the "parent's" way into a block.
CPFP is more involved than RBF and most wallets only expose it via advanced options. It's a tool for the cases where you need a stuck incoming transaction to clear (e.g. an exchange deposit you actually need access to).
1...