Fee Rate
The price per unit of block space a Bitcoin transaction pays, measured in satoshis per virtual byte (sat/vB) to prioritize confirmation.
Key Takeaways
- Fee rate measures the cost density of a Bitcoin transaction in satoshis per virtual byte (sat/vB). Miners use this metric to rank transactions when filling blocks, so a higher fee rate means faster confirmation.
- Virtual bytes account for SegWit's witness discount, where witness data costs 75% less than non-witness data in terms of block space. This makes the fee rate a more accurate measure of a transaction's true block space consumption than raw byte count.
- Fee rates fluctuate dramatically based on mempool congestion: from as low as 1 sat/vB during quiet periods to over 200 sat/vB during demand spikes like the 2024 Runes launch.
What Is Fee Rate?
A fee rate is the price a Bitcoin transaction pays per unit of block space it consumes, expressed in satoshis per virtual byte (sat/vB). It answers a simple question: how much is this transaction willing to pay for each unit of space it occupies in a block?
The formula is straightforward:
fee_rate = transaction_fee (satoshis) / transaction_size (virtual bytes)For example, a transaction that pays 2,100 satoshis in fees and measures 140 virtual bytes has a fee rate of 15 sat/vB. A different transaction paying 10,000 satoshis but measuring 500 virtual bytes has a fee rate of only 20 sat/vB. Despite paying nearly five times more in total fees, it barely edges out the smaller transaction in priority.
This distinction matters because miners optimize for revenue per block, not per transaction. Since each block has a fixed capacity of 4,000,000 weight units (equivalent to roughly 1,000,000 virtual bytes), miners maximize profit by sorting the mempool by fee rate and filling blocks from the top down. A small transaction with a high fee rate is more valuable per unit of space than a large transaction with a lower rate.
How It Works
Understanding fee rates requires understanding how Bitcoin measures transaction size after the SegWit upgrade. Before SegWit, transaction size was simply measured in bytes, and the fee rate was satoshis per byte (sat/B). SegWit introduced the concept of transaction weight and virtual bytes to give a discount to witness data.
Weight and Virtual Bytes
BIP 141 defines transaction weight as:
weight = (non_witness_bytes × 4) + (witness_bytes × 1)
virtual_bytes = weight / 4 (rounded up)Non-witness data (inputs, outputs, transaction metadata) costs 4 weight units per byte. Witness data (signatures, scripts used for validation) costs only 1 weight unit per byte. This 4:1 ratio is the "witness discount": it incentivizes using SegWit transaction formats because signatures take up less effective block space.
Consider a typical SegWit transaction with 112 bytes of non-witness data and 110 bytes of witness data:
weight = (112 × 4) + (110 × 1) = 448 + 110 = 558 WU
vbytes = 558 / 4 ≈ 140 vB
// Compare to a legacy transaction of 226 bytes:
weight = 226 × 4 = 904 WU
vbytes = 904 / 4 = 226 vBThe SegWit transaction uses only 140 virtual bytes compared to 226 for the legacy equivalent, meaning it pays a lower total fee at the same sat/vB rate. This is why native SegWit addresses (bech32) are cheaper to spend from than legacy addresses.
How Miners Select Transactions
When a miner constructs a new block template, they pull transactions from their mempool sorted by fee rate. The process works like an auction:
- All unconfirmed transactions sit in the mempool with their fee rates visible
- The miner sorts transactions by fee rate (sat/vB) from highest to lowest
- Transactions are added to the block template until the 4,000,000 weight unit limit is reached
- Transactions that did not fit remain in the mempool for the next block
In practice, miners also account for transaction dependencies: child-pays-for-parent (CPFP) means a high-fee child transaction can pull its low-fee parent into a block. The upcoming cluster mempool upgrade (targeted for Bitcoin Core 31.0) improves this by grouping related transactions into clusters for more accurate fee-rate-based sorting.
Minimum Relay Fee
Bitcoin nodes enforce a minimum relay fee rate below which they will not propagate transactions. For years, the Bitcoin Core default was 1 sat/vB. As of Bitcoin Core 30.0 (released in 2025), this default was lowered to 0.1 sat/vB to reflect Bitcoin's increased fiat value. However, because most nodes on the network have not yet upgraded, 1 sat/vB remains the practical floor for reliable transaction propagation.
Fee Rate Estimation
Choosing the right fee rate is a balancing act: too low and your transaction may wait hours or days for confirmation; too high and you overpay for block space. Fee estimation tools analyze mempool conditions to recommend appropriate rates.
Bitcoin Core estimatesmartfee
Bitcoin Core provides the estimatesmartfee RPC command, which takes a confirmation target (number of blocks) and returns a recommended fee rate:
# Estimate fee rate for confirmation within 6 blocks
bitcoin-cli estimatesmartfee 6
# Returns feerate in BTC/kvB (divide by 100 for sat/vB)
{
"feerate": 0.00012500, // 12.5 sat/vB
"blocks": 6
}
# Conservative mode (higher, more reliable)
bitcoin-cli estimatesmartfee 6 "conservative"
# Economical mode (lower, responds faster to fee drops)
bitcoin-cli estimatesmartfee 6 "economical"This method uses historical data on how long transactions at various fee rates took to confirm. Its main limitation: during sudden congestion spikes, historical data can lag behind current conditions.
Mempool-Based Estimation
Services like mempool.space take a different approach by analyzing the current mempool directly. Their API projects which transactions would fill the next few blocks, then reports fee rate tiers:
// GET https://mempool.space/api/v1/fees/recommended
{
"fastestFee": 25, // sat/vB for next-block confirmation
"halfHourFee": 20, // sat/vB for ~3 block confirmation
"hourFee": 15, // sat/vB for ~6 block confirmation
"economyFee": 8, // sat/vB for low-priority
"minimumFee": 1 // sat/vB floor
}This real-time approach responds immediately to mempool changes, making it more reactive than the historical method. The cluster mempool upgrade will bring similar mempool-aware estimation directly into Bitcoin Core, improving its native fee estimation accuracy.
Fee Rate Ranges
Fee rates are highly variable. The fee market is a pure auction with no protocol-level price smoothing, so rates respond directly to supply (block space) and demand (pending transactions).
| Condition | Typical Fee Rate | Confirmation Time |
|---|---|---|
| Low congestion | 1 to 5 sat/vB | Next few blocks |
| Normal traffic | 5 to 25 sat/vB | 1 to 6 blocks |
| High congestion | 50 to 150 sat/vB | Next block (competitive) |
| Extreme spikes | 200+ sat/vB | Next block (urgent) |
Notable historical spikes include the May 2023 BRC-20 and Ordinals wave, which pushed the mempool past 500 MB, and the April 2024 Runes protocol launch coinciding with the halving, where average transaction fees exceeded $90 and a single block generated over $2.4 million in fees. These events underscore why understanding fee rates is critical for anyone transacting on the Bitcoin base layer.
Comparison to Ethereum Gas Prices
Both Bitcoin and Ethereum charge fees based on resource consumption, but the models differ significantly:
| Dimension | Bitcoin Fee Rate | Ethereum Gas Price |
|---|---|---|
| Unit | sat/vB (data size) | gwei per gas unit (computation) |
| Fee depends on | Transaction size in virtual bytes | Computational complexity (gas consumed) |
| Price mechanism | Pure auction: miners pick highest sat/vB | EIP-1559: algorithmic base fee (burned) plus priority tip |
| Predictability | Volatile: no protocol-level smoothing | More predictable: base fee adjusts each block toward 50% utilization |
| Simple transfer | Same fee structure regardless of amount sent | Fixed 21,000 gas for ETH transfers; smart contracts cost more |
Bitcoin's fee rate model is simpler: all transactions compete on one dimension (data size), regardless of what they do. Ethereum's gas model is more granular because it prices computational steps, but the EIP-1559 base fee mechanism makes Ethereum fees more predictable in the short term. Bitcoin's pure auction model can produce sharper fee rate spikes during sudden demand surges.
Why Fee Rate Matters
Fee rates directly affect the cost and speed of every on-chain Bitcoin transaction. For users, wallets, and businesses building on Bitcoin, understanding fee rates is essential for:
- Choosing appropriate fees: overpaying wastes money, underpaying risks delays. Tools that estimate fee rates help users find the right balance for their urgency level
- UTXO consolidation: during low-fee periods, users can combine many small UTXOs into fewer large ones cheaply, reducing future transaction costs when fees rise
- Transaction batching: exchanges and payment processors batch multiple payments into a single transaction to share the per-output cost and reduce the total block space consumed
- Layer 2 adoption: high fee rates make on-chain transactions expensive, driving demand for off-chain solutions like the Lightning Network and Spark, where transactions settle without competing for base-layer block space
When fee rates spike, techniques like replace-by-fee (RBF) and CPFP allow users to bump fees on transactions that are stuck in the mempool. Understanding fee rates is a prerequisite for using these fee bumping strategies effectively.
Risks and Considerations
Fee Rate Volatility
Because Bitcoin has no protocol-level fee smoothing, fee rates can change dramatically within minutes. A transaction broadcast at 5 sat/vB during a quiet period may become unconfirmable if a sudden surge pushes the mempool floor above 20 sat/vB. Users who set fees based on conditions at broadcast time may find their transactions stuck for hours or days.
Estimation Inaccuracy
Fee estimation is inherently imperfect. Historical-based estimators like Bitcoin Core's estimatesmartfee can lag during rapid fee changes. Mempool-based estimators respond faster but cannot predict future demand. No estimator guarantees confirmation within a specific timeframe.
Dust Transactions
When fee rates are high, the cost to spend a small UTXO can exceed the UTXO's value. A 1,000 satoshi output that requires 140 vB to spend costs 1,400 satoshis in fees at just 10 sat/vB, making it economically unspendable. This is why dust limits exist and why coin selection algorithms matter.
Impact on Layer 2 Operations
Fee rates affect Layer 2 systems that rely on on-chain transactions for security. Lightning Network force closes, justice transactions, and anchor outputs all require on-chain settlement. During high-fee periods, the cost of these operations increases, which is why protocols like Spark that minimize on-chain footprint provide meaningful cost advantages.
This glossary entry is for informational purposes only and does not constitute financial or investment advice. Always do your own research before using any protocol or technology.