Every token you have ever held on Solana created a token account in your wallet. Each one holds a rent-exempt deposit of about 0.00204 SOL. When the token balance drops to zero, the account (and the deposit) stays behind. Closing it returns the SOL to you. A wallet that has traded 100 memecoins can have 0.2 SOL locked this way.
CloseAccount instructions (plus any disclosed fee). Never sign anything containing Approve, SetAuthority or token transfers, and never paste a seed phrase into a website.Phantom and Solflare both have a built-in cleanup for unused token accounts; the menu wording changes between versions, so look under settings for "close token accounts" or "unused accounts". This is free apart from the network fee.
spl-token accounts # list balances spl-token close --address <TOKEN_ACCOUNT> spl-token gc # cleans up non-associated (ancillary) accounts
To find empty accounts by RPC, call getTokenAccountsByOwner for both the Token program (Tokenkeg…) and Token-2022 (Tokenz…) and keep rows where tokenAmount.amount == "0". Batch around 10–20 closes per transaction because of the size limit.
Web tools save time when you have dozens of accounts. They charge a fee, so compare: check that the fee is shown inside the transaction preview before you sign.
Can I close an account that still has dust? Not until it is zero: burn or send the dust first.
Can a frozen account be closed? Yes, if its balance is zero (some tools skip them, including ours, to stay conservative).
Who gets the SOL? Whatever destination the owner signs for, normally your own wallet.
Updated 3 Nov 2026. Informational only, not financial or tax advice.