Recover SOL

Recover SOL from failed program deploys and unused lookup tables

Scan any authority for abandoned program buffer accounts and address lookup tables, then close the ones your wallet controls and get the rent back.

How it works

  1. 1

    Scan an authority

    Connect the wallet you deploy with, or paste any deployer address for a read-only lookup. The tool searches the upgradeable loader and the lookup table program for accounts that name it as authority.

  2. 2

    Review what was found

    Each buffer is listed with its address, size and SOL balance; each lookup table with its address count, balance and whether it is active, cooling down or closable.

  3. 3

    Close and reclaim

    Select accounts and sign. The full balance of every closed account returns to your wallet, with the 5% fee taken in the same transaction. Up to 24 closes fit in one transaction.

  4. 4

    Deactivate tables first

    An active lookup table has to be deactivated and then wait about 513 slots, roughly four minutes, before it can be closed. Come back and close it once it shows as closable.

Why a failed solana program deploy leaves SOL behind

Deploying a program is not one transaction. The CLI first creates a buffer account owned by the BPF Upgradeable Loader, sized for the whole program binary, and funds it with the rent-exempt minimum for that size — about 0.00000696 SOL per byte, so a 300 KB program locks roughly 2.1 SOL and a 1 MB program about 7.3 SOL. It then writes the binary into the buffer in hundreds of small transactions, and only at the end copies the buffer into the program's data account and closes it.

If anything interrupts that sequence — dropped write transactions during congestion, an expired blockhash, a closed terminal, running out of SOL for the final step — the buffer stays on chain with its full deposit. Each retry that does not reuse the buffer creates another one. The CLI prints a seed phrase to resume with, which is easy to lose, and nothing in a wallet or on most explorers shows that these accounts exist. It is common for an active deployer key to have several SOL sitting in forgotten buffers.

How to find and close Solana program buffer accounts

A buffer account starts with a 4-byte type tag of 1, followed by an optional authority: one byte that says whether an authority is set and then its 32-byte public key. This tool searches the loader's accounts for exactly that 37-byte prefix with your address in it, which returns every buffer you control in a single RPC call. The size shown is derived from the account's balance, since a buffer holds exactly the rent-exempt minimum for its length.

Closing uses the loader's Close instruction with three accounts: the buffer, the recipient of the lamports, and the buffer authority as signer. The loader zeroes the account and moves its entire balance to the recipient, which here is always your connected wallet. Closing a buffer has no effect on any deployed program: a program runs from its program data account, not from a buffer. The only thing you lose is the ability to resume that specific interrupted deploy, so do not close a buffer for an upload you still intend to finish.

This tool versus solana program close --buffers

The Solana CLI can do the same thing for free: solana program show --buffers lists buffers for the configured keypair, and solana program close --buffers closes them all and returns the SOL. If you have the CLI installed and the deployer keypair file at hand, that is the cheapest route and we recommend it.

The closer is for the other cases: you deployed from a browser-based IDE or a wallet-adapter flow, you are on a machine without the toolchain, the authority is a hardware wallet, or you just want to check several team addresses quickly without touching key files. It can only close buffers whose authority is the wallet you connect. If you deployed with a CLI keypair, the read-only lookup still shows what is recoverable; to close from the browser you would import that key into a wallet, which you should weigh against simply running the CLI command.

Close an address lookup table and reclaim its rent

Address lookup tables let versioned transactions reference accounts by a one-byte index instead of a 32-byte key. A table has 56 bytes of metadata plus 32 bytes per stored address, so a full table of 256 addresses holds about 0.058 SOL in rent and a small one about 0.0013 SOL. Bots, aggregator integrations and test scripts often create tables by the dozen and never clean them up. The tool finds every table whose authority field, at byte offset 22, is your address.

Closing is a two-step process enforced by the program. Deactivate marks the table with the current slot; from that moment no new transaction can use it. The table can be closed only once that slot has aged out of the SlotHashes sysvar, which keeps the last 512 slots — roughly four minutes. The tool reads that sysvar to tell you whether a table is closable now or how long is left. Deactivation cannot be undone, so any program, bot or frontend still referencing the table will start failing at once. Tables whose authority has been removed are frozen and can never be closed.

Questions & answers

How do I recover SOL from a failed Solana program deploy?

The SOL is in a buffer account created by the deploy. Connect the wallet that was the deploy authority, let the tool scan for buffers, select them and sign the close transaction — the full balance of each buffer returns to your wallet. With the CLI and the deployer keypair you can do the same using solana program close --buffers.

How much does it cost to close program buffer accounts?

The fee is 5% of the SOL recovered, paid in the same transaction as the close, plus the normal network fee of 0.000005 SOL per transaction. Recovering 4 SOL costs 0.2 SOL and you receive 3.8 SOL. Scanning and read-only lookups are free, as is deactivating lookup tables. The Solana CLI alternative is free if you have it set up.

Is it safe to close buffer accounts? Will it break my deployed program?

Closing a buffer does not touch deployed programs. A live program executes from its program data account; buffers are only staging areas for uploads. The one thing you give up is resuming that particular interrupted deploy. The tool is non-custodial: the close instruction is built in your browser, signed in your wallet, and the recipient is always your own address.

Why does the tool find no buffers for my wallet?

Buffers are tied to the authority used at deploy time, which is normally the CLI's keypair file (often ~/.config/solana/id.json), not your browser wallet. Run solana address to get that key's address and paste it into the lookup field. If buffers appear there, close them with the CLI or import that key into a wallet.

Can I undo deactivating an address lookup table?

No. Deactivation is permanent; the only next step is closing the table after the cool-down. Transactions that reference a deactivated table fail, so confirm that no program, bot or frontend still uses it before you deactivate. If you need the same addresses again later, you have to create and populate a new table at a new address.

Why do I have to wait before closing a lookup table?

The lookup table program only allows a close once the deactivation slot is no longer in the SlotHashes sysvar, which covers the most recent 512 slots — about four minutes. This guarantees that no transaction in flight can still resolve addresses through the table. The tool shows the remaining time and marks the table closable when the wait is over.

How much SOL is locked in a buffer or lookup table?

A buffer holds the rent-exempt minimum for the program's size: about 0.7 SOL per 100 KB, so typical Anchor programs lock 1.5 to 5 SOL per abandoned buffer and large programs more than 10 SOL. Lookup tables are much smaller, between about 0.0013 SOL for a nearly empty table and 0.058 SOL for a full one.

Is there a fee?

Closing buffers and lookup tables costs 5% of the SOL recovered, taken in the same transaction; scanning any address and deactivating lookup tables are free.

Built and maintained by Jacob, a Solana trader who uses these tools daily. Content reviewed . Every transaction is built in your browser and signed in your own wallet — see the terms for fees.