Skip to main content
Pruning allows Bitcoin Core to delete old block data after validation, significantly reducing disk space requirements while maintaining a fully validating node.

What is Pruning?

A pruned node:
  • Downloads and validates the entire blockchain
  • Maintains the full UTXO set for validation
  • Enforces all consensus rules
  • Cannot serve historical blocks to other nodes
  • Cannot rescan the blockchain for old wallet transactions
Pruned nodes are still fully validating nodes. They verify every transaction and block but don’t store all historical data.

Storage Requirements

Full Node vs Pruned Node

Node TypeDisk Space Required
Full node~600 GB (growing ~50-100 GB/year)
Pruned node (550 MB)~10 GB
Pruned node (5000 MB)~15 GB
Pruned node (10000 MB)~20 GB
The actual disk usage will be slightly larger than your prune target due to the UTXO database, chainstate, and other necessary data.

Enabling Pruning

Manual Pruning

Enable manual pruning without automatic deletion:
bitcoind -prune=1
With manual pruning:
  • Blocks are not automatically deleted
  • Use the pruneblockchain RPC to delete specific blocks
  • Gives you control over when and what to prune
# Prune blocks up to height 800000
bitcoin-cli pruneblockchain 800000

# Prune automatically to stay under target
bitcoin-cli pruneblockchain

Automatic Pruning

Set a target disk usage in MiB:
# Keep approximately 10 GB of blocks
bitcoind -prune=10000

# Minimum: 550 MB
bitcoind -prune=550
The minimum prune setting is 550 MiB. Bitcoin Core needs to retain at least this much block data to function properly.

In bitcoin.conf

To make pruning permanent, add to your bitcoin.conf file:
# Automatic pruning with ~10 GB target
prune=10000
1

Stop Bitcoin Core

bitcoin-cli stop
2

Edit bitcoin.conf

Add the prune setting to your configuration file:
echo "prune=10000" >> ~/.bitcoin/bitcoin.conf
3

Restart Bitcoin Core

bitcoind -daemon

Enabling Pruning on an Existing Node

Important: Enabling pruning requires re-downloading and re-validating the entire blockchain.If you already have a full node and want to enable pruning:
  1. Stop Bitcoin Core
  2. Enable pruning in configuration
  3. Bitcoin Core will automatically prune during the next startup
Disabling pruning also requires re-downloading the entire blockchain to restore historical blocks.
There is one exception: if your existing node is fully synced, you can enable pruning and it will start pruning old blocks without re-downloading:
bitcoin-cli stop
# Add prune=10000 to bitcoin.conf
bitcoind -daemon
Bitcoin Core will prune old blocks to reach your target size.

How Pruning Works

During Initial Block Download

1

Download blocks

Bitcoin Core downloads blocks from peers normally.
2

Validate blocks

Each block is fully validated according to consensus rules.
3

Update UTXO set

The UTXO database is updated with new unspent outputs.
4

Prune old blocks

Once validation is complete and the prune target is exceeded, old blocks are deleted.Bitcoin Core retains recent blocks for serving to peers and reorg protection.

After IBD

Once synchronized:
  • New blocks are validated and added normally
  • Old blocks are automatically pruned to maintain the target size
  • The most recent blocks are always retained (at least one week’s worth)
Pruned nodes keep the most recent blocks to help the network and protect against chain reorganizations.

Limitations of Pruned Nodes

Cannot Serve Historical Blocks

Pruned nodes cannot:
  • Help new nodes with initial block download for old blocks
  • Serve historical blocks to other peers
  • Participate fully in the archival node network
They can still:
  • Serve recent blocks to peers
  • Relay transactions and new blocks
  • Fully validate the blockchain

Incompatible with Transaction Index

Pruning is incompatible with -txindex:
# This will fail
bitcoind -prune=1000 -txindex
You cannot enable transaction indexing (-txindex) on a pruned node. The transaction index requires access to all historical blocks.

Limited Wallet Rescanning

Pruned nodes can only rescan the blockchain from the oldest retained block:
# This may fail if blocks are pruned
bitcoin-cli rescanblockchain 0
{
  "error": "Cannot rescan beyond pruned blocks. Use -reindex"
}
To rescan from genesis, you would need to re-download the blockchain.

Pruning with Assumeutxo

When using assumeutxo with a pruned node:
  • The minimum -prune setting is 550 MiB normally
  • With assumeutxo, at least 1100 MiB is used temporarily
  • Two chainstates exist during background sync
When using assumeutxo with -prune, the prune budget may be exceeded temporarily. Ensure you have extra disk space available during the background sync.

Pruning During IBD

Bitcoin Core prunes more aggressively during initial block download:
  • Prunes 10% extra to avoid pruning again immediately
  • Reduces I/O operations during sync
  • Helps IBD complete faster on pruned nodes
# Start a fresh pruned node
bitcoind -prune=10000 -dbcache=4096
Combine pruning with a large -dbcache for faster IBD on systems with limited disk space but adequate RAM.

Checking Prune Status

Verify pruning is enabled:
bitcoin-cli getblockchaininfo
{
  "pruned": true,
  "pruneheight": 780000,
  "automatic_pruning": true,
  "prune_target_size": 10485760000
}
  • pruned: Whether pruning is enabled
  • pruneheight: Oldest block still available
  • automatic_pruning: If automatic pruning is active
  • prune_target_size: Target size in bytes

Best Practices

Choosing a Prune Target

  • Minimum (550 MB): For extremely constrained systems
  • 1-5 GB: Reasonable for most VPS or embedded systems
  • 10+ GB: Allows serving more blocks to peers
  • No pruning: If you have the disk space, run a full node

Considerations

  1. Wallet usage: If you frequently import old addresses or keys, consider a larger target or full node
  2. Network contribution: Larger prune targets help the network more
  3. Available space: Always leave extra space beyond your target
  4. Future growth: Blockchain grows ~50-100 GB per year
If unsure, start with -prune=10000 (10 GB). You can always adjust later, though it requires re-syncing.

Converting Between Pruned and Full

Full Node → Pruned Node

bitcoin-cli stop
# Add prune=10000 to bitcoin.conf  
bitcoind -daemon
Bitcoin Core will prune existing blocks to reach the target.

Pruned Node → Full Node

Reverting from pruned to full node requires re-downloading the entire blockchain.
bitcoin-cli stop
# Remove or comment out prune= from bitcoin.conf
bitcoind -reindex
The -reindex will not restore pruned blocks. You need to re-download:
# Delete blockchain data (keep wallet!)
rm -rf ~/.bitcoin/blocks ~/.bitcoin/chainstate

# Restart without pruning
bitcoind -daemon

Next Steps

Performance Optimization

Further optimize your pruned node

Reduce Traffic

Minimize bandwidth usage

Initial Block Download

Optimize IBD for pruned nodes

Configuration

Learn about other configuration options