Key takeaways
- Every Solana wallet holds its own token accounts, so reclaiming rent across many wallets means closing each wallet's empty accounts separately; each one returns 0.00148844 SOL, or 0.00203928 SOL if opened before Solana lowered rent.
- SOLTidy's Balance Checker reads up to 1,000 Solana addresses per run for free, showing SOL, USD and up to five token balances, but it does not show the rent held in token accounts.
- SOLTidy's wallet cleanup scans one connected wallet at a time and returns closed-account rent to that same wallet, so consolidating SOL into a main wallet is a separate send after each cleanup.
- A plain Solana wallet can be emptied to exactly zero lamports, which removes the account and leaves no rent behind; a transfer that would leave between 1 and 650,239 lamports fails with an insufficient funds for rent error.
- Sweeping SOL from many wallets into one main wallet links all of them publicly on chain, because every transfer shows its sender and recipient on explorers such as Solscan.
The short answer
To clean up many Solana wallets, list every address you control, check their balances in bulk, then connect each wallet in turn and close its empty token accounts, which returns 0.00148844 SOL per account, or 0.00203928 SOL for accounts opened before Solana lowered rent. The rent always comes back to the wallet that owned the account, so the last step is sending each wallet's full balance to one main wallet. A plain wallet can be emptied to exactly zero, so nothing stays behind.
Why is cleaning many wallets different from cleaning one?
It is different because rent lives per wallet. A token account is an account that holds one token for one owner, and every wallet that ever bought or received a token has its own. Ten wallets that each traded the same twenty coins hold two hundred token accounts, not twenty. Each wallet has to sign for its own closes, and the SOL each close returns lands in that wallet, not in your main one.
People who end up with dozens of wallets usually fall into a few groups:
- Airdrop farmers who interacted with protocols from many addresses.
- Traders with burner wallets for new launches, mints and claims.
- Bot operators, whose sniper or market-making bots each sign with their own keypair. Telegram and web trading bots are their own case, covered in reclaiming SOL from trading bot wallets.
- Long-time users with wallets left in old apps, browser profiles and phones.
- Teams that funded wallets for payroll, testing or distribution.
The per-account amounts and what reduces them are in how much SOL you can recover from token accounts. This post is about doing that work across many addresses without losing track.
How do you find all your Solana wallets?
Start from your seed phrases, because one phrase can hold many wallets. A seed phrase is a 12 or 24 word backup from which a wallet app derives accounts in order, and a derivation path is the rule that turns the phrase plus an account number into a specific keypair. The standard Solana path is m/44'/501'/i'/0', where i is the account number.
How each wallet app shows them, as of November 2026:
| Wallet | Multiple accounts | What to know when importing an old phrase |
|---|---|---|
| Phantom | Add Account, Create New Account derives the next account from your phrase | Phantom restores accounts with previous onchain activity; choose View Accounts on the Import Accounts screen to see and pick others. It checks the m/44'/501'/i' and deprecated m/501'/i'/0/0 paths only if it finds activity on them. (Phantom help, derivation paths) |
| Solflare | Add wallet creates more wallets under the same phrase | You choose one derivation path per imported phrase, and later wallets use it too. A phrase on the legacy path supports only one address. (Solflare help) |
| Backpack | Wallet Multi-Accounts groups wallets into named accounts; add a wallet by creating one or importing a phrase or private key | Backpack searches for accounts associated with a phrase on import. (Backpack support) |
A practical inventory looks like this:
- Write down every seed phrase and private key you still have, including ones from old apps and bots. Keys imported individually are not derived from any phrase, so Phantom notes they will not reappear when you restore a phrase.
- Import each phrase into one wallet app and open the account picker, not just the default list, so accounts without recent activity show up too.
- If balances look missing, check the derivation path. An old Sollet-era wallet may sit on a different path. Solflare's derivation path guide explains the options.
- Copy every address into one list, one per line, with a label in a spreadsheet next to it. You will paste this list into the balance checker next.
The Solflare cleanup guide, Phantom cleanup guide and Backpack cleanup guide cover each app's own menus for hiding spam and burning NFTs.
How do you check the balances of many wallets at once?
Paste the list into a bulk balance checker, which reads public data and needs no wallet connection. I built SOLTidy's Balance Checker for exactly this, and it is free. Here is what it does, from its code:
- Accepts up to 1,000 addresses per run, one per line or as CSV; a header row is skipped, duplicates are merged and invalid lines are listed by line number.
- Reads accounts with
getMultipleAccountsInfoin batches of 100, so 1,000 addresses take ten requests. - Shows each address's SOL balance, its USD value, and whether it is a wallet, a program or a program-owned account. An address that has never received SOL shows as not created.
- Adds up to five token columns if you enter mint addresses, reading each wallet's associated token account for that mint.
- Exports the table as CSV and shows totals for SOL and each token.
One limit matters here: the SOL figure is the wallet's own balance, and it does not include the rent locked in that wallet's token accounts. A wallet showing 0.002 SOL may have another 0.1 SOL sitting in fifty empty token accounts. The checker tells you which wallets are funded and how much SOL you can sweep; it does not tell you how much rent there is to reclaim.
How do you estimate how much rent each wallet holds?
Count each wallet's token accounts and multiply. A rent-exempt minimum is the SOL an account must hold to exist, and for a 165-byte SPL token account it is 0.00148844 SOL today, or 0.00203928 SOL for accounts opened before the rent reduction. I read the current values from the network for this post:
| Account | Size | Rent today (lamports) | SOL |
|---|---|---|---|
| Plain wallet (system account) | 0 bytes | 650,240 | 0.00065024 |
| SPL token account | 165 bytes | 1,488,440 | 0.00148844 |
| SPL token account opened at the old rate | 165 bytes | 2,039,280 | 0.00203928 |
Those figures come from getMinimumBalanceForRentExemption on mainnet, run on November 4, 2026. Older and newer accounts are mixed in most wallets, and the rent-exempt minimum by account type covers stake, NFT and other accounts.
Two ways to get a count per wallet:
- Read-only, from an address.
spl-token accounts --owner <ADDRESS>lists another address's token accounts without any key, and an explorer such as Solscan shows the same list. That is fine for five wallets and tedious for fifty. - Connect and scan. The free scan on the wallet cleanup page reads the connected wallet's token accounts, NFTs, stake accounts, pump.fun rewards and token approvals and shows what each source would return after fees. Scanning signs nothing.
As a sense of scale, ten burner wallets with twenty empty token accounts each hold 200 x 0.00148844 = 0.2977 SOL at the new rate, or up to 0.4079 SOL if all were opened at the old rate. Across 67 real SOLTidy cleanups the median wallet recovered only 0.00277 SOL, so check before assuming every wallet is worth the effort; the data is in how much SOL is stuck in a wallet.
How do you clean each wallet?
Clean them one at a time, because SOLTidy works on the one wallet that is connected. The home cleanup scans the connected address and starts a new scan whenever the connected address changes, and the closing instructions send each account's rent back to its owner, the connected wallet. The Token Account Closer behaves the same way. Both charge 5% of the SOL they recover, and nothing for scanning.
For each wallet on your list:
- Make sure it has a little SOL. The network fee is taken before any instruction runs, so a wallet at zero cannot close anything. About 0.00001 SOL is enough to start; after the first transaction the recovered rent pays for the rest. If a wallet is empty, send it a small amount from your main wallet, or with the multisender if many need it.
- Switch to the wallet in your wallet app. In Phantom, Solflare or Backpack, select that account from the account menu. If the page still shows the previous address, disconnect and connect again.
- Run the scan and review it. Closing empty accounts and withdrawing inactive stake are the safe defaults; burning NFTs and selling dust are permanent, so they are never pre-selected. Is it safe to close Solana token accounts explains what closing does and does not touch.
- Approve the transactions. SOLTidy currently asks for one wallet approval per transaction.
- Note the result in your spreadsheet next to the address, then move to the next wallet.
Free methods are good enough for some wallets. If a wallet has two or three empty accounts, Solflare can close a zero-balance token account from its own menu, and the CLI does it for network fees only. A bulk tool saves time when there are dozens of accounts per wallet.
How do you consolidate the SOL into one main wallet?
Send each wallet's entire balance to your main wallet after its cleanup. A system account is a plain wallet owned by Solana's System Program, and it can be emptied to exactly zero lamports, at which point the account stops existing and no rent stays behind. Its own 0.00065024 SOL rent-exempt minimum is not locked away; it is part of the balance you send.
The rule to remember is that a wallet must end a transaction either at zero or at or above 650,240 lamports. A send that would leave something in between fails with "Transaction results in an account with insufficient funds for rent". So either send the full balance, which most wallets' Max button does after reserving the network fee, or leave at least 0.00065024 SOL behind.
Order matters:
- Close accounts first, sweep last. If you sweep first, the wallet cannot pay the 5,000-lamport fee to close anything, and its rent stays locked.
- Keep wallets you will use again funded. A burner you will reuse next week does not need to be emptied.
- Check the destination address character by character, or paste it from a saved contact. Transfers are final.
Each sweep costs one 5,000-lamport network fee per wallet, so consolidating 50 wallets costs 0.00025 SOL in fees.
How do you fund many wallets again afterwards?
Use a multisender, which sends SOL or a token from one wallet to many addresses in batched transactions. SOLTidy's Multisender fits 20 SOL recipients or 9 token recipients per transaction, charges 0.0005 SOL per recipient on top of the 5,000-lamport network fee, and builds every transfer in your browser for your own wallet to sign. A brand-new address must receive at least 0.00065024 SOL or the transfer fails, and the tool flags those lines before you sign.
If you need fresh burner wallets rather than old ones, the Wallet Generator creates up to 1,000 keypairs, or one seed phrase with accounts derived at m/44'/501'/i'/0', offline in your browser. Its addresses-only TXT export pastes straight into the multisender or the balance checker. For larger token distributions, how to airdrop tokens on Solana covers rent and costs per recipient.
Can you script the cleanup with the CLI?
Yes, if every wallet is a keypair file on disk, which is common for bot and developer wallets. The spl-token gc command closes a keypair's empty token accounts, and solana transfer ... ALL sweeps its balance. A loop over a folder of keypairs, with MAIN set to your main address:
for KEY in wallets/*.json; do
spl-token gc --owner "$KEY" --fee-payer "$KEY" --close-empty-associated-accounts
spl-token gc --program-2022 --owner "$KEY" --fee-payer "$KEY" --close-empty-associated-accounts
solana transfer "$MAIN" ALL --from "$KEY" --fee-payer "$KEY"
done
The flags come from the current SPL Token CLI source and the Agave CLI source: --owner and the global --fee-payer take a keypair, --program-2022 switches gc to Token-2022, and solana transfer accepts the keyword ALL. Add --allow-unfunded-recipient only if the main address has never received SOL.
Three caveats. gc sends one transaction per account and does not burn dust, so accounts with leftover tokens stay open. A Token-2022 account holding withheld transfer fees fails inside gc and needs spl-token close --address. And the loop only works for keys you are willing to keep in plain files. The full command reference, including burning and single-account closes, is in closing Solana token accounts with the CLI.
What does consolidating do to your privacy?
Consolidating links your wallets publicly. Every Solana transfer records its sender and recipient, so after a sweep anyone who opens your main address on Solscan or SolanaFM sees every wallet that sent to it, and the same holds when you fund wallets from one source with a multisender. Analytics tools cluster wallets this way, exchanges read it when assessing deposits, and projects use funding and sweep patterns when deciding airdrop eligibility.
That is not a reason to leave SOL stranded, but it is a reason to decide on purpose. If some wallets are meant to stay unconnected, for example a public creator wallet and a personal wallet, do not sweep them into the same address. Reclaiming rent itself reveals nothing new, because the rent returns to the wallet that already owned the accounts.
A per-wallet checklist
Copy this into the spreadsheet with your address list and fill one row per wallet:
| Step | What to check | Free option | SOLTidy option |
|---|---|---|---|
| 1. Inventory | Address, which phrase or key, which app | Wallet account picker | Balance Checker for the whole list |
| 2. Balance | SOL and key token balances | Explorer | Balance Checker, up to 1,000 addresses |
| 3. Fee money | At least about 0.00001 SOL to start | Send from main wallet | Multisender for many wallets |
| 4. Scan | Empty token accounts, stake, NFTs, approvals | spl-token accounts --owner | Wallet cleanup scan |
| 5. Close | Empty accounts closed, stake withdrawn | Wallet menu or spl-token gc | Token Account Closer, 5% of recovered SOL |
| 6. Sweep | Full balance sent, or at least 0.00065024 SOL left | Wallet send, Max | Wallet send, Max |
| 7. Record | Signatures and amounts noted | Explorer | Explorer |
Bottom line
Cleaning up many Solana wallets is the single-wallet cleanup repeated with good bookkeeping: find every address, including accounts hidden behind other derivation paths, check balances in bulk, then for each wallet close its empty token accounts while it still has fee money and send the whole balance to your main wallet, which can go to exactly zero without losing any rent. Remember that each sweep links that wallet to your main address on chain. Start with the free Balance Checker for the whole list, then run the wallet cleanup scan on each wallet, and use the CLI loop if your wallets are keypair files.
Questions & answers
Can I close token accounts in several Solana wallets at once?
Not in one transaction from a browser wallet, because every token account close must be signed by that account's owner, and a wallet app signs for the one account that is connected. In practice you connect each wallet in turn and close its accounts. The spl-token CLI can loop over many keypair files in a script, which is the only way to do it unattended, but it needs every key on disk.
How do I check the SOL balance of many Solana wallets at once?
Paste the addresses into a bulk balance checker. SOLTidy's free Balance Checker accepts up to 1,000 addresses per run, one per line or as CSV, reads them in batches of 100 and shows SOL, USD, up to five token balances, the account type and totals, with a CSV export. It needs no wallet connection, because balances are public.
Why don't all my Phantom accounts show up after importing my seed phrase?
Phantom's help center says it restores accounts with previous onchain activity and lets you pick others with View Accounts on the Import Accounts screen. It also checks alternate derivation paths, such as the deprecated m/501' path, only when it finds activity on them. Accounts you imported by private key are not derived from the phrase, so they have to be imported again one by one.
Do I lose the rent if I empty a Solana wallet completely?
No. A plain wallet's rent-exempt minimum, 0.00065024 SOL at the current rate, is part of its own balance. If you send the entire balance, the account drops to zero lamports and stops existing, and all of that SOL arrives at the recipient. What you would leave behind is rent inside token accounts, which is why you close those first.
What order should I clean up multiple wallets in?
Close empty token accounts and withdraw old stake first, while each wallet still has a little SOL for network fees, because the recovered rent lands in that same wallet. Then send each wallet's full SOL balance to your main wallet. Sweeping first would leave the wallets unable to pay the 5,000-lamport fee needed to close anything.
Does consolidating wallets affect my privacy?
Yes. A transfer from each wallet to one main address is public, so anyone looking at that address on an explorer can see every wallet that sent to it. Exchanges, analytics firms and airdrop eligibility filters all read these links. If you want wallets to stay unconnected, do not sweep them into a shared address.