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.
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:
| UTXO | Amount |
|---|---|
| UTXO #1 | 0.3 BTC |
| UTXO #2 | 0.15 BTC |
| UTXO #3 | 0.05 BTC |
| Total | 0.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:
- Go to txid.uk and enter a Bitcoin address
- Click the “UTXO” tab
- 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:
| Scenario | Inputs | Outputs | Size | Fee @ 10 sat/vbyte |
|---|---|---|---|---|
| 1 large UTXO | 1 | 2 | ~226 vbytes | 2,260 sat |
| 10 small UTXOs | 10 | 2 | ~1,496 vbytes | 14,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.
| Property | Bitcoin (UTXO) | Ethereum (Account) |
|---|---|---|
| Balance representation | Sum of UTXOs | Number per address |
| Parallel processing | Favorable (independent UTXOs) | Unfavorable (order-dependent) |
| Privacy | Relatively stronger | Easier to trace |
| Complexity | Higher | Lower |
| Double-spend prevention | Check if UTXO is spent | Check 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.