UnlockPool Bitcoin Learning Center

Bitcoin UTXO Explained

Bitcoin Core represents transaction value in outputs and tracks unspent outputs by outpoint; its wallet reports an available balance based on outputs it currently considers spendable. These are called unspent transaction outputs, or UTXOs. Understanding UTXOs makes transaction data easier to read. It explains where a payment comes from, why a transaction often has a change output, and how a wallet calculates the bitcoin it can spend.

What Is a Bitcoin UTXO?

UTXO means unspent transaction output: a ledger entry containing an amount and a locking script. An output contains a scriptPubKey, while an input contains scriptSig and may contain witness data; applicable consensus validation rules determine whether a spend is valid. This guide uses satoshis for small numerical examples.

For confirmed-chain validation, inputs must refer to available unspent outputs in the chainstate UTXO view. A node may additionally use a mempool-aware view when evaluating unconfirmed transactions. Once an output is spent in a valid confirmed transaction, it is no longer available in the chainstate UTXO view.

A UTXO is not a physical coin or a separate kind of bitcoin. It is a ledger entry that defines an amount and the rules required to spend it. Bitcoin Core wallet software identifies outputs it controls and may present a balance based on outputs it currently considers spendable. The exact balance can depend on confirmation, maturity, and wallet-spendability settings.

Transaction Outputs, Outpoints, and Spending Conditions

Bitcoin transactions normally create one or more outputs; Bitcoin Core’s createrawtransaction RPC requires at least one output. Each output specifies a value and a locking script, also called scriptPubKey. The scriptPubKey sets the conditions for a future spend. For many common output types, satisfying those conditions involves providing valid signature data.

A particular output is identified by an outpoint. An outpoint has two parts: the transaction ID of the transaction that created the output, and that output’s index number within the transaction. The output index distinguishes one output from another within the same transaction.

The transaction ID alone is therefore not enough to name one UTXO when a transaction has multiple outputs. The pair of transaction ID and output index points to one precise amount and its associated spending conditions.

How Transaction Inputs Spend Existing UTXOs

A new transaction spends bitcoin by including one or more inputs. Each input references an earlier outpoint. In effect, the input says which existing UTXO the transaction intends to consume.

An output contains a scriptPubKey, while an input contains scriptSig and may contain witness data. Bitcoin Core’s signing RPC uses the referenced output’s scriptPubKey when producing signature data; applicable consensus validation rules determine whether a spend is valid. Bitcoin Core’s consensus input checks also require the referenced input coin to be available rather than missing or already spent.

Inputs do not carry a standalone bitcoin amount in the same way outputs do. Their value comes from the UTXOs they reference. A valid transaction cannot spend only a portion of one referenced output; it consumes that UTXO as a whole.

How a Bitcoin Transaction Creates New UTXOs

After consuming its inputs, a transaction creates new outputs. When a transaction is confirmed on the active chain, its spendable unspent outputs are represented in the confirmed UTXO set. Before confirmation, a node may track the transaction and its outputs in a local mempool-aware view.

The total value of a normal transaction’s outputs cannot exceed the value of its inputs. The difference between total input value and total output value is the transaction fee.

Bitcoin Core’s coin view tracks unspent outputs by outpoint. When a referenced coin is spent, `SpendCoin` changes that coin-view state; transaction outputs can in turn be represented as new coins in the view.

A Simple Bitcoin UTXO Example

Suppose a wallet controls one UTXO worth 100,000 satoshis. Its outpoint is transaction A at output index 1. The wallet wants to send 60,000 satoshis to another person and constructs a transaction with one input: transaction A, output 1.

The transaction might create two outputs: 60,000 satoshis locked to the recipient and 39,500 satoshis locked to a new address controlled by the sender. The 500-satoshi difference is the fee. Once this transaction confirms, the original 100,000-satoshi UTXO is spent and cannot be used again.

The recipient’s 60,000-satoshi output is now a UTXO, and the sender’s 39,500-satoshi change output is another UTXO. The sender did not split the old output in place; the old output was consumed and replaced by newly defined outputs.

How Wallet Balances Relate to Controlled UTXOs

In UTXO-based wallet software such as Bitcoin Core, an available balance is calculated from outputs the wallet considers currently spendable and can be affected by confirmation and wallet-spendability settings. Transaction outputs do not contain a mutable wallet-level balance field.

For example, if a wallet controls three spendable UTXOs worth 20,000, 45,000, and 80,000 satoshis, it can display their sum as 145,000 satoshis. Wallets may present separate categories for confirmed, unconfirmed, and currently unavailable funds; the exact categories and spendability rules depend on the wallet.

Address attribution and wallet-organization questions are outside the scope of this UTXO transaction-model explanation.

Spent vs Unspent Outputs: What Changes on the Ledger

For the confirmed UTXO set, an output remains unspent until a transaction spending its outpoint is confirmed on the active chain. A node may also treat a pending spend in its local mempool-aware view, subject to its policy. After confirmation, nodes treat the old output as spent and no later transaction can validly spend the same output again. This is how the protocol prevents double spending at the ledger level.

The original transaction remains part of the blockchain history after its outputs are spent. What changes is the output’s status: it is no longer part of the current UTXO set. Use the explorer’s displayed transaction, confirmation, and mempool-status fields to inspect the transaction information it makes available.

