Overview
In Bitcoin, transaction inputs must be spent in their entirety. When the value of the inputs exceeds the intended payment plus the transaction fee, the excess must be sent somewhere. This excess is returned to the sender via a change output directed to a change address that the sender's wallet controls.
How Change Works
Example: Alice wants to send 0.3 BTC to Bob
Alice's wallet has a UTXO worth 0.5 BTC
Transaction:
Input: 0.5 BTC (Alice's UTXO, spent in full)
├── Output 1: 0.3 BTC → Bob's address (payment)
├── Output 2: 0.199 BTC → Alice's change address (change)
└── Fee: 0.001 BTC (implicitly: inputs - outputs)
0.5 = 0.3 + 0.199 + 0.001
Privacy Implications
Change outputs are one of the primary vectors for chain analysis. Analysts use heuristics to identify which output is the payment and which is the change:
- Round number heuristic: If one output is a round number (e.g., 0.1 BTC) and the other is not, the round number is likely the payment
- Address type heuristic: If the change output uses the same address format as the inputs, it may be identifiable as change
- Wallet fingerprinting: Different wallet software places the change output in predictable positions
Best Practices
Modern HD wallets automatically generate a fresh change address for each transaction, preventing address reuse and making chain analysis more difficult. Users should avoid manually selecting change addresses and let their wallet handle this automatically.
Edge Cases
When the input value almost exactly matches the desired payment plus fee, some wallets will skip creating a change output entirely, adding the tiny excess to the miner fee. This avoids creating an economically insignificant UTXO (dust) that would cost more in fees to spend in the future than it is worth.