Bitcoin Transaction Fees Explained
Bitcoin fees aren't based on how much you send. They're based on how much data your transaction takes up in a block. Once you understand sat/vbyte and the mempool, paying the right fee every time is easy.
The key insight
Sending 0.001 BTC and sending 1 BTC cost the same fee if the transaction is the same size. Bitcoin fees pay for block space, not for the value transferred. That's why fees are measured in satoshis per virtual byte (sat/vbyte).
How Are Bitcoin Fees Calculated?
Every Bitcoin block has a size limit. Miners fill blocks with transactions to maximize fee revenue. Transactions bid for space by setting a fee rate in satoshis per virtual byte (sat/vbyte). Higher fee rate = higher priority = faster confirmation.
Fee calculation formula
Example: a typical 250 vbyte transaction at 10 sat/vbyte costs 2,500 sats. At $100,000/BTC, that's $0.25.
| Transaction type | Typical size | At 10 sat/vb | At 50 sat/vb |
|---|---|---|---|
| Simple send (1 input, 2 outputs) | ~250 vbytes | 2,500 sats | 12,500 sats |
| SegWit simple send | ~140 vbytes | 1,400 sats | 7,000 sats |
| Consolidation (5 inputs, 1 output) | ~600 vbytes | 6,000 sats | 30,000 sats |
| Batch send (1 input, 10 outputs) | ~440 vbytes | 4,400 sats | 22,000 sats |
What Is the Mempool and How Does It Affect Fees?
The mempool (memory pool) is a queue of unconfirmed transactions waiting to be included in a block. Every full node maintains its own mempool. When you broadcast a transaction, it enters mempools across the network and waits for miners to pick it up.
Miners sort the mempool by fee rate (sat/vbyte) and fill blocks from the top down. The transaction offering the most sats per vbyte gets in first. When the mempool is congested (many transactions waiting), the minimum fee to get confirmed in the next block rises. When it's empty, even 1 sat/vbyte confirms quickly.
Always check the mempool before sending
Mempool.space shows live fee recommendations broken down by confirmation speed: next block, 3 blocks, and 1 hour. Use these numbers instead of your wallet's default estimates, which are often outdated.
Quiet mempool
1-5 sat/vbyte
Confirms within 1-2 hours
Normal conditions
5-20 sat/vbyte
Confirms in 1-3 blocks (~10-30 min)
Congested mempool
50-500+ sat/vbyte
Urgent: pay top rate for next block
Why Do SegWit and Taproot Addresses Pay Lower Fees?
SegWit (Segregated Witness) changed how transaction data is structured. Signature data (the “witness”) is separated from the transaction body and given a discount. This means SegWit transactions are smaller in virtual bytes (vbytes), even if their raw bytes are similar, so they pay less in fees at the same sat/vbyte rate.
| Format | Prefix | Typical size | Fee savings |
|---|---|---|---|
| Legacy (P2PKH) | 1... | ~250 vbytes | Baseline |
| Wrapped SegWit (P2SH) | 3... | ~200 vbytes | ~20% cheaper |
| Native SegWit (P2WPKH) | bc1q... | ~141 vbytes | ~40% cheaper |
| Taproot (P2TR) | bc1p... | ~111 vbytes | ~55% cheaper |
Sizes are for simple 1-input, 2-output transactions. Actual savings vary with transaction complexity.
If your wallet or exchange is sending to or from Legacy addresses, you're paying more than necessary. Most hardware wallets now default to Native SegWit (bc1q). Check what format your Bitcoin address uses and upgrade if you can.
What Do You Do If Your Transaction Is Stuck?
If you sent a transaction with too low a fee and it's been hours without confirmation, you have two options:
RBF: Replace-By-Fee
If you're the sender and your wallet supports RBF, you can broadcast a new version of the same transaction with a higher fee. The new version replaces the old one in the mempool. Sparrow Wallet and Electrum support this well.
Works when: you're the sender, wallet supports RBF
CPFP: Child Pays for Parent
If you received unconfirmed Bitcoin, you can spend it in a new transaction with a high fee. Miners want the child's fee, so they mine the parent too. Works even if you're the recipient and can't do RBF.
Works when: you received unconfirmed funds
How Do You Pay Less in Bitcoin Fees?
✓ Use SegWit addresses (bc1q)
Native SegWit transactions are ~40% smaller than Legacy. If your hardware wallet defaults to Legacy, switch to Native SegWit in settings.
✓ Check mempool.space before sending
Fees can vary 10-100x depending on network congestion. A transaction that costs $5 at peak congestion might cost $0.05 on a quiet weekend.
✓ Send during low-congestion periods
Bitcoin mempool is typically quieter on weekends and late at night (US time). If you're not in a rush, wait for a calm period.
✓ Batch multiple payments
If you need to send to 10 people, one transaction with 10 outputs costs much less than 10 separate transactions. Businesses paying out should always batch.
✓ Avoid UTXO consolidation at peak fees
Combining many small UTXOs into one costs more in fees. Do it when the mempool is quiet, not during a fee spike.
✓ Use Lightning for small payments
For amounts under $100, the Lightning Network is 100-1000x cheaper than on-chain. A Lightning payment typically costs 0-5 sats in fees regardless of amount.
Frequently Asked Questions
How are Bitcoin transaction fees calculated?
Bitcoin fees are based on transaction size in bytes (or virtual bytes, vbytes), not on the amount of Bitcoin sent. A simple transaction sending from one address to one recipient is ~140-250 vbytes. A complex transaction with many inputs is larger. Fees are measured in satoshis per vbyte (sat/vbyte). Multiply your transaction size by the sat/vbyte rate and you get the total fee in satoshis.
Why do Bitcoin fees fluctuate so much?
Each Bitcoin block holds a limited amount of data (about 4MB). When more people are trying to transact than can fit in the current blocks, a backlog forms in the mempool. Miners pick the highest-fee transactions first. When the mempool is busy (congested), you need to pay more to get into the next block. When it's quiet, 1 sat/vbyte often gets confirmed within an hour.
What is a good fee rate for Bitcoin transactions?
It depends on urgency. During quiet periods, 1-5 sat/vbyte confirms within a few hours. During normal conditions, 5-20 sat/vbyte confirms in 1-3 blocks. During busy periods (exchange hacks, ordinal mints, price spikes), fees can spike to 100-500+ sat/vbyte. Check mempool.space before sending to see current recommended rates.
What is the mempool and why does it matter for fees?
The mempool (memory pool) is a waiting room for unconfirmed Bitcoin transactions. Every full node maintains its own mempool. When you broadcast a transaction, it enters the mempool and waits for a miner to include it in a block. The mempool size directly determines the fee market: a large backlog drives fees up, a small backlog drives fees down. Mempool.space shows the current state in real time.
Can I send Bitcoin with zero fees?
Technically possible but unreliable. Some miners accept zero-fee transactions when the mempool is nearly empty, but most nodes won't relay them and miners won't prioritize them. In practice, you need at least 1 sat/vbyte for a transaction to be relayed and eventually confirmed. For reliable confirmation, always pay at least the minimum recommended fee from mempool.space.
What is RBF (Replace-By-Fee)?
Replace-By-Fee lets you replace an unconfirmed transaction with a new version that pays a higher fee. If you sent a transaction with too low a fee and it's stuck in the mempool, you can use RBF to bump the fee and get it confirmed faster. Not all wallets support RBF. Sparrow Wallet and Electrum have good RBF support. The transaction must have been marked as RBF-compatible when originally broadcast.
What is CPFP (Child Pays for Parent)?
Child Pays for Parent is another way to accelerate a stuck transaction. If you received Bitcoin in a low-fee transaction that's stuck, you can create a new transaction spending those (unconfirmed) outputs with a high fee. Miners see the combined fee of both transactions and have an incentive to mine the parent to collect the child's high fee. It's more complex than RBF but useful when the original sender can't do RBF.
How do Lightning Network fees compare to on-chain fees?
Lightning fees are a tiny fraction of on-chain fees. Typical Lightning payments cost 0-5 satoshis in routing fees, regardless of amount. A $100 Lightning payment might cost 1-2 sats in fees. An on-chain Bitcoin transaction typically costs 200-2000+ sats depending on mempool congestion. For small, frequent payments, Lightning is dramatically cheaper.
Do Bitcoin fees go to miners or to Bitcoin developers?
All transaction fees go to the miner who found the block containing the transaction. There are no protocol fees going to developers, foundations, or anyone else. Bitcoin Core developers are funded by grants, donations, and employers, not from transaction fees. This is one way Bitcoin differs from many proof-of-stake networks that take a protocol cut.
How can I reduce my Bitcoin transaction fees?
Several strategies help: (1) Batch multiple payments into one transaction. (2) Use SegWit or Taproot addresses, which are 30-40% cheaper than Legacy. (3) Send during low-congestion periods (often weekends or overnight US time). (4) Use coin control in Sparrow Wallet to avoid combining many small UTXOs. (5) For small amounts, use Lightning instead of on-chain. (6) Set your fee manually based on current mempool conditions rather than using wallet defaults.
Want Cheaper Fees?
For small payments use Lightning. For self-custody with SegWit addresses, a hardware wallet is the right tool.