Before confirmation, local node mempool views can differ. A node may know about a pending transaction that spends an output while another node has not received it, has rejected it under its policy, or has a conflicting transaction in its own mempool. No single mempool display is globally authoritative.

How UTXOs Relate to Transaction Size and Fees

Transaction base fee is the difference between input and output values, while Bitcoin Core fee estimation uses virtual transaction size. Transaction virtual size depends on its serialized and witness data and, under Bitcoin Core node policy, may also be adjusted for sigops.

Actual virtual size should be calculated for the specific transaction rather than inferred from its payment amount or from a universal input-size assumption. The dedicated fee-calculation guide covers the applicable vsize conventions and fee-rate arithmetic.

For a deeper explanation of the arithmetic and transaction-weight concepts, UnlockPool’s Bitcoin Transaction Fee Calculation guide at /learn/bitcoin-transaction-fee-calculation can be useful. Fee conditions are variable, so any decision to broadcast should be based on the transaction and network conditions visible at that time rather than a fixed rule.

How to Inspect Inputs and Outputs with UnlockPool

To read a transaction, start with its transaction ID in UnlockPool’s Bitcoin Transaction Checker at /bitcoin-transaction-checker. Use the displayed input and output fields to inspect the transaction structure. Where the explorer provides prior-transaction details, inspect the referenced inputs as well.

The transaction’s output list shows the new outputs it creates. For a non-coinbase transaction where the explorer provides the referenced prevout values, compare total input value with total output value; the difference is the base transaction fee. Explorer status reflects the indexed chain and, where shown, mempool data available to that service.

UnlockPool links to a Bitcoin Address Lookup page at /bitcoin-address-lookup for address-oriented exploration; consult the page’s displayed data and status fields for its available information. A related first-party page is available at /bitcoin-block-explorer. This article uses explorer records only for public transaction structure and status data.

Frequently Asked Questions

What does UTXO mean in Bitcoin?

UTXO stands for unspent transaction output. It is an output from a prior Bitcoin transaction that has not been spent. An input can reference an available UTXO; applicable consensus validation rules determine whether the spend is valid.

Is a UTXO the same as a Bitcoin balance?

No. A UTXO is one individually spendable transaction output. Bitcoin Core tracks unspent outputs by outpoint, while its wallet reports an available balance based on outputs it currently considers spendable.

How is a Bitcoin UTXO created?

When a transaction is confirmed on the active chain, its spendable unspent outputs are represented in the confirmed UTXO set. Before confirmation, a node may track the transaction and its outputs in a local mempool-aware view.

How is a Bitcoin UTXO spent?

A transaction spends a UTXO by placing its outpoint in an input and providing valid unlocking data. On confirmation, that referenced output is removed from the set of unspent outputs and the new transaction’s outputs may become new UTXOs.

What identifies a specific UTXO?

A specific UTXO is identified by an outpoint: the transaction ID that created it plus its output index. This is necessary because a single transaction can create multiple outputs.

Can part of a UTXO be spent?

No. An input consumes the entire UTXO it references. A transaction can create a smaller payment output and usually creates another output returning the remainder as change, less the transaction fee.

What happens to the remainder when a UTXO funds a smaller payment?

The original UTXO is fully consumed. A wallet may create a payment output and, if it chooses, a separate output it controls for remaining value. Any input value not assigned to outputs is the fee.

How can I inspect a transaction’s inputs and outputs?

Enter the transaction ID into UnlockPool’s Bitcoin Transaction Checker at /bitcoin-transaction-checker. Review the input and output fields shown for the transaction together with the transaction-level confirmation or mempool status the explorer provides.

Summary

Bitcoin’s UTXO design records bitcoin as a changing set of spendable transaction outputs. Inputs consume prior outputs, new outputs define the next spendable amounts, and a wallet’s available balance is calculated from the outputs it recognizes and currently considers spendable, subject to its confirmation and spendability settings. Reading transactions through that sequence makes on-chain activity more understandable without treating an address or a wallet as a single stored account balance.

Explore Bitcoin with UnlockPool

Primary Technical References

Technical statements were reviewed against Bitcoin Core, Bitcoin Improvement Proposals, and first-party UnlockPool product pages.

  1. Bitcoin Core chain parameters
  2. Bitcoin Core raw transaction RPC
  3. Bitcoin Core fee estimation RPC
  4. Bitcoin Core mempool terminology
  5. BIP 141 - Segregated Witness
  6. BIP 125 - Replace-by-Fee
  7. Bitcoin Core 31.0 release notes
  8. UnlockPool Bitcoin Transaction Checker
  9. UnlockPool Bitcoin Block Explorer
  10. Bitcoin Core raw transaction creation and signing
  11. Bitcoin Core transaction submission and mempool acceptance RPC
  12. Bitcoin Core 0.13.0 CPFP mining selection
  13. Bitcoin Core mempool expiry configuration
  14. UnlockPool Bitcoin Mempool Tracker
  15. UnlockPool Bitcoin Fee Estimator
  16. Bitcoin Core transaction primitives
  17. Bitcoin Core unspent transaction output view
  18. Bitcoin Core transaction input consensus checks
  19. Bitcoin Core wallet available balance RPC