SolstackBlog
← All guides

Airdrops & Multisend

How to Airdrop SPL Tokens to a List of Wallets

How to airdrop SPL tokens to hundreds of Solana wallets at once, covering the CSV format, batching, rent costs and the mistakes that waste SOL.

2026-09-14·7 min read·Verified against mainnet-beta
How to Airdrop SPL Tokens to a List of Wallets

If you've ever sent a token to five hundred wallets by hand, you know why airdrop tools exist. Solana has no "send to many" instruction. An airdrop is a large batch of ordinary SPL token transfers, sent efficiently enough that it doesn't take all day or cost more in fees than the tokens are worth. This guide explains how that works, whichever tool you end up using.

What an airdrop is on-chain

The SPL Token program has no airdrop instruction. Sending a token to N wallets means building N transfer or transferChecked instructions, one per recipient, then signing and submitting them. The engineering problem is fitting that work into as few transactions as possible, because Solana transactions have hard limits:

  • A serialized transaction can be at most 1,232 bytes.
  • That size limit allows roughly 15 to 20 transfers per transaction, and fewer when recipients need a new token account.
  • With a simple script, every transaction needs its own wallet approval, so the number of batches is also the number of times you click "approve".

A script that sends 500 separate transfer transactions will work. It's slow, the fees add up, and you have to watch it the whole time. Packing about 15 transfers into each transaction turns 500 recipients into roughly 35 transactions.

Every recipient needs a token account, and that costs rent

This is what catches people out. A wallet can't receive an SPL token the way it receives SOL. Before your token can land, the wallet needs an associated token account (ATA) for your mint, a small on-chain account that holds its balance of that one token.

If a recipient has never held your token, that account doesn't exist yet, and someone has to pay to create it. The cost is a rent-exempt deposit of about 0.00149 SOL per new account. The SOL isn't burned. It stays locked in the account and comes back if the account is ever closed. By convention the sender pays it, and that's the default in most airdrop tools, Solstack's included.

Work this out before you commit to a large list. Airdropping to 2,000 wallets that have never held your token means about 3 SOL in account rent alone, before network fees and before the tokens themselves. It's the most common reason airdrop budgets run over.

Getting the recipient list right

Nearly every airdrop tool expects a plain list with one wallet address and one amount per line, usually address,amount or address amount. A few things go wrong again and again:

  • Duplicate addresses. If a wallet appears twice, many tools send to it twice. Remove duplicates before you upload.
  • Too many decimals. If your token has 6 decimals and a row says 1234.5678912, the tool will reject or cut off that amount, depending on which tool it is. Round to the mint's decimal count first.
  • Damaged addresses. A trailing space or a curly quote from a spreadsheet export is enough to make an address invalid. A good tool flags each bad row by itself. Check that yours does before you hand it a 1,000-row list.
  • Pools, exchange deposit wallets and your own treasury. If you're airdropping to an existing token's holders (next section), these addresses appear in every snapshot and usually shouldn't get a share. Take them out on purpose.

Snapshot airdrops for existing holders

A common pattern is rewarding the holders of one token with a different one. Early LPs might get a governance token, or an NFT collection's holders might get a new token. For that you need a holder snapshot, a list of every account holding the source token or collection at one moment.

Two things to know about snapshots:

  1. A snapshot is one moment in time. Anyone who buys, sells or moves the source token five minutes later isn't in it, and there's no way to keep it live. If you want a fresh list, run the snapshot again just before you send.
  2. Pro-rata splits need a minimum. If you're dividing a fixed amount in proportion to holdings, set a minimum balance to qualify. Without one, a wallet with 0.0001% of supply gets a dust amount worth less than the rent spent on its token account, and it's cheaper to leave it out.

Sending in batches

With a clean list, the airdrop goes out as a series of batches of roughly 15 transfers. Each batch is atomic. If one transfer in it fails, say because of a bad account or an authority problem, the whole batch reverts. Nothing in it is sent and nothing is spent except the network fee. You never end up with 11 of 15 recipients paid and 4 quietly missed.

A good tool also records which batches landed. If you stop halfway through a 40-batch airdrop and pick it up later, the batches that already succeeded aren't sent again.

What it costs per recipient

As a rough rule for budgeting, each recipient costs:

Cost Typical amount
Network fee (shared across the batch) ~0.000005 SOL
New ATA rent (only if they don't hold the token yet) ~0.0015 SOL
The tokens whatever your plan says

For a 1,000-wallet airdrop where most recipients are new to the token, budget about 1.5 to 2 SOL for rent and fees, on top of the tokens you're sending.

Doing it with Solstack

Solstack's Airdrop tool takes the snapshot, builds the batches and works out the rent. You connect a wallet and point it at a source token or NFT collection. On Mainnet you can also pick a token's recent traders, a list of KOL wallets, JUP stakers or a DAO's members. Then you choose a flat or pro-rata split with a minimum balance and narrow the list with filters. Exchange wallets are left out by default, and you can add a minimum SOL balance, recent activity, or a second token they must also hold. Pick the token you're sending, approve the whole airdrop with one wallet signature, and Solstack sends the batches. If you already have a clean address list, Multisender does the same batched send from a pasted list or CSV, without the holder lookup.

The Airdrop docs page goes through every field.

Video