What is a Change Output?
Learn what a Bitcoin change output is, why UTXO transactions need it, how wallets create it, and why it matters for fees, privacy, and security.

Introduction
Change output is the Bitcoin transaction output that sends leftover value back to the spender. It seems like a small implementation detail, but it reveals something fundamental about how Bitcoin works: you do not spend “part of your balance” directly. You spend whole UTXOs, and if the inputs you use are worth more than the payment plus the fee, the remainder has to go somewhere explicit.
That is the puzzle worth starting from. In a bank app, if you send 0.01 BTC from a 1 BTC balance, nothing about the transfer forces the system to show where the other 0.99 BTC went. In Bitcoin, the ledger does force that question. Every satoshi in the inputs of a transaction must either be assigned to one or more outputs or be left behind as miner fee. A change output is the mechanism that makes this accounting work without overpaying the recipient or accidentally donating the difference to miners.
Once you see that, several other things click into place. Change outputs are why wallets generate addresses you did not manually ask for. They are why the same payment can produce two outputs, one to someone else and one back to you. They are also a major source of privacy leakage, because observers often try to guess which output is the payment and which is the sender’s change. Much of wallet design (coin selection, address derivation, fee calculation, and script-type choice) is shaped by that one fact.
Why does Bitcoin use change outputs instead of editing a balance?
| Option | Immediate cost | Future cost | Privacy | When preferred |
|---|---|---|---|---|
| Create change output | Adds output bytes | Pay later to spend | More linkable | When remainder is economically useful |
| Absorb into fee (no change) | Higher immediate fee | No future spend cost | Less linkability | When remainder is very small or dust |
The key constraint is the UTXO model. A UTXO, or unspent transaction output, is a discrete chunk of bitcoin created by some earlier transaction and waiting to be spent. Wallet balances are not stored as a single mutable number. They are the sum of many separate UTXOs the wallet can unlock.
That means spending works more like handing over cash bills than editing an account balance. If you owe someone $12 and only have a $20 bill, you do not tear off eight dollars from the bill. You give up the full bill and receive $8 back as change. The analogy explains the basic mechanism well: a Bitcoin input consumes an entire previous output, and if its value is larger than what you want to pay, the transaction creates another output returning the remainder. The analogy fails in one important way, though: Bitcoin “change” is not physically handed back by the recipient. It is created by the sender as part of the same transaction.
Here is the accounting rule underneath it. If a transaction has input value I, payment outputs totaling P, and fee F, then the values must satisfy I = P + change + F. Rearranged, change = I - P - F. If the wallet sets change to zero, then every extra satoshi beyond P becomes fee. So change is not optional in the economic sense. What is optional is whether the remainder is large enough to justify creating another output instead of folding it into the fee.
This is also why a change output is just a regular output at the protocol level. The blockchain does not mark an output as “payment” or “change.” Both are simply outputs with values and locking scripts. The distinction is semantic: one is intended for the recipient, the other for the sender. That distinction lives in wallet logic and in the inferences observers try to make later.
How does a change output look in a real Bitcoin transaction?
Suppose your wallet controls a single UTXO worth 100,000 satoshis, and you want to pay a merchant 30,000 satoshis. After estimating transaction size, your wallet decides the appropriate fee is 2,000 satoshis. The wallet cannot spend only 32,000 satoshis out of the 100,000-satoshi UTXO. It must spend the entire UTXO as an input.
So the wallet constructs a transaction with one input worth 100,000 satoshis and typically two outputs. The first output pays the merchant 30,000 satoshis. The second output sends 68,000 satoshis back to an address controlled by your wallet. The missing 2,000 satoshis are the fee. Nothing mysterious happened to the remaining value; it was explicitly reassigned.
After the transaction confirms, the original 100,000-satoshi UTXO is gone. In its place, there are now two new outputs: the merchant’s 30,000-satoshi UTXO and your 68,000-satoshi UTXO. From the wallet’s perspective, your balance did not “shrink in place.” One UTXO was destroyed and a new one was created for your leftover value. That newly created UTXO is the change output.
This is the simplest nontrivial example, but the same logic scales up. A wallet may combine several inputs to fund a payment, produce multiple recipient outputs, and still add one change output to capture the remainder. Or it may find an input combination that nearly matches the target and avoid change entirely. The invariant stays the same: inputs are consumed whole, and all value must be accounted for as outputs or fee.
Why do wallets handle change outputs instead of individual users?
Most users do not think in UTXOs. They think in balances and payment amounts. Wallet software sits between those two views, turning a desired payment into a valid transaction that selects inputs, estimates fees, and decides whether to create change.
This is why wallets often generate addresses in the background. If a wallet returned change to the same address repeatedly, it would create obvious linkages between transactions and weaken privacy. Developer guidance for Bitcoin strongly recommends sending change to a new address rather than reusing an old one. Historically that might have been a fresh P2PKH or P2SH address; today it may be a SegWit or Taproot address depending on wallet policy and supported script types.
Hierarchical deterministic wallets, standardized by BIP 32, made this practical. Instead of storing unrelated random keys, an HD wallet derives many addresses from a master seed. BIP 32 recommends a layout with separate chains per account: an external chain for addresses you hand out to others and an internal chain for operations that do not need to be communicated, including change. In the common notation, .../0/k is used for receiving addresses and .../1/k for change addresses. That separation is not a consensus rule, but it became a powerful convention because it lets wallets derive fresh change addresses endlessly from the same seed while keeping them logically distinct from receive addresses.
Modern descriptor wallets make this even more explicit. Output descriptors are the wallet’s structured description of which scripts belong to it. Bitcoin Core’s descriptor system can represent receiving and change branches together using a multipath construction, effectively saying: derive addresses from one branch for public receiving and from another branch for internal change. That does not change the meaning of a change output on-chain, but it changes how wallets reason about ownership and generate the next destination for returned funds.
How does creating change increase my transaction costs now and later?
At first glance, adding a change output sounds free. It is just returning your own money. But mechanically it is not free, because every extra output increases transaction size, and transaction fees depend on the final signed transaction’s byte or weight cost.
That leads to the first important tradeoff. Creating change now often means paying twice for it: once to include the change output in the current transaction, and later again to spend that change UTXO as an input in a future transaction. A wallet that creates many tiny change outputs may be turning user funds into awkward fragments that cost more to spend than they are worth. This is why wallet coin selection is not merely about finding enough value. It is about finding a set of inputs that funds the payment while minimizing long-run cost and avoiding bad change.
Bitcoin Core’s coin selection code makes this explicit. Its Branch-and-Bound algorithm searches for an input set that reaches the spending target without exceeding it by more than the cost of creating and later spending a change output. That is the right way to think about the problem from first principles: change is not just leftover value, it is a new object with future cost. If the remainder is small enough, the economically rational decision may be to avoid creating change at all.
Bitcoin Core also uses a “waste” metric to compare candidate selections. In simplified form, it weighs excess value against fee-rate differences and the cost of the chosen inputs. The important idea is not the exact formula but the objective: a good selection is not merely valid, it minimizes avoidable loss. Sometimes that means exact matching with no change. Sometimes it means creating a reasonably sized change output. And sometimes it means avoiding tiny change by increasing the effective target during selection.
This is why change amount is partly an output of coin selection, not just arithmetic after the fact. The wallet chooses inputs with an eye toward whether change should exist, how large it would be, and whether the result is worth carrying forward as a future UTXO.
When should a wallet suppress change because it's dust or non-relayable?
| Change size | Relay status | Economic sense | Wallet action | Typical threshold example |
|---|---|---|---|---|
| Dust | May be non-standard | Uneconomic to spend | Suppress change, add to fee | ≈546 satoshis (historical P2PKH) |
| Borderline small | Often relayed but costly | Marginal to spend later | Usually suppress or inflate target | one‑third of spend cost |
| Viable change | Standard relay | Economical to spend | Create change output | Above dust threshold |
There is a lower bound below which change becomes problematic. An output that is too small relative to the cost of spending it is considered dust by default node policy. Such outputs may be non-standard for relay and are often uneconomic even if technically valid under consensus rules.
Bitcoin developer documentation describes this in practical terms: transactions should not create outputs worth fewer than roughly one-third of what it would cost to spend them in a typical input, with the exact threshold depending on script type and relay policy. Historically a commonly cited figure was 546 satoshis for typical P2PKH or P2SH outputs under default relay settings. The deeper point is that dust is not an arbitrary annoyance. It is a policy response to a real economic mismatch: if spending an output costs more than the output is worth, the ledger accumulates junk.
So wallets must ask a simple question before creating change: **is this remainder viable? ** If not, the wallet usually suppresses the change output and adds that value to the fee instead. Bitcoin Core’s implementation reflects exactly this logic: when computed change is below a configured minimum viable threshold, the wallet treats the transaction as having no change.
This is one of the places where a smart reader might misunderstand the rules. It is tempting to think “the transaction had leftover value, so it should always return change.” But protocol validity and sensible wallet behavior are different things. The protocol only requires complete accounting. Wallet policy decides whether the remainder should become a new UTXO or be consumed as fee because creating it would be wasteful or non-standard.
How do change outputs leak privacy and how obvious are they on-chain?
| Heuristic/Defense | Signal used | Accuracy | Wallet mitigation | Practical effect |
|---|---|---|---|---|
| One‑time change heuristic | Fresh output then spent | High (probabilistic) | Use fresh internal change addresses | Expands ownership clustering |
| Format‑mix heuristic | Mixed script/address types | Moderate | Use matching change script type | Reduces trivial formatting clues |
| Avoid creating change | No change output produced | Perfect for that tx | Exact‑match / BnB coin selection | Eliminates that change leakage |
Because the blockchain does not label which output is change, outside observers try to infer it. And often they can do so surprisingly well.
The basic reason is asymmetry. In many ordinary payments, one output goes to the recipient and another goes back to a freshly generated address controlled by the sender. If analysts can identify that fresh address as likely internal change, they can link the output back to the spender. Academic work on Bitcoin clustering showed how powerful this can be. Conservative change-address heuristics (especially the pattern of a one-time, newly seen address that receives change and is later spent) can dramatically expand ownership clusters beyond what input co-spend alone reveals.
This does not mean every change guess is correct. These heuristics are probabilistic and depend on wallet behavior. But they work well enough that wallet design treats change as a major privacy surface. Reusing the same address for change is especially damaging because it turns a probabilistic inference into a much stronger link. That is why fresh change addresses are not just a cleanliness preference; they are a core privacy defense.
Script type can matter too. During periods of address-format transition, mixed-output transactions can make change easier to guess. For example, when Taproot outputs started entering use, a transaction paying a non-Taproot recipient while returning change in a Taproot output could make the sender’s change more obvious. Bitcoin Core and related guidance responded by opportunistically using P2TR change when another output in the transaction was already P2TR, reducing that kind of trivial format-based clue.
Privacy around change also interacts with user behavior after the transaction. A change UTXO is usually strongly linked to the inputs that created it. If you later merge that change with other coins, you may reveal even more about your transaction graph. Privacy-focused wallets therefore treat change coins carefully, sometimes preferring to avoid creating them, to isolate them, or to remix them before ordinary spending.
How can change outputs be stolen during signing and how do wallets prevent it?
A change output is economically just as important as the payment output. If the wallet accidentally directs payment to the right recipient but sends change to the wrong address, the user loses funds. This sounds obvious, but it has been a real attack surface.
One class of failures comes from predictable or privacy-leaking change behavior. Older Bitcoin software versions were assigned CVE-2013-2273 for making it easier for attackers to obtain sensitive information about returned change through predictable transaction-output behavior. Even when such flaws do not directly steal funds, they can expose which output belongs to the sender.
A more direct class of failures appears in Hardware Wallet and signing workflows. If a signing device trusts the host computer’s claim about which output is “change” without verifying that the output script is actually derived from the wallet’s own keys, a compromised host can replace the change address with an attacker-controlled address. The user sees the intended payment amount, signs the transaction, and silently sends the remainder away. Historical discussions of hardware-wallet attacks include exactly this pattern.
The first-principles lesson is simple: a secure wallet must treat change ownership as something to verify, not something to assume. In HD and descriptor-based wallets, this usually means checking that the proposed change output matches an address derivable from the wallet’s internal branch or descriptor. That verification is especially important when the transaction is assembled outside the device, as in raw transaction or PSBT workflows.
What decisions does a wallet make when creating change outputs?
When a wallet builds a payment transaction, “create change” is not a single decision. It is the result of several linked decisions.
First, the wallet chooses inputs. That choice determines the total input value and therefore the size of any remainder. Second, it estimates the fee of the final signed transaction, which depends on the transaction’s weight and the fee rate needed for timely confirmation. Third, it decides whether the leftover value is large enough to justify a change output after accounting for the extra output and future spend cost. Fourth, if change is created, the wallet chooses what kind of output it should be: legacy, P2SH-segwit, bech32, Taproot, multisig, or some other script supported by the wallet. Fifth, it derives a fresh internal destination for that change and records that it belongs to the wallet.
Bitcoin Core exposes only a small part of this machinery directly to users. The RPC getrawchangeaddress, for example, returns a new address intended for receiving change and accepts an optional address_type argument, with defaults influenced by wallet configuration such as -changetype. The documentation explicitly says this RPC is for raw transactions, not normal wallet use, which is a useful reminder: ordinary users are not supposed to micromanage change. Wallet software is.
In descriptor wallets, the address-derivation side of this process is represented cleanly. A wallet may carry paired receiving and change descriptors, or a multipath descriptor that expands into both. In newer Bitcoin Core releases, descriptor wallets also gained support for Taproot-related address derivation and bech32m handling, which means that the set of script types available for change has evolved along with the rest of Bitcoin’s output formats.
Which parts of change-output behavior are protocol rules and which are wallet conventions?
It helps to separate the parts of change-output behavior that come from Bitcoin itself from the parts that come from wallet design.
What is fundamental is the accounting structure. Inputs spend earlier outputs in full. Transaction value must balance. Any excess input value not sent to recipients or fees must be returned in an output. That is why change outputs exist.
What is conventional is almost everything else. Bitcoin consensus does not require change to go to a new address, though good wallets do that. It does not require a separate internal HD branch for change, though BIP 32 recommends one. It does not require a particular script type for change, though wallet defaults and privacy considerations strongly influence that choice. It does not label change on-chain. It does not require wallets to avoid tiny change, though relay policy and economics push them to do so.
This distinction matters because it explains why wallet behavior varies. Two wallets can both be fully valid Bitcoin wallets and still differ in when they suppress small change, whether they prefer changeless transactions, which address types they use for change, or how aggressively they optimize for privacy versus fee minimization. Those are implementation choices built on top of the same protocol constraint.
Conclusion
A change output is the leftover value from a Bitcoin transaction sent back to the spender as a new output. It exists because Bitcoin’s UTXO model spends outputs whole: if your chosen inputs are worth more than the payment and fee, the remainder must be explicitly returned or it becomes fee.
That simple mechanism has large consequences. It drives wallet address generation, shapes coin selection, creates dust and fee tradeoffs, and opens one of Bitcoin’s main privacy leakages. If you remember one thing, remember this: in Bitcoin, change is not bookkeeping after the payment; it is part of the payment transaction itself.
How do you trade or buy Bitcoin on an exchange?
You can get practical exposure to Bitcoin by buying or trading BTC on Cube Exchange. Fund your Cube account with fiat or a supported crypto, then use the BTC markets to place an order and manage execution. The same on-ramp and market tools let you convert between fiat, USDC, and BTC while keeping settlement and chain details explicit.
- Deposit fiat via the on-ramp or send a supported crypto (e.g., USDC or BTC) to your Cube deposit address; choose the correct chain when depositing BTC.
- Open the BTC/USD or BTC/USDC market on Cube and pick an order type: use a limit order for precise price control or a market order for immediate execution.
- Enter the BTC amount or fiat/USDC you want to spend, review estimated fill, maker/taker fees, and slippage, then submit the order.
- If you need on-chain BTC, request a withdrawal, paste your receiving address carefully, select the Bitcoin network, and confirm required confirmations before sending.
Frequently Asked Questions
- Why do wallets usually send change to a new address instead of reusing an old one? +
- Wallets send change to new addresses to avoid creating obvious links between transactions; returning change to a fresh address reduces address reuse and makes heuristics that try to identify the sender’s output much less effective, and HD wallets (BIP32) provide an internal change chain precisely for that purpose.
- When should a wallet suppress creating a change output and just increase the transaction fee? +
- When the computed remainder would be uneconomic or non-relayable (i.e., below the wallet’s minimum-viable-change or node dust threshold), wallets usually suppress the change output and add the remainder to the fee instead of creating a tiny UTXO.
- How does making change affect the fees I pay now and in the future? +
- Because every extra output increases the transaction’s size, creating change costs fee now and also requires paying to spend that new UTXO later; coin-selection algorithms (e.g., Branch-and-Bound) therefore try to avoid creating change unless the leftover is large enough to justify those immediate and future costs.
- How can change outputs be stolen during signing, and how do wallets prevent that? +
- If the software assembling or relaying a transaction is malicious, it can replace the intended change address with an attacker-controlled one; secure wallets and hardware signers mitigate this by verifying that the change output is to an address/descriptor actually derivable from the wallet (i.e., checking on-device or via PSBT-derived proofs).
- Can someone on the blockchain tell which output in my transaction is the change output? +
- No — the blockchain treats all outputs the same and does not label which are change; external analysts use heuristics (freshly seen addresses, mixed script types, co-spend patterns) and clustering techniques that often but not always correctly infer which output is change.
- What is dust and why does it matter for change outputs? +
- ‘Dust’ refers to outputs so small that spending them would typically cost more in fees than they’re worth; node relay policy and wallet heuristics therefore set a minimum-viable-change threshold (commonly cited historical figures like ~546 satoshis for legacy P2PKH) below which wallets suppress change.
- How do descriptor wallets handle change addresses differently from older HD wallets? +
- descriptor-capable wallets commonly represent receiving and change branches separately (a multipath or paired descriptors pattern) so that change addresses are derived from an internal descriptor/chain and tracked as wallet-owned without being exposed as normal receive addresses.
- Is creating a change output mandatory, or can leftover value always be ignored? +
- Change is required by Bitcoin’s UTXO accounting — every input’s value must be assigned to outputs or fees — but whether the remainder becomes a new UTXO or is folded into the fee is a wallet policy decision driven by economics and relay rules.