Stranded Lamports

A field manual for SOL that gets stuck on Solana token accounts and mints. What it is, why it happens, and who (if anyone) can pull it out.

TL;DR

There are two categories of recoverable SOL on Solana that get confused in block explorers:

  1. Rent on empty token accounts. Always recoverable by you. Use CloseAccount. This is what "close token accounts" tools do.
  2. Excess lamports above the rent floor. Sometimes recoverable. Use WithdrawExcessLamports (Token-2022 only). This is what stranded-lamports tooling surfaces.

The first is the high-value path for most users. The second is mostly a niche surface, and on graduated pump.fun mints, it's effectively unrecoverable.

1. Why SOL gets stuck in the first place

Every account on Solana pays rent. Each account must hold a rent-exempt minimum, enough lamports to cover its storage in perpetuity. The exact figure depends on account size:

  • Standard SPL token account, roughly 0.00203 SOL.
  • Base mint, roughly 0.00146 SOL.
  • Token-2022 mint with extensions, higher, depending on which extensions are enabled.

That deposit isn't lost, it's locked. When the account is closed, it returns to a destination wallet.

The problems start when:

  • You forget to close an empty account. The rent deposit sits there indefinitely.
  • Someone sends extra SOL to the account. Now there's value above the rent floor.
  • A program leaves lamports behind. Buggy or abandoned protocol logic.

These look identical in an explorer ("hey, there's SOL on this address") but the recovery path is completely different.

2. The two categories side by side

Closing empty token accountsStranded excess lamports
Where it occursATAs you ownToken accounts and mint accounts
What's stuckThe full rent depositLamports above the rent minimum
How it got thereNormal, every ATA costs rentAbnormal, overfunding, stray sends, buggy programs
InstructionCloseAccountWithdrawExcessLamports
Program supportBoth SPL Token and Token-2022Token-2022 only
Who signsThe ATA owner (you)The account's authority, depends on type
ResultAccount is destroyed, all lamports returnedAccount stays alive, only the excess is withdrawn
Recoverable in practiceYes, alwaysSometimes, see section 3
The clean mental model: Close accounts is sweeping the rent on accounts you're done with. Stranded Lamports is finding SOL that shouldn't be in an account at all and pulling it out without closing the account.

3. Who can sign WithdrawExcessLamports

The instruction requires a signed authority. Which signer is valid depends entirely on the account type and how it was configured.

Account typeValid signerCommon caseRecoverable?
Your own ATA (overfunded)Wallet that owns the ATAStray SOL sent to an ATA addressYes
Mint with active mint authorityThe mint authorityPre-graduation tokens, hand-rolled launchesYes
Mint with authority = None, on-curve addressHolder of the mint keypairGraduated pump tokens, fixed-supply launchesOnly if keypair was saved
Mint with authority = None, PDA addressThe program that derived the PDAProtocol-owned mints, some LP tokensOnly the program can sign
Legacy SPL Token mintInstruction does not existAnything pre-Token-2022No

The fallback signer rule

When a Token-2022 mint has its authority revoked (None), the program will accept the mint's own keypair as the signer of last resort, but only if the mint address is on-curve. Most mints are on-curve because they're generated as fresh ed25519 keypairs at creation.

The catch: the mint keypair is typically used once at InitializeMint and then discarded. Launchpads like Pump.fun never hand it to the creator. Hand-rolled launches where the dev saved the keypair are the only meaningful exception.

4. Case study: the pump.fun graveyard

A specimen from the wild, a graduated Token-2022 pump mint:

Lamport balance:       0.813433 SOL
Rent-exempt minimum:   0.003807 SOL
Excess (stranded):     0.809626 SOL

Mint authority:        None (fixed supply)
Freeze authority:      None
Address:               on-curve, ends in "pump"

The visible excess is roughly 0.81 SOL. The recoverable amount is 0 SOL. Here's why:

  1. Pump.fun generates a vanity keypair where the pubkey ends in pump.
  2. That keypair signs InitializeMint once, then gets discarded.
  3. When the token graduates, the mint authority is revoked to None.
  4. After that: the wallet that paid to launch has no authority over the mint, the mint authority itself is dead, and the mint keypair is gone.

The SOL is visible. The instruction exists. The Token-2022 program would gladly process the withdrawal. But no entity left on Earth can produce a valid signature for it.

Multiply this across every graduated pump token, every abandoned memecoin, every launch where the dev didn't save their keypair. There's a non-trivial amount of SOL sitting in mint accounts that nobody will ever move.

5. When the tool is actually worth running

Walk this checklist before assuming anything is recoverable:

1. Is the account a token account (ATA) you own?

Connect the owning wallet, sign WithdrawExcessLamports, done. High-value path for most users.

2. Is it a mint where you still hold the mint authority?

Sign with the authority wallet. Common for projects you launched and haven't revoked. If you suspect overfunding, recover before you revoke.

3. Is it a mint with authority = None?

Check whether the address is on-curve and whether the original mint keypair was saved. If you generated the mint yourself and stored the keypair, you can sign. If it was a launchpad mint, you can't.

4. Token-2022 or legacy SPL Token?

WithdrawExcessLamports is Token-2022 only. Legacy SPL Token mints have no equivalent. Any excess lamports there are unrecoverable by design.

5. Does the rent-exempt minimum match what you expect?

Some Token-2022 extensions inflate the rent floor substantially (confidential transfers, transfer hooks, metadata, and similar). Always check the live rent calculation, not a static value.

6. Practical takeaways

  • For most users, the bulk of recoverable SOL is rent on closeable ATAs, not stranded excess. Use a close-accounts tool first.
  • Stranded Lamports tooling is genuinely useful for your own overfunded ATAs, mints you launched and still control, and protocol operators auditing program-owned accounts.
  • On graduated launchpad mints, the visible "excess" is almost always uncatchable. Treat it as informational, not actionable.
  • If you're building or launching a token yourself, save the mint keypair. The cost is zero, and it preserves your ability to clean up overfunding later.

Glossary

Lamport.
The smallest unit of SOL. 1 SOL = 1,000,000,000 lamports.
Rent-exempt minimum.
The lamport balance an account must hold to avoid being purged. Calculated from account size.
ATA (Associated Token Account).
A deterministic token account address derived from a wallet plus mint pair.
Mint.
The account that defines a token (decimals, supply, authorities). Distinct from token accounts that hold balances.
Mint authority.
The signer allowed to create new tokens. Set to None to make supply fixed.
Token-2022.
The newer SPL token program with extension support. WithdrawExcessLamports is unique to it.
On-curve address.
An address with a corresponding ed25519 private key (can sign). The opposite is a PDA, which cannot sign without its derivation program.
PDA (Program Derived Address).
A deterministic address owned by a program. Has no private key, only the program can authorize it.