Skip to main content
The compressSplTokenAccount function compresses the balance of an SPL token account, with an optional remainingAmount parameter to leave tokens in the original account. After compression, empty token accounts can now be closed to reclaim rent with closeAccount().
Function Difference and Best Practice:
  • compressSplTokenAccount(tokenAccount, remainingAmount) compresses the entire SPL token
    account balance minus optional remaining amount only to the same owner. Use to migrate complete token
    accounts with optional partial retention.
  • compress(amount, sourceTokenAccount, toAddress) compresses specific amounts from
    source to a specified recipient. Use for transfers and precise amounts. Here is how.

Full Code Example

1

Prerequisites

Make sure you have dependencies and developer environment set up!
Dependencies
Developer Environment
By default, all guides use Localnet.
2

Compress SPL Token Accounts

Run this script to compress the entire SPL token account balance.
compress-full-account.ts
Make sure the SPL mint has a token pool for compression.
The script creates this token pool for you.
For development, you can create a new mint with token pool via createMint() or add a token pool to an existing mint via createTokenPool().

Troubleshooting

The token account doesn’t have enough tokens for the operation.
The remainingAmount parameter exceeds the current account balance.

Advanced Configuration

Compress most tokens while leaving some in SPL format:
Compress several token accounts for the same mint:

Next Steps

Learn how to create and register SPL mints with token pools for compression.