What is a UTXO?
24 October 2026 · UTXOHub · 8 min read
A UTXO is an amount of bitcoin left by a transaction that has not been spent yet. Your wallet adds these separate amounts together to show your balance. When you pay, it spends whole outputs and usually creates a new one for your change.

Your balance is made of separate amounts
Open a Bitcoin wallet and you see a balance. Underneath that number, the wallet is keeping track of separate amounts left by earlier payments. Each is a UTXOUTXOAn unspent transaction output: an amount of bitcoin left by a transaction, with rules for spending it., short for unspent transaction output: an output that no later transaction has spent. The Bitcoin Developer Guide describes a wallet balance as the sum of these outputs.
Imagine Lena has received three payments: 60,000, 30,000 and 10,000 satoshisSatoshi (sat)The smallest unit of bitcoin: one hundred-millionth of a bitcoin. 100,000,000 sats make 1 BTC., or sats. A satoshi is one hundred-millionth of a bitcoin. Her wallet shows 100,000 sats, or 0.001 BTC. But those three amounts have not melted into one. They remain three outputs, even if they were all sent to the same address.
- First payment
- 60,000 satsOne unspent output.
- Second payment
- 30,000 satsAnother unspent output.
- Third payment
- 10,000 satsA third unspent output.
Cash is a useful comparison. A purse holding a £20 note and a £10 note contains £30, but paying with it involves choosing a note. Bitcoin wallets make a similar choice when they send. The amounts need not be round: a UTXO can hold 19,537 sats just as easily as 20,000. Section 9 of Bitcoin's white paper describes how transactions combine smaller amounts and split larger ones.
What happens when you send bitcoin?
Lena wants to pay Arun 40,000 sats. Her wallet chooses the 60,000-sat UTXO and uses it as an inputInputs and outputsOrdinary payments spend previous outputs as inputs and create new outputs. Coinbase transactions, which create miner rewards, are the exception. to a new transaction. It spends that entire output. There is no way to cross out 40,000 sats and leave 20,000 inside the old one.
Instead, the transaction creates two new outputs: 40,000 sats for Arun and 19,500 sats back to Lena. That second output is changeChangeThe part of a payment that goes back to the sender, because wallets spend whole pieces of bitcoin, like getting change from a note.. The remaining 500 sats are the fee: $0.50 at our made-up bitcoin price of $100,000. As the network's transaction rules specify, the fee is the difference between the input total and the output total. It is not a third output to a miner's address; the miner can collect it through the block's separate reward transaction.
- Payment to Arun
- 40,000 satsNew output for the recipient.
- Change to Lena
- 19,500 satsNew output back to the sender.
- Network fee
- $0.50 · 500 satsThe difference, not another output.
After this payment confirms, the old 60,000-sat output is spent. Lena's wallet holds the new 19,500-sat change output plus her untouched 30,000 and 10,000: 59,500 sats remain. Her balance fell by the payment and the fee. Arun has a new 40,000-sat output of his own.
This is why an explorer can show more bitcoin moving than the amount you meant to send. It is showing whole inputs and all the outputs they funded. A wallet may combine several inputs, pay several people, or make no change at all. Our two-output example is one ordinary payment, not a rule about every transaction.
Why lots of small UTXOs can cost more to spend
Two wallets can have the same balance and face different fees to send it. One might hold a single large UTXO; the other, a hundred small ones. Spending all of the second wallet's balance needs more inputs. Each input adds transaction data, so, with comparable spending rules and the same fee rate, the second transaction needs more block space and costs more.
That space is measured in virtual bytes. The SegWitSegWitSegregated Witness: a 2017 upgrade that moved signatures into a separate part of each payment, making room for more payments. upgrade changed how Bitcoin counts transaction data; its specification defines this measure. The fee rateFee rate (sat/vB)The fee a payment offers for each unit of block space, in satoshis per virtual byte. Miners can evaluate related transactions together. is the price per virtual byte, written sat/vB. For a separate arithmetic example, 140 virtual bytes at 10 sat/vB costs 1,400 sats: $1.40 at the same assumed bitcoin price. Sending a larger bitcoin amount does not by itself make the transaction larger. Your wallet calculates its size; our Fees page shows current rate estimates.
Very small outputs bring another problem: the extra fee to include one can exceed its value. People often call these amounts dustDustA very small bitcoin output. Bitcoin Core defines a dust threshold; whether spending an output is worthwhile also depends on current fees.. Bitcoin Core also has a specific dust policy threshold, based on output type and a configured fee rate. That threshold is not a live measure of whether an output is worth spending. An output above it can still be uneconomical to use when fees are high.
How Bitcoin knows an output is still unspent
Every output has a precise reference: the transaction IDTransaction ID (txid)A 64-character code that identifies one Bitcoin payment, so anyone can look it up. that created it and its position within that transaction, counted from zero. The first output is number 0, the second number 1. A new input points to that reference, rather than asking Bitcoin to subtract money from a named account. Bitcoin Core's gettxout command uses those same two pieces of information to look an output up.
A full nodeNodeA computer running Bitcoin software that checks every payment and block against the rules, and passes them on to others., a computer that checks Bitcoin's rules, maintains the UTXO setUTXO setThe unspent outputs a Bitcoin node keeps track of to check new payments against its accepted blockchain.: the outputs from its accepted blockchain that remain unspent, leaving out outputs that are provably impossible to spend. When it connects a block, it removes the outputs spent and adds the new ones that remain unspent. The transaction records stay in the blockchain's history. Bitcoin Core’s coin-tracking code makes this distinction: the set records current unspent outputs, not every past payment.
A valid spend must satisfy an output's spending conditions and cannot reuse an output already spent in that history. Those checks are what prevent a double spendDouble spendAn attempt to spend the same bitcoin twice. Only one of the conflicting payments can ever confirm.. The miner's coinbase transactionCoinbase transactionThe first payment in every block, created by its miner. It has no inputs and pays out the block reward. is the special case: it claims the block reward without spending an earlier UTXO.
Does unspent always mean ready to spend?
No. An output may have a time lockTimelockA rule inside a payment that stops coins being spent until a certain block height or time has passed., a condition that prevents spending before a particular time or block height. BIP 65 describes one way to enforce that. An output can also remain unspent after its owner loses the private keysPrivate keyThe secret number that lets you spend your bitcoin. Whoever knows it controls the coins, so it must never be shared., the secret numbers needed to authorise spending. The network checks a digital signatureDigital signature (ECDSA, Schnorr)Proof, made with a private key, that the owner approved a payment. Anyone can check it; practical forgery is infeasible under current assumptions., the proof authorising a spend; it cannot tell whether someone still has the key before they try to use it.
Confirmation status matters too. A wallet may show an output from a payment still waiting in the mempoolMempoolThe waiting room for Bitcoin transactions that have been sent but aren't in a block yet., the node's queue of unconfirmed transactions. That output is not yet part of the confirmed UTXO set. A later transaction can spend it, but both depend on the earlier transaction confirming first, possibly in the same block. A replacement that removes the earlier output invalidates that later spend.
Wallets decide what to include in an available balance. Bitcoin Core, for example, reports separate balances for trusted outputs, incoming payments still pending and immature mining rewards. That is why a displayed total can differ from what the wallet lets you send. An exchange account balance is different again: it is the service's record of what it owes you, not necessarily a collection of UTXOs whose keys you control.
Choosing UTXOs changes what others can learn
Wallets normally choose the inputs for you. Some also offer coin controlCoin controlA wallet feature that lets you choose which unspent outputs to use in a payment., which lets you choose them yourself. Sparrow's own instructions, for example, describe selecting individual UTXOs before sending. Choosing an output is choosing which part of your payment history to bring into the new transaction.
Spending several small outputs into one new output in your own wallet is called consolidationUTXO consolidationSpending several outputs into fewer outputs in your own wallet, paying a fee now to simplify later spending.. It pays a fee now and can reduce the number of inputs needed later. Whether it saves money depends on the fees for both transactions and what you later spend. It also joins previously separate histories in public.
Combining inputs can suggest that they belong to the same person. It does not prove that: people can construct transactions together. Sparrow's privacy guide shows how transaction patterns lead to these inferences, and how they can be misleading. A fresh change address avoids simply reusing the old address, but does not erase the link between the transaction's inputs and outputs.
What to look for in a real payment
When you check a payment on UTXOHub, find the output that matches the receiving address you supplied and read its amount. The total of all outputs may include other recipients and the sender's change. The blockchain does not label an output “Lena's change”: we know that in our example because we invented the payment. In a real transaction, its size or position is not enough to identify its owner.
Then read the confirmationsConfirmationA payment has one confirmation once it's in a block, and one more for each block after. The more it has, the harder it is to reverse., which count the block containing the payment and the blocks built after it. Each makes reversal harder; the recipient decides how many to require. A confirmed output and an exchange credit are different events, as our guide to confirmed deposits that have not appeared explains.
And if your wallet sends change to an address you do not recognise, that alone does not mean money has gone missing. The new output may still belong to your wallet. Compare it with the wallet's own transaction details and our guide to outputs and change. Your balance is the sum the wallet shows you; UTXOs explain the separate amounts underneath it. They are also where UTXOHub gets its name.
References
- Bitcoin Developer Guide, “Transactions: outputs, inputs, fees and change”.
- Satoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System, sections 9 and 10”, 31 October 2008.
- Bitcoin Developer Guide, “Block Chain: validation, fees and coinbase transactions”.
- Bitcoin Improvement Proposals, “BIP 141: transaction size calculations”.
- Bitcoin Core 30.0, “Dust threshold calculation in policy.cpp”.
- Bitcoin Core 30.0, “gettxout: query an unspent transaction output”.
- Bitcoin Core 30.0, “Adding and spending outputs in the UTXO cache”.
- Bitcoin Improvement Proposals, “BIP 65: time-locked outputs”.
- Bitcoin Core 30.0, “getbalances: trusted, pending and immature balances”.
- Sparrow Wallet, “How do I use coin control?”.
- Sparrow Wallet, “Spending Privately: transaction patterns and their limits”.