SOLSTACKBlog
← All guides

Airdrops & Multisend

How to Airdrop SPL Tokens to a List of Wallets

A practical guide to airdropping SPL tokens to hundreds of Solana wallets at once — CSV format, batching, rent costs and the mistakes that waste SOL.

2026-09-14·7 min read·Verified against mainnet-beta

If you've ever tried to send a token to five hundred wallets by hand, you already know why airdrop tooling exists. Solana doesn't have a native "send to many" instruction — an airdrop is really just a large batch of ordinary SPL token transfers, submitted efficiently enough that it doesn't take you all day or cost more in fees than the airdrop is worth. This guide covers how the process actually works under the hood, so the mechanics stop being a mystery whichever tool you use to run it.

What an airdrop actually is on-chain

There's no special "airdrop" instruction in the SPL Token program. Distributing a token to N wallets means building N transfer (or transferChecked) instructions — one per recipient — and getting them signed and submitted. The only real engineering problem is packing that work into as few transactions as possible, because Solana transactions have hard limits:

  • 1232 bytes per transaction (the max size of a serialized packet)
  • 1,232 bytes of instruction data effectively caps you at roughly 15–20 transfers per transaction, depending on whether recipients already have a token account
  • Each transaction still needs one wallet signature, so batching also matters for how many times you have to click "approve"

A naive script that fires 500 individual transfer transactions will work, but it's slow, expensive in aggregate fee overhead, and painful to babysit. Proper airdrop tooling batches transfers into ~15-per-transaction chunks, so 500 recipients becomes roughly 35 signatures instead of 500.

Every recipient needs a token account — and that costs rent

This is the part that catches people off guard. A wallet can't just "receive" an SPL token the way it receives SOL. Before your token can land in someone's wallet, that wallet needs an associated token account (ATA) for your specific mint — a small on-chain account holding their balance of that one token.

If a recipient has never held your token before, their ATA doesn't exist yet, and someone has to pay to create it. That's a rent-exempt deposit of roughly 0.00203928 SOL per new account — not a fee that disappears, just SOL locked into the account (recoverable later if the account is ever closed). By convention, and by default in most airdrop tools including Solstack's, the sender pays this rent, not the recipient.

Do the math before you commit to a large list: airdropping to 2,000 fresh wallets means budgeting roughly 4 SOL just in ATA rent, on top of network fees and whatever supply you're distributing. This is the single most common reason an airdrop budget comes in over estimate.

Getting your recipient list right

Almost every airdrop tool expects a plain list: one wallet address and one amount per line, typically as address,amount or address amount. A few things reliably go wrong here:

  • Duplicate addresses. If the same wallet appears twice, most tools will send to it twice — dedupe before you upload, don't rely on the tool to catch it.
  • Amounts with too many decimals. If your token has 6 decimals and a row says 1234.5678912, that gets rejected or truncated depending on the tool. Round to the mint's actual decimal count first.
  • Copy-paste corruption. A trailing space or a smart-quote character from a spreadsheet export is enough to invalidate an address. Good tooling flags bad rows individually rather than failing the whole batch — check that yours does before you trust a 1,000-row list to it.
  • LP pools, CEX deposit wallets, and your own treasury. If you're airdropping to a token's existing holders (see the next section), these addresses show up in every snapshot and usually shouldn't receive a drop. Filter them out explicitly.

Snapshot-based airdrops: rewarding existing holders

A common pattern is rewarding people who already hold one token by airdropping them a different one — a governance token to early LPs, a new token to NFT collection holders, and so on. This requires a holder snapshot: reading every account that currently holds a balance of the source token or NFT collection, at one specific moment in time.

Two things to understand about snapshots:

  1. They're a single point in time. The moment you run the snapshot, that's the list. Anyone who buys, sells, or transfers the source token five minutes later is not reflected — there's no way to make a snapshot "live." If you need a fresh list, re-run it right before you distribute.
  2. Pro-rata math needs a minimum threshold. If you're splitting a fixed pool proportionally to holdings, decide on a minimum balance to qualify. Without one, a wallet holding 0.0001% of supply gets a dust amount that isn't worth the rent spent creating their token account — you're better off excluding it.

Batching and the mechanics of sending

Once you have a clean list, distribution runs as a series of atomic batches — usually ~15 transfers each. "Atomic" matters here: if any single transfer in a batch fails (a malformed account, an unexpected authority issue), the entire batch reverts. Nothing in that batch is sent, and none of its SOL is spent beyond the network fee. This is a feature, not a bug — it means you never end up in a state where 11 of 15 recipients got paid and 4 silently didn't.

Good tooling also tracks which batches already landed, so if you have to stop midway through a 40-batch airdrop and resume later, it doesn't double-send to the batches that already succeeded.

What it costs, all in

For a rough budgeting rule of thumb, per recipient you're paying:

Cost Typical amount
Network fee (amortized per batch) ~0.000005 SOL
New ATA rent (only if they don't already hold the token) ~0.00204 SOL
The token amount itself whatever your distribution plan says

For a 1,000-wallet airdrop where most recipients are new to the token, budget roughly 2–2.5 SOL in rent and fees before you've spent a single unit of the token you're actually distributing.

Doing it with Solstack

Solstack's Airdrop tool handles the snapshot, the batching, and the rent accounting for you — connect your wallet, point it at a source token or NFT collection to snapshot, set a flat or pro-rata split with a minimum-balance filter, choose the token you're distributing, and sign each batch as it comes up. If you already have a clean address list instead of a snapshot, Multisender does the same batched-send mechanics from a pasted list or CSV without the holder-lookup step.

Full field-by-field walkthrough is in the Airdrop docs page.