> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Node Snapshots

> Download and restore Base node snapshots to significantly reduce initial sync time for both archive and pruned nodes.

Using a snapshot significantly reduces the initial time required to sync a Base node. Snapshots are updated regularly.

If you're a prospective or current Base node operator, you can restore from a snapshot to speed up your initial sync. Follow the steps below carefully.

## Restoring from Snapshot

These steps assume you are in the cloned `node` directory (the one containing `docker-compose.yml`).

1. **Install aria2c**: Snapshot downloads require `aria2c`, a resumable downloader that handles the periodic connection interruptions imposed by Cloudflare. If you don't have it installed:

   <CodeGroup>
     ```bash macOS theme={null}
     brew install aria2
     ```

     ```bash Ubuntu / Debian theme={null}
     sudo apt-get install aria2
     ```
   </CodeGroup>

2. **Prepare Data Directory**:
   * **Before running Docker for the first time**, create the data directory on your host machine that will be mapped into the Docker container. This directory must match the `volumes` mapping in the `docker-compose.yml` file.
     ```bash theme={null}
     mkdir ./reth-data
     ```
   * If you have previously run the node and have an existing data directory, **stop the node** (`docker compose down`), remove the *contents* of the existing directory (e.g. `rm -rf ./reth-data/*`), and proceed.

3. **Download Snapshot**: Choose the appropriate snapshot for your network and client from the table below. Download it into the `node` directory.

   | Network | Snapshot Type         | Download Command                                                                                                                            |
   | ------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
   | Testnet | Archive (recommended) | `aria2c -c -x 16 -s 16 "https://sepolia-reth-archive-snapshots.base.org/$(curl -s https://sepolia-reth-archive-snapshots.base.org/latest)"` |
   | Testnet | Pruned                | `aria2c -c -x 16 -s 16 "https://sepolia-reth-pruned-snapshots.base.org/$(curl -s https://sepolia-reth-pruned-snapshots.base.org/latest)"`   |
   | Mainnet | Archive (recommended) | `aria2c -c -x 16 -s 16 "https://mainnet-reth-archive-snapshots.base.org/$(curl -s https://mainnet-reth-archive-snapshots.base.org/latest)"` |
   | Mainnet | Pruned                | `aria2c -c -x 16 -s 16 "https://mainnet-reth-pruned-snapshots.base.org/$(curl -s https://mainnet-reth-pruned-snapshots.base.org/latest)"`   |

   <Note>
     Ensure you have enough free disk space to download the snapshot archive (`.tar.gz` / `.tar.zst` file) *and* extract its contents. The extracted data will be significantly larger than the archive.
   </Note>

4. **Extract Snapshot**: Untar the downloaded snapshot archive. Replace `snapshot-filename` with the actual downloaded filename:

   ```bash theme={null}
   tar -xzvf <snapshot-filename.tar.gz>

   # For .tar.zst 
   tar -I zstd -xvf <snapshot-filename.tar.zst>
   ```

5. **Move Data**: The extraction process will likely create a `reth` directory.

   * Move the *contents* of that directory into the data directory you created in Step 1:

     ```bash theme={null}
     mv ./reth/* ./reth-data/
     rm -rf ./reth    # Clean up empty extracted folder
     ```

   * The goal is to have the chain data directories (e.g., `chaindata`, `nodes`, `segments`, etc.) directly inside `./reth-data`, not in a nested subfolder.

6. **Start the Node**: Now that the snapshot data is in place, return the root of your Base node folder and start the node:

   ```bash theme={null}
   cd ..
   docker compose up --build
   ```

Your node should begin syncing from the last block in the snapshot.

7. **Verify and Clean Up**: Monitor the node logs (`docker compose logs -f <service_name>`) or use the [sync monitoring](/base-chain/node-operators/run-a-base-node#syncing) command to ensure the node starts syncing from the snapshot's block height. Once confirmed, you can safely delete the downloaded snapshot archive (`.tar.gz` file) to free up disk space.

## Proofs Snapshots

If you are running the [historical proofs ExEx](/base-chain/node-operators/run-a-base-node#enable-historical-proofs-rpcs), snapshots of the proofs database are available to skip the 24-48 hour backfill.

| Network | Download Command                                                                                                                          |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Testnet | `aria2c -c -x 16 -s 16 "https://sepolia-reth-proofs-snapshots.base.org/$(curl -s https://sepolia-reth-proofs-snapshots.base.org/latest)"` |
| Mainnet | `aria2c -c -x 16 -s 16 "https://mainnet-reth-proofs-snapshots.base.org/$(curl -s https://mainnet-reth-proofs-snapshots.base.org/latest)"` |

The restore process is the same as above — follow the [Restoring from Snapshot](#restoring-from-snapshot) steps using this archive instead.

## FAQ

<AccordionGroup>
  <Accordion title="Why does Base provide a Pruned snapshot instead of a Full node snapshot?">
    In Reth, a "full" node is just a pruned node with a specific preset rather than a distinct node type. Reth's `--full` preset retains the last **10,064 blocks** (\~1.4 days on Ethereum; \~5-6 hours on Base due to faster block times).

    Base's *pruned* snapshot uses a 31-day rolling retention window instead. If a smaller storage footprint is preferred, you can override `reth.toml` to match the 10,064-block preset.
  </Accordion>
</AccordionGroup>
