What is UTXO (unspent transaction output)?

The accounting model Bitcoin uses, in which a balance is the sum of discrete unspent outputs rather than a single number in an account.

Not yet verifiedHow we verify

3 min read

In this entry

The accounting model Bitcoin uses, in which a balance is the sum of discrete unspent outputs rather than a single number in an account.

Think of it as cash rather than a bank account. Your wallet does not hold a balance of 0.5 BTC. It holds a collection of received payments, each an indivisible chunk, and 0.5 is what they add up to. Spending works like handing over notes: you give up whole ones and receive change.

The consequence that surprises people is that two wallets holding the same amount can pay very different fees to send it, because fees depend on how many chunks the amount is split across.

How it works

Every transaction consumes existing outputs as inputs and creates new outputs. An output can only be spent once and only in its entirety. If your outputs do not add up exactly to what you are sending, the transaction creates a change output back to an address you control.

Fees are charged by transaction size, not by value. Bitcoin measures size in virtual bytes, and by Bitcoin Optech's transaction size reference a native segwit input costs roughly 68 virtual bytes while an output costs roughly 31. More inputs means a larger transaction and a larger fee, regardless of whether you are sending one dollar or one million.

This produces the dust problem. An output small enough that spending it costs more in fees than it is worth is economically unspendable, and it sits in your wallet forever. It also produces coin control, the practice of choosing which outputs to spend so as to manage fees and avoid linking unrelated payments in the same transaction.

Ethereum and most later chains use an account model instead, where a balance is a single number that is incremented and decremented. That removes the fee-by-fragmentation problem at the cost of the parallelism and auditability the UTXO model provides.

Example

Illustrative, at a fee rate of 20 satoshis per virtual byte. Wallet A holds one output of 0.5 BTC. Wallet B holds fifty outputs of 0.01 BTC each. Both send 0.4 BTC.

Wallet A spends one input and creates two outputs, the payment and change. Size is roughly 11 bytes of overhead plus 68 plus 62, about 141 virtual bytes, so a fee near 2,820 satoshis.

Wallet B must spend forty inputs to cover 0.4 BTC. Size is roughly 11 plus 40 times 68 plus 62, about 2,793 virtual bytes, so a fee near 55,860 satoshis, close to twenty times more for the identical payment. Nothing is wrong with wallet B except its history.

Why it matters when you buy

Small, frequent Bitcoin purchases withdrawn individually to a wallet build exactly wallet B, and the cost shows up years later when you try to move it all. Consolidating outputs during a quiet fee period is cheaper than being forced to spend them during a busy one. The fee comparison covers what venues charge to withdraw, and the chain pages cover network conditions.

  • dust: outputs too small to spend economically
  • coin control: choosing which outputs to spend
  • network fee: the charge that scales with size
  • sat vb: the unit fee rates are quoted in
  • segwit: the format that reduced input sizes

Questions

Does the UTXO model affect my exchange balance?

No. An exchange account is a database entry, and the model only matters once coins are in a wallet you control and you are constructing transactions yourself.

Why did my wallet show a large fee for a small payment?

Because it had to gather many small outputs to reach the amount. The fee reflects the number of inputs rather than the value sent.

Can I merge my outputs?

Yes, by sending a transaction to yourself that spends many outputs and creates one. You pay the fee for the large transaction once, at a moment of your choosing, rather than being forced into it later.