Bitcoin Mempool Visualization and Analysis Guide
Guide to reading Bitcoin mempool data: fee distribution, congestion patterns, transaction prioritization, and purging thresholds explained for developers.
What the Bitcoin Mempool Tells You
The Bitcoin mempool (memory pool) is the holding area where every unconfirmed transaction waits before a miner includes it in a block. Each full node maintains its own mempool, so there is no single canonical mempool: what your node sees depends on its peers, its configuration, and network propagation delays. Understanding how to read mempool data is essential for estimating transaction fees, timing transactions for lower costs, and diagnosing network congestion.
This guide explains the key metrics, visualization tools, and patterns that developers and power users need to interpret mempool data effectively. For real-time fee estimation based on current mempool conditions, see the Bitcoin fee estimator.
Key Mempool Metrics
Mempool visualizers track several core metrics. Each tells you something different about current network conditions.
Mempool Size (MB and vMB)
Bitcoin Core's default mempool limit is 300 MB of RAM, set by the -maxmempool configuration option. This 300 MB includes transaction metadata and indexing overhead: roughly 63% of the memory is used by internal data structures, leaving approximately 110 MB for raw transaction data. Visualization tools like mempool.space typically display sizes in virtual megabytes (vMB), which accounts for the SegWit witness discount. A mempool showing 80 vMB may consume significantly more raw memory on the node.
The distinction between raw bytes and virtual bytes matters because blocks are limited to 4,000,000 weight units (1,000,000 vbytes or 1 vMB). For witness data, each byte counts as 1 weight unit, while non-witness bytes count as 4 weight units. This means a typical SegWit transaction uses fewer vbytes than raw bytes, effectively increasing block capacity to about 1.7 to 2.0 MB of raw data per block.
Transaction Count
The number of unconfirmed transactions in the mempool provides a quick pulse check on network activity. During quiet periods in 2025, the mempool held as few as 2,000 to 10,000 transactions. Normal business-day activity typically produces 50,000 to 150,000 pending transactions. Peak congestion events have pushed the count above 450,000: the BRC-20 minting frenzy in May 2023 reached approximately 470,000 unconfirmed transactions, and the December 2023 Ordinals inscription wave hit 383,000.
Fee Rate Distribution
The most actionable mempool metric is the distribution of transactions by fee rate, measured in satoshis per virtual byte (sat/vB). This distribution determines which transactions miners will include first (highest fee rate) and which may wait hours, days, or be evicted entirely. Most visualizers display this as a stacked chart where color-coded bands represent fee rate ranges.
Fee Tiers by Congestion Level
Fee rates vary dramatically depending on network congestion. The following table shows typical ranges observed across different conditions from 2023 through mid-2026.
| Congestion | Fee Rate (sat/vB) | Typical Confirmation | Mempool Size | Pending Transactions |
|---|---|---|---|---|
| Very low | 0.1 - 2 | Next block | < 15 vMB | 2,000 - 10,000 |
| Low | 2 - 5 | 1 - 3 blocks | 15 - 50 vMB | 10,000 - 50,000 |
| Medium | 5 - 20 | 3 - 6 blocks | 50 - 150 vMB | 50,000 - 150,000 |
| High | 20 - 100 | 1 - 6 hours | 150 - 300 vMB | 150,000 - 300,000 |
| Extreme | 100 - 1,000+ | Minutes if paid | 300+ vMB | 300,000 - 470,000+ |
As of Bitcoin Core 29.1 (September 2025), the default minrelaytxfee was reduced from 1 sat/vB to 0.1 sat/vB, reflecting Bitcoin's price appreciation and the reality that sub-1 sat/vB transactions were already being mined regularly. During quiet periods in mid-2025, roughly 15% of daily blocks were "free blocks" where the average fee was 1 sat/vB or less.
Transaction Prioritization and Eviction
When the mempool exceeds its 300 MB limit, Bitcoin Core activates two mechanisms simultaneously. First, it evicts the lowest descendant-feerate transaction packages to free memory. Descendant feerate is the average feerate of a transaction and all of its unconfirmed descendants in the mempool: this prevents a low-fee parent from being evicted if it has a high-fee child-pays-for-parent (CPFP) descendant. Second, the node raises its dynamic mempoolminfee to the feerate of the last evicted transaction, rejecting any incoming transactions below this threshold.
Once congestion eases and the mempool drops below the limit, the mempoolminfee does not reset instantly. It decays gradually, halving approximately every 3 to 12 hours. This slow decay prevents oscillation where the fee drops, a flood of low-fee transactions re-enters, and eviction spikes again.
Transactions that remain unconfirmed for 336 hours (14 days) are dropped regardless of fee rate. This expiry period is configurable via the -mempoolexpiry option. Users whose transactions are stuck can use replace-by-fee (RBF) to bump the fee rate: the RBF detector can check whether a transaction signals RBF eligibility.
Cluster Mempool (Bitcoin Core 31.0)
Bitcoin Core 31.0 introduced a cluster-based mempool architecture that replaces the previous ancestor/descendant-based approach. Under the new model, related transactions are grouped into clusters (limited to 64 transactions and 101 kvB of virtual size by default) and ordered by mining-optimal feerate chunks. RBF replacements now require strict feerate diagram improvement rather than simple feerate increases. This change improves mining efficiency and makes eviction decisions more accurate.
Daily and Weekly Patterns
Bitcoin mempool activity follows predictable cycles driven by global business hours and trading activity. Understanding these patterns can save significant fees on non-urgent transactions.
Transaction creation increases at the start of the European business day (roughly 07:00 UTC) and remains elevated through US market hours. The lowest activity window falls between approximately 00:00 and 08:00 UTC, after US West Coast business hours close and before European markets open. Weekends consistently show lower mempool volumes than weekdays, as institutional and exchange batch operations slow down.
Crypto liquidity peaks when both London and New York markets are open simultaneously (13:00 to 16:00 UTC). Large Bitcoin price fluctuations override these patterns: panic selling events or major exchange movements can spike the mempool at any time. The March 2025 market correction, for example, pushed average fees to $82.53 during an 18-hour panic selling period before dropping to $3.27 within 30 hours.
Notable Congestion Events
Historical congestion events illustrate how quickly conditions can change and what fee levels different scenarios produce. The following table summarizes major events from 2023 to 2025.
| Event | Date | Cause | Peak Fee (sat/vB) | Pending Transactions |
|---|---|---|---|---|
| BRC-20 mania | May 2023 | BRC-20 token minting frenzy | 100 - 500+ | ~470,000 |
| Ordinals inscription wave | Dec 2023 | Sustained Ordinals inscriptions | 600 - 674 | ~383,000 |
| Runes launch + halving | Apr 2024 | Runes protocol debut at block 840,000 | 1,000+ | Runes hit 81% of all txns |
| Year-end congestion | Dec 2024 | Exchange settlements, year-end trading | 50 - 150 | ~250,000 |
| Market correction spike | Mar 2025 | Panic selling during price drop | 200+ | Moderate (short-lived) |
The April 2024 Runes launch was particularly notable: block 840,000 earned 37.6 BTC in fees (approximately $2.4 million), and Runes accounted for over 753,000 transactions on April 23 alone. Fees returned to normal within 48 hours. For deeper analysis of how the Bitcoin fee market functions during these events, see our research on Bitcoin fee market dynamics.
Mempool Visualization Tools
Several tools provide different perspectives on mempool data. Each is useful for different purposes.
Mempool.space is the most widely used mempool explorer. It displays real-time fee estimation, projected block contents, a color-coded mempool depth chart, and individual transaction tracking. The projected blocks feature shows how many blocks it would take to clear the current mempool at various fee levels. It is open source and can be self-hosted.
Johoe's Mempool Statistics provides historical mempool data plotted as stacked area charts colored by fee rate bands. Updated every minute from a full node, it is the best tool for analyzing past fee patterns and identifying trends over days or weeks.
TxStreet takes a different approach: it renders an animated street scene where transactions appear as figures boarding a bus (block), with size and fee visually indicated. While less precise for fee estimation, it provides an intuitive overview of relative congestion.
Reading a Mempool Depth Chart
The mempool depth chart (used by mempool.space and Johoe's) is the single most informative visualization for fee estimation. Here is how to read it.
The x-axis represents time, and the y-axis represents total mempool size in vMB. The chart is divided into color-coded horizontal bands, each representing a fee rate range. The lowest band (at the top of the stack) contains the highest-fee transactions: these will be mined first. The uppermost band (at the bottom of the stack) contains the lowest-fee transactions: these will be mined last or evicted if the mempool fills.
When the total stack height is small (under 1 vMB), even the lowest-fee transactions will fit in the next block. When the stack grows to 3 to 4 vMB, there is roughly a 3 to 4 block wait for transactions at the bottom of the stack. When the stack exceeds 10 vMB, lower fee tiers may wait hours or days.
Sharp vertical drops in the chart indicate blocks being mined: each block removes approximately 1 vMB of transactions from the top of the stack. If the chart shows the stack consistently growing faster than blocks are removing it, congestion is worsening and fees will rise.
Bitcoin Core Mempool Configuration
Node operators can tune mempool behavior through several configuration options. The following table lists the most relevant settings as of Bitcoin Core 31.0.
| Option | Default | Description |
|---|---|---|
-maxmempool | 300 MB | Maximum RAM for mempool (minimum 5 MB) |
-mempoolexpiry | 336 hours (14 days) | Time before unconfirmed transactions are dropped |
-minrelaytxfee | 0.1 sat/vB | Static minimum fee for transaction relay (reduced from 1 sat/vB in v29.1) |
-incrementalrelayfee | 0.1 sat/vB | Minimum fee increase for RBF replacements |
-blockmintxfee | 0.001 sat/vB | Minimum fee for block template inclusion |
-blocksonly | false | When enabled, reduces mempool to 5 MB and stops relaying transactions |
You can inspect your node's current mempool state using the getmempoolinfo RPC command, which returns the transaction count, size in bytes, total usage, current mempoolminfee, and minrelaytxfee. The getrawmempool command lists all transaction IDs currently in the mempool, and testmempoolaccept lets you check whether a transaction would be accepted without broadcasting it.
Practical Tips for Fee Optimization
Combining mempool analysis with smart transaction construction can significantly reduce costs.
- Check the mempool depth chart before sending: if the mempool is under 1 vMB, even 1 sat/vB transactions confirm in the next block
- Time non-urgent transactions for weekends or late-night UTC hours when the mempool is typically at its lightest
- Use native SegWit (BIP-84) or Taproot (BIP-86) addresses for the lowest vbyte cost per transaction
- Enable RBF signaling so you can bump fees if the mempool becomes more congested after broadcasting
- Consolidate UTXOs during low-fee periods to reduce input counts (and thus fees) on future transactions
- For applications processing many payments, use batching to combine multiple outputs into a single transaction
For Bitcoin-native payments that bypass mempool congestion entirely, layer-2 solutions like the Spark protocol and the Lightning Network settle transactions off-chain with instant finality and near-zero fees, regardless of mempool conditions. This is particularly relevant for payment applications where waiting for on-chain confirmation is impractical. See our Bitcoin transaction lifecycle guide for a complete overview of how transactions move from creation through mempool to confirmation.
Frequently Asked Questions
How do I check the current Bitcoin mempool size?
The fastest way is to visit mempool.space, which shows the current mempool size in vMB, transaction count, and fee rate distribution in real time. If you run your own node, use the getmempoolinfo RPC command, which returns the exact byte count, transaction count, and current minimum fee thresholds.
Why is the Bitcoin mempool empty when the price is high?
Mempool size correlates with on-chain transaction volume, not price. In mid-2025, the mempool was frequently near-empty despite Bitcoin trading near all-time highs. This is because institutional holders tend to accumulate into cold storage (few on-chain moves), exchanges batch withdrawals more efficiently, and many everyday payments have moved to layer-2 networks like Lightning. The decline of metaprotocol activity (Ordinals, BRC-20, Runes) from their 2023 to 2024 peaks also contributed.
What happens to my transaction if the mempool is full?
If the mempool exceeds 300 MB on a node with default settings, that node evicts the lowest-feerate transactions and raises its dynamic minimum relay fee. If your transaction is below the new threshold, it will be dropped from that node's mempool. However, other nodes with higher -maxmempool limits may still hold it. If your transaction is evicted from all peers, you can rebroadcast it when congestion eases or use RBF to submit a higher-fee replacement.
What is the best time to send a Bitcoin transaction for low fees?
Weekends and late-night UTC hours (00:00 to 08:00 UTC) consistently show the lowest mempool activity. Fees tend to peak during overlapping US/European business hours (13:00 to 16:00 UTC on weekdays). For maximum savings, monitor the mempool depth chart and submit when the total size drops below 1 vMB: at that point, even transactions at 1 sat/vB confirm in the next block.
What is the difference between sat/vB and sat/byte for mempool fees?
Sat/vB (satoshis per virtual byte) accounts for the SegWit witness discount, while sat/byte uses raw transaction bytes. For legacy (non-SegWit) transactions, the two are identical. For SegWit transactions, vbytes are smaller than raw bytes because witness data is counted at a 75% discount. All modern fee estimation uses sat/vB because miners select transactions by weight (virtual size), not raw size. When comparing fee rates across sources, always confirm which unit is being used.
How long does a transaction stay in the mempool?
By default, Bitcoin Core drops unconfirmed transactions after 336 hours (14 days), controlled by the -mempoolexpiry setting. During heavy congestion, low-fee transactions may be evicted much sooner if the mempool exceeds the 300 MB limit. Transactions can also be replaced via RBF at any time before confirmation. There is no guarantee that every node will hold your transaction for the full 14 days: nodes with smaller mempool limits or custom configurations may drop it earlier.
Can I see which block my transaction will be included in?
Mempool.space provides a "projected blocks" feature that estimates which upcoming block will contain your transaction based on its fee rate relative to other pending transactions. This projection is an estimate, not a guarantee: miners may use different selection algorithms, and new higher-fee transactions can push yours to a later block. The projection is most accurate when the mempool is stable and not rapidly growing.
This guide is for informational purposes only and does not constitute financial advice. Mempool data, fee rates, and network conditions change continuously. The congestion events and fee ranges cited reflect historical observations and may not predict future conditions. Always check current mempool data before setting transaction fees.
Build with Spark
Integrate bitcoin, Lightning, and stablecoins into your app with a few lines of code.
Read the docs →
