Overview
The fee rate is the standard metric used to measure a Bitcoin transaction's fee relative to its size, expressed in satoshis per virtual byte (sat/vB). Rather than looking at the absolute fee amount, miners prioritize transactions by fee rate, making it the key factor determining how quickly a transaction gets confirmed. Virtual bytes (vB) are a unit introduced with SegWit that gives a discount to witness data, reflecting its lower impact on node resources.
Calculating Fee Rate
Fee Rate = Total Fee (in satoshis) / Transaction Size (in virtual bytes)
Example:
Transaction size: 225 vB
Desired fee rate: 20 sat/vB
Total fee = 225 * 20 = 4,500 satoshis (0.000045 BTC)
Virtual Bytes vs. Raw Bytes
SegWit introduced the concept of transaction "weight," which discounts witness data:
Weight = (non-witness bytes * 4) + (witness bytes * 1)
Virtual bytes = Weight / 4
Example legacy transaction (no SegWit):
Size: 226 bytes, Weight: 904, vSize: 226 vB
Example SegWit transaction:
Non-witness: 118 bytes, Witness: 107 bytes
Weight: (118 * 4) + (107 * 1) = 579
vSize: 579 / 4 = 144.75 → 145 vB
Savings: ~36% lower effective size
Typical Fee Rate Ranges
Fee rates fluctuate based on network demand:
┌────────────────────┬────────────────────────────────┐
│ Fee Rate │ Typical Confirmation Time │
├────────────────────┼────────────────────────────────┤
│ 50+ sat/vB │ Next block (urgent) │
│ 20-50 sat/vB │ 1-3 blocks (~10-30 min) │
│ 10-20 sat/vB │ 3-6 blocks (~30-60 min) │
│ 5-10 sat/vB │ 6-12 blocks (~1-2 hours) │
│ 1-5 sat/vB │ Hours to days (low priority) │
└────────────────────┴────────────────────────────────┘
Note: These ranges vary significantly based on current demand.
Fee Rate Estimation
Wallets estimate fee rates by analyzing the current mempool -- the pool of unconfirmed transactions waiting for block inclusion. Bitcoin Core's estimatesmartfee RPC provides fee rate estimates for different confirmation targets. Third-party APIs and mempool explorers also offer real-time fee estimates.
Why Fee Rate Matters More Than Total Fee
A miner filling a block wants to maximize total fees collected within the block weight limit. This is achieved by selecting transactions with the highest fee rate first:
Transaction A: 1,000 vB at 10 sat/vB = 10,000 sats total
Transaction B: 200 vB at 30 sat/vB = 6,000 sats total
Miner prefers B over A (higher sat/vB), even though A pays more total.
Five transactions like B would yield 30,000 sats in the same space.
Common Misconceptions
- Fee rate is not based on the BTC amount being transferred. Sending 10 BTC or 0.001 BTC in identically structured transactions costs the same fee.
- The minimum relay fee rate in Bitcoin Core is 1 sat/vB, not 0. Transactions below this threshold will not be propagated by default.
- Fee rates are not set by the protocol. They are determined entirely by market supply and demand for block space.