> For the complete documentation index, see [llms.txt](https://docs.j.tools/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.j.tools/guides/airdrop-to-holders.md).

# Airdrop tokens to holders

An airdrop is two jobs back to back. First you build a list of who holds your token right now. Then you send the airdrop amount to every wallet on that list. J Tools splits this across two tools that hand off cleanly: [Token Snapshot](/tools/utilities/token-snapshot.md) exports the recipient list, and [Multi Sender](/tools/wallets/multi-sender.md) distributes to it.

[**Run the airdrop in the app →**](https://j.tools/en/tools)

```mermaid
flowchart TD
    Q{Who gets the airdrop?}
    Q -->|snapshot| S[Snapshot current holders with Holder Snapshot]
    Q -->|own list| P[Paste your own address list]
    S --> B[Build the distribution list]
    P --> B
    B --> M[Send with Multi Sender]
    M --> V[Verify the transfers on-chain]

    classDef brand fill:#EF2A2A,stroke:#EF2A2A,color:#ffffff,font-weight:bold;
    classDef soft fill:#1f2937,stroke:#374151,color:#e5e7eb;
    class M,V brand;
    class Q,S,P,B soft;
```

{% hint style="success" %}
**J Tools is non-custodial.** We never hold your private keys and never ask for them. Every transaction is built in your browser and signed by your own wallet. If any page ever asks you to paste a private key, stop, close it, and let us know.
{% endhint %}

## Before you start

* A connected wallet ([how to connect](/getting-started/quick-start.md)).
* The mint address (CA) of the token whose holders you want to reach.
* The token you are airdropping, already sitting in your sending wallet. It can be the same token or a different one.
* Enough SOL to cover the platform fee, the network fees, and account rent for any recipient that does not yet hold the token you are sending.

{% hint style="warning" %}
**About fees.** Every action has two costs: the Solana **network fee** paid to validators, and the **J Tools platform fee**. The platform fee always shows in the app before you confirm, and nothing is charged until you sign. Fees can change over time, so trust the in-app summary rather than a number you saw once.
{% endhint %}

## The full flow

{% stepper %}
{% step %}

### Snapshot the current holders

Open [Token Snapshot](/tools/utilities/token-snapshot.md), pick your token with the selector, and run the scan. It groups every token account by owner and returns a ranked list with each holder's balance and share of supply. Set a top-holder limit that covers everyone you intend to reach. If you are airdropping to your own token's holders, it pays to [verify the token is safe](/guides/verify-token-safe.md) first so you know exactly what you are distributing.

[**Open Holder Snapshot →**](https://j.tools/en/tools/token-snapshot)
{% endstep %}

{% step %}

### Export the recipient list

Download the snapshot as CSV. Each row carries the holder address and balance, exactly what the sender needs. The header stamps the mint and the generated-at time, so you know which moment this list represents.
{% endstep %}

{% step %}

### Shape the list for sending

Decide how much each wallet gets. For a flat airdrop, keep just the address column and let Multi Sender split a total evenly. For a pro-rata airdrop weighted by holdings, format each line as `recipient,amount` using the snapshot balances. Trim out any wallet you do not want to pay, like your own treasury or a burn address.
{% endstep %}

{% step %}

### Load it into Multi Sender

Open [Multi Sender](/tools/wallets/multi-sender.md), choose SOL or your SPL token, and import the list by pasting it or uploading the CSV. Run **Clean up list** to drop invalid, duplicate, and self-address rows before anything goes out.

[**Open Multi Sender →**](https://j.tools/en/tools/multi-sender)
{% endstep %}

{% step %}

### Set amounts and review the summary

Pick a distribution mode (Equal, Random, or Percentage) or keep the per-row amounts from your file. Read the summary: total recipients, total leaving your wallet, the platform fee, the network fee, and rent for new recipient accounts. This is your last checkpoint before signing.
{% endstep %}

{% step %}

### Send in batches and verify

Click **Send to All**. The run goes out in chunks you approve in your wallet, and each row reports success or failure with a Solscan link. Retry failed rows, then download the CSV receipt as your delivery record.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**About wallet warnings.** Some tools sign more than one thing in a single step, for example creating a token and its metadata together. Phantom can show a caution banner for these multi-step transactions. The banner is expected here and does not mean something is wrong. Read what you are signing, then approve.
{% endhint %}

## Snapshot timing matters

A snapshot is a single moment in time. Holders trade, so a list pulled an hour ago can already be stale by the time you send.

{% hint style="warning" %}
Re-run the snapshot right before the airdrop so you are paying the current holder set, not the one from earlier in the day. If your token is actively trading, the gap between snapshot and send is exactly where wallets slip on or off the list.
{% endhint %}

## Batching, gas, and rent

Multi Sender does not push the whole list in one giant transaction. It splits the work into batches, and knowing why keeps the run smooth.

| What            | Why it works this way                                                                                                                                                                            |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Batched signing | A connected wallet approves the run in chunks instead of one oversized transaction. Each SPL batch covers a handful of recipients so it reads as a normal airdrop, not a suspicious bulk action. |
| Network fees    | Each batch pays its own small network fee. More recipients means more batches, so budget SOL for the whole list, not a single transfer.                                                          |
| Recipient rent  | Any wallet that does not already hold the token you are sending needs a new token account, and that account costs rent. The summary adds this up for you before you sign.                        |
| SOL minimums    | For a SOL airdrop, every recipient amount has to clear the rent-exempt minimum the tool shows. Anything smaller cannot fund a fresh account, so the tool blocks it.                              |

{% hint style="info" %}
The summary screen totals the platform fee, the network fees, and rent into one number that leaves your wallet. If that total surprises you, it is almost always recipient rent: a list full of brand-new wallets costs more than a list of existing holders.
{% endhint %}

## Verifying delivery

Confirmation is built into the run, so you do not have to go hunting on an explorer.

{% tabs %}
{% tab title="During the run" %}
Each recipient row updates live to pending, success, or failed. A successful row links straight to its transaction on Solscan, so you can spot-check any payout the moment it lands.
{% endtab %}

{% tab title="If rows fail" %}
Network hiccups happen mid-run. Hit **Send** again and only the rows that have not succeeded go back out. A delivered row is skipped, so no wallet is ever paid twice on a retry.
{% endtab %}

{% tab title="After the run" %}
Download the CSV receipt. It captures every recipient, the amount, the status, and the signature, which is your permanent record of who received what. Keep it with your treasury notes.
{% endtab %}
{% endtabs %}

## FAQ

<details>

<summary>How many wallets can one airdrop reach?</summary>

One Multi Sender run handles large batches, and the tool shows the current per-run limit. If your snapshot is larger, split it into separate lists and run them one after another.

</details>

<details>

<summary>Can I airdrop a different token than the one I snapshotted?</summary>

Yes. The snapshot only decides who receives the airdrop. In Multi Sender you choose any SOL or SPL token your sending wallet holds, so you can reward holders of token A with token B.

</details>

<details>

<summary>How do I weight the airdrop by how much each wallet holds?</summary>

Use the balance column from the snapshot to build `recipient,amount` lines, then import that file. Multi Sender keeps the per-row amounts you supplied. For a flat airdrop instead, drop the amounts and let the Equal mode split a total evenly.

</details>

<details>

<summary>Does J Tools hold my tokens during an airdrop?</summary>

No. The snapshot is a read-only scan, and the airdrop goes straight from your wallet to each recipient. You sign every transaction yourself, and we never ask for your key.

</details>

## Related

{% content-ref url="/pages/IkDuDGRTPYj2wcjtbIre" %}
[Holder Snapshot and Analytics](/tools/utilities/token-snapshot.md)
{% endcontent-ref %}

{% content-ref url="/pages/ABVX2mBQDoCv7DEdVmKp" %}
[Multi Sender](/tools/wallets/multi-sender.md)
{% endcontent-ref %}

{% content-ref url="/pages/eyvl1w0Ri5KEBHvrUAxz" %}
[Many to Many](/tools/wallets/many-to-many.md)
{% endcontent-ref %}

{% content-ref url="/pages/i39FvMnQv5kwaJ2qnxcJ" %}
[Verify a token before you buy](/guides/verify-token-safe.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.j.tools/guides/airdrop-to-holders.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
