Token accounts and associated token accounts

Your wallet does not hold tokens itself. Each token sits in its own 165-byte token account, and each one carries a SOL deposit.

Updated

A Solana wallet holds SOL directly, but it does not hold tokens. Every token you own, from USDC to a memecoin to an NFT, sits in a separate token account: a small account that records which token it is, who owns it and how much is in it. Your wallet controls these accounts; apps add them up and show them as your balance.

What is inside a token account

A classic token account is exactly 165 bytes:

FieldBytesMeaning
mint32Which token this account holds
owner32The wallet that controls it
amount8The token balance
delegate36Optional: an address allowed to spend part of the balance
state1Initialized or frozen
is_native12Set for wrapped SOL accounts
delegated_amount8How much the delegate may still spend
close_authority36Optional: who may close it instead of the owner

Like every account, it needs a rent deposit for those bytes: 0.00203928 SOL at the original price, 0.00148844 SOL today.

Associated token accounts

A wallet could have any number of token accounts for the same token at random addresses, which would make it hard for anyone to know where to send tokens. The Associated Token Account program solves this: it derives one canonical address from your wallet address, the token program and the token’s mint. Anyone can compute that address, and anyone can create the account there for you, paying its deposit. That is how airdrops reach wallets that never asked for them.

Almost every token account you have is an associated token account. Wallets create one the first time you receive or buy a token, and send to it from then on.

Two token programs

Solana has two token programs. The original SPL Token program, since 2026 running as the leaner p-token implementation, holds most tokens. Token-2022 is a newer program with optional extensions such as transfer fees, metadata stored on the mint or non-transferable tokens. Token-2022 accounts start at the same 165 bytes and grow with each extension, so their deposit is larger. Both programs share the instructions that matter for rent: CloseAccount and WithdrawExcessLamports.

Why it adds up

Every token your wallet has ever touched left a token account behind, unless something closed it. Swapped a token away completely? The account is still there, empty, holding its full deposit. A hundred such accounts at the original price hold about 0.20 SOL.

SOL itself has a token form too, used by many apps: wrapped SOL. The scanner lists all token accounts of a wallet with what each can return.

Sources

Keep reading