BitcoinTechnical intermediate

Understanding the UTXO Model

Understand Bitcoin's UTXO (Unspent Transaction Output) model through hands-on examples. Compare it with Ethereum's account model and learn how UTXO selection affects transaction fees.

· 5min

How does Bitcoin record balances? Not by writing a number next to an account, like a bank. Bitcoin uses the UTXO (Unspent Transaction Output) model. Understanding this concept makes Bitcoin transactions, fee structures, and privacy characteristics click into place simultaneously.

The Illusion of a Wallet Balance

Open any wallet app and you see a balance like “0.05 BTC.” But nowhere on the Bitcoin network does a ledger entry say “this address holds 0.05 BTC.”

What the Bitcoin network actually tracks is a set of transaction outputs that have not yet been spent. Wallet software sums these outputs and displays a balance. The balance you see is a convenience abstraction, not a native concept.

What Is a UTXO?

Every time a transaction is processed, inputs and outputs are created.

  • Input: Consumes a previous transaction’s output.
  • Output: Creates a new bitcoin lock. It contains a recipient address and an amount.

When an output is created and has not yet been used as an input in another transaction, it is a UTXO.

Example:

Alice sends 1 BTC to Bob.

Transaction TX_A
  Input:   Alice's previous UTXO  2 BTC
  Output 1: Bob's address         1 BTC  ← new UTXO
  Output 2: Alice's address       0.999 BTC (change)  ← new UTXO
  (0.001 BTC goes to the miner as fee)

After this transaction, two UTXOs exist: Bob’s 1 BTC UTXO and Alice’s 0.999 BTC UTXO.

Think of Cash, Not a Bank Account

The best analogy for UTXOs is physical cash. If your wallet holds a ¥5,000 note, two ¥1,000 notes, and three ¥100 coins, your total is ¥7,300. But “¥7,300” is an abstraction — what you actually have is a specific collection of bills and coins.

Bitcoin is the same. “I hold 0.5 BTC” means you have a set of UTXOs that sum to 0.5 BTC:

UTXOAmount
UTXO #10.3 BTC
UTXO #20.15 BTC
UTXO #30.05 BTC
Total0.5 BTC

When you send bitcoin, you select specific UTXOs to spend — just like choosing which bills to hand over at a cash register.

Practice: Look Up UTXOs on txid.uk

You can view the UTXOs associated with any Bitcoin address at txid.uk.

How to:

  1. Go to txid.uk and enter a Bitcoin address
  2. Click the “UTXO” tab
  3. Check each UTXO’s amount, transaction ID, and confirmation count

Try the genesis block address as a practice example:

1A1zP1eP5QGefi2DMPTfTL5SLmv7Divfna

This is the address from the first block Satoshi Nakamoto mined. Its UTXOs have never been spent.

UTXOs, Input Count, and Fees

Transaction fees are proportional to data size in bytes, not to the amount sent. This is where the number of UTXOs directly affects your fees.

Transaction size grows significantly with the number of inputs. Each input adds roughly 148 vbytes (P2PKH) or 68 vbytes (P2WPKH). Each output adds about 31–34 vbytes.

Comparison:

ScenarioInputsOutputsSizeFee @ 10 sat/vbyte
1 large UTXO12~226 vbytes2,260 sat
10 small UTXOs102~1,496 vbytes14,960 sat

Sending the same amount with 10 small UTXOs costs roughly 6× more in fees.

UTXO Consolidation

During periods of low fees, sending multiple small UTXOs to your own address merges them into one large UTXO. When fees are high later, you spend just that one input — paying much less.

Note: consolidation reduces privacy. Spending UTXOs from multiple addresses in a single transaction reveals to observers that those addresses belong to the same person.

UTXO Model vs. Account Model

Ethereum uses an account model. Each address has a balance number; transactions increment or decrement it — the same concept as a bank account.

PropertyBitcoin (UTXO)Ethereum (Account)
Balance representationSum of UTXOsNumber per address
Parallel processingFavorable (independent UTXOs)Unfavorable (order-dependent)
PrivacyRelatively strongerEasier to trace
ComplexityHigherLower
Double-spend preventionCheck if UTXO is spentCheck nonce

The UTXO model is more complex, but it is structurally advantaged for parallel transaction processing and double-spend prevention.

The UTXO Set and Node Memory

Every Bitcoin full node keeps the UTXO set in memory: a list of all currently unspent outputs. As of 2024, this set is roughly 4–5 GB — far smaller than the full blockchain (600+ GB). Nodes query this set to validate new transactions, so fast memory access matters.

A proliferation of small UTXOs bloats the UTXO set, increasing the cost of running a node. This is called “UTXO bloat” and is an active area of discussion in the Bitcoin ecosystem.

Summary

The UTXO model is how Bitcoin operates without a balance concept. Every coin exists as an independent output; when spent, it is destroyed and new outputs are created. This structure excels at preventing double-spends and enabling parallel processing, but accumulating many small UTXOs inflates transaction fees. UTXO consolidation and smart UTXO selection are essential tools for advanced users optimizing costs.

Next: see the Bitcoin Fee Calculation Guide to calculate exactly how UTXO selection affects your fees.

Related