Sniper bot wallet cleanup: how memecoin operators reclaim 2-5 SOL from their fleet

Published 2026-09-28 · 5 min read

Sniper bot wallet cleanup: how memecoin operators reclaim 2-5 SOL from their fleet

If you run a Solana sniper bot — pump.fun, LaunchLab, whatever — you probably operate 5-20 sub-wallets to distribute risk, avoid whale-detection, and split MEV opportunities. Each of those wallets accumulates its own dust pile of empty ATAs, and closing them one wallet at a time is 40+ minutes of clicking.

Here's the workflow to reclaim everything across your fleet in one session.

The scale problem

A typical sniper bot operation:

Rent locked per wallet: 1.0 – 3.0 SOL Fleet total: 8-24 SOL across 8 wallets

At $200/SOL that's $1600-$4800 sitting in dead accounts across a fleet.

Why single-wallet tools fail here

Traditional tools (jup.ag/close, sol-incinerator, spl-token CLI) work one wallet at a time. For a bot fleet:

The multi-wallet flow

SolDuster supports scanning up to 5 wallets in one flow:

  1. Connect wallet #1 → auto-scans + shows recoverable
  2. Click "Add another wallet" → connect wallet #2
  3. Repeat for wallets 3, 4, 5
  4. See aggregated total across the 5
  5. Click "Recover" — each wallet signs its own batched closeAccount transactions in one prompt (via signAllTransactions)

For a fleet of 20 wallets, you run 4 sessions of 5 wallets each. Total time: ~10 minutes across all 20.

Automating full-fleet cleanup

For truly automated fleet cleanup, use the Solana CLI approach:

#!/bin/bash
# fleet_cleanup.sh - run this monthly

WALLETS=(
  "keypair-1.json"
  "keypair-2.json"
  "keypair-3.json"
  # ... etc
)

for KEYFILE in "${WALLETS[@]}"; do
  WALLET=$(solana-keygen pubkey $KEYFILE)
  echo "── Cleaning $WALLET ──"

  # Get empty ATAs
  EMPTY_ATAS=$(spl-token accounts --owner $WALLET --output json \
    | jq -r '.accounts[] | select(.tokenAmount.uiAmount == 0) | .address')

  COUNT=$(echo "$EMPTY_ATAS" | wc -l)
  echo "  Found $COUNT empty ATAs"

  # Close each (or batch — see spl-token 4.x multi-close)
  for ATA in $EMPTY_ATAS; do
    spl-token close-account \
      --address $ATA \
      --recipient $WALLET \
      --owner $KEYFILE \
      --fee-payer $KEYFILE
  done
done

Run this monthly via cron:

0 0 1 * * /home/user/bin/fleet_cleanup.sh > /var/log/sol-cleanup.log 2>&1

What about wallets you can't sign for?

If you have wallets whose keys you don't want to expose to a browser or hot server, the CLI approach with local keypair.json files (or hardware wallet USB) is safer than any browser tool.

For that setup, SolDuster is a nice quick-check ("how much am I sitting on across the fleet") but the actual recovery is best done via CLI against cold storage.

Real-world profiles

Anonymized samples from users who scanned bot fleets on SolDuster:

Operator A (memecoin sniper, 3 wallets) - Fleet: 3 wallets, 890 empty ATAs total - Recovered: 1.82 SOL (~$364) - Time: 4 minutes

Operator B (MEV bot, 8 wallets) - Fleet: 8 wallets, 2318 empty ATAs total - Recovered: 4.71 SOL (~$942) - Time: 12 minutes across 2 sessions

Operator C (LaunchLab farmer, 12 wallets) - Fleet: 12 wallets, 3120 empty ATAs total - Recovered: 6.35 SOL (~$1270) - Time: 18 minutes across 3 sessions

Compound recovery strategy

For serious ops, treat rent recovery as monthly maintenance:

  1. Week 1 of each month: full fleet scan + close
  2. Log recovered SOL as a line item in your PnL
  3. Rebate to strategy fund: reclaimed rent + interest earned = free ammo for next month's sniping

A fleet of 10 active wallets recovering 3 SOL/month = 36 SOL/year of "free" capital that would otherwise be dust-locked.


Bot operator? Discuss workflows and share numbers on X at @SoldusterHQ.


Scan your wallet on solduster.com →