> 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/tools/utilities/token-snapshot.md).

# Token Holder Snapshot and Holder Analytics

[Holder Snapshot](https://j.tools/en/tools/token-snapshot) reads every holder of a Solana token mint straight from the chain and turns the raw account list into something you can actually read. It groups multiple accounts per owner, classifies LP pools, exchange wallets, burn addresses, the dev wallet, and freshly created wallets, then ranks everyone by balance and share of supply. The whole scan is read-only and free: it signs nothing and moves no funds.

## What it is

Holder Snapshot is a holder analysis and export tool. You give it a token mint address (the CA), it scans all of the token accounts that hold that mint, and it returns a ranked list of owners with their exact balance, their share of supply, a native SOL balance for the top rows, and an Excel (.xlsx) download.

It works with your connected browser wallet on Solana mainnet. The heavy scan is executed read-only by the J Tools API against high-throughput indexer RPCs, so connecting a wallet is about identifying you, not about signing a transaction.

## Why use this tool

A raw holder list pulled straight from the chain is noisy. The same person can hold a token across several accounts, liquidity pools and exchange wallets sit at the top of the list and look like whales, and burn addresses pad the count. Reading that list by hand, or with a quick script, usually leads to a wrong picture of who actually owns the token.

Holder Snapshot does the cleanup for you:

* It tags infrastructure wallets (LP, CEX, burn, dev) so they stop masquerading as real holders.
* It flags wallets first seen in the last 30 days, which is useful for spotting freshly created wallet clusters.
* It handles both classic SPL and Token-2022 mints without you choosing a mode.
* It exports a clean file you can feed straight into a sender or an audit.

The result is an honest, point-in-time read of distribution and concentration that you can trust before an airdrop, a vote, or a buy.

## How it works (under the hood)

When you run it, the tool first loads the mint itself to get the token's supply and decimals, which tells it how to convert raw amounts into human-readable balances and how to compute each owner's share. It then pages through every token account that holds that mint. Because one person can spread a balance across several accounts, the tool groups accounts by owner and adds them up, so each holder lands on one row.

Next it classifies each owner. Known liquidity pool accounts get an LP tag, known exchange wallets get a CEX tag, burn addresses get a burn tag, and the creator wallet gets a dev tag. Wallets whose first on-chain activity is within the last 30 days get a fresh tag with their age shown beside it. LP, CEX, burn and dev classification covers the top 1,000 rows, and wallet age, which is what produces the fresh tag, is filled for the top 2,000. Infrastructure wallets sit near the top of any list, so the class tags stay reliable even on a 5,000 or 10,000 run. With everyone grouped and tagged, the tool sorts by token amount, highest first, and keeps the number of top rows you asked for. The full holder count is still measured even when the table is capped, and the totals stay accurate. Only on exceptionally large mints can the scan stop at its time budget and return a flagged partial result; the page shows a partial-scan note when that happens.

The SOL column and the USD column are extra read-only lookups: native SOL balances are fetched in batches for the top 1,000 rows, and USD values come from an external price feed called from your browser. Search, sort, and the minimum-SOL filter all run on the rows already loaded in your browser, so they reshape what you see and export without re-running the scan.

<figure><img src="/files/6Y5O8b8jKlKp3qclHSkW" alt="How Holder Snapshot works"><figcaption></figcaption></figure>

## When to use it

* You are preparing an airdrop and need an exact holder list to send to.
* You are building a governance or voting eligibility list from current holders.
* You are auditing distribution or checking concentration before a launch or a buy.
* You want to see how much supply sits in LP, exchanges, burn, and the dev wallet versus real holders.
* You need a point-in-time holder export for treasury or compliance reporting.
* You want to spot freshly created wallet clusters that appeared in the last 30 days.

The export feeds straight into the wallet tools. Pull a snapshot here, then send with [Multi Sender](/tools/wallets/multi-sender.md). To read the same holders more closely, paste the top addresses into [Wallet Scope](/tools/utilities/wallet-scope.md) for SOL balances, wallet age and which of them share a first funder, or open the same mint in [J Map](/tools/utilities/j-map.md) to see that distribution drawn as connected clusters. If you are not sure what a holder or mint address is, the [Glossary](/getting-started/glossary.md) covers the terms.

## Before you start

* A connected wallet ([how to connect](/getting-started/quick-start.md)). The run stays blocked with a "connect your wallet" message until you connect.
* The token's mint address (CA). It can be a classic SPL mint or a Token-2022 mint. The difference is explained in [SPL vs Token-2022](/concepts/spl-vs-token2022.md).
* Nothing else. The scan runs on the J Tools API, which picks its own provider RPC endpoints server-side, so there is nothing to paste or configure.

## Step by step

{% stepper %}
{% step %}

### Open Holder Snapshot and connect

Open the tool page and connect your wallet if you have not already.
{% endstep %}

{% step %}

### Enter the token mint

Pick the token with the built-in selector and confirm the mint address (CA). The address is validated as a real Solana public key before the run starts.
{% endstep %}

{% step %}

### Pick a top-holder limit

Choose how many top holders to return: 100, 500, 1000, 5000, or 10000. The default is 1000. Native SOL balances are fetched automatically for the top rows; there is no extra option to switch on.
{% endstep %}

{% step %}

### Run the snapshot

Click **Run Snapshot**. The page scans every token account holding that mint, groups them by owner, sums multiple accounts per owner, then sorts by token amount and keeps the top rows you asked for. The full holder count is still measured even when the table is capped; only on exceptionally large mints can the scan stop at its time budget and return a flagged partial count.
{% endstep %}

{% step %}

### Review and filter

Read the ranked table: rank, holder, token amount, USD value, share %, SOL, and how many accounts each owner holds. Rows are classified, so LP pools, exchange wallets, burn addresses, and the dev/creator wallet are tagged instead of being mistaken for real holders; class tags and SOL balances cover the top 1,000 rows and wallet age covers the top 2,000, so on a 5,000 or 10,000 run the rows past those cutoffs come back with no class tag, no SOL balance and no age. Rank and whale badges still apply to every row. Wallets first seen within the last 30 days show a fresh tag with their age, and the table reports how many of the sampled wallets are fresh. Filter by address with search, change the sort, or set a minimum SOL threshold.
{% endstep %}

{% step %}

### Export

Download the visible rows as an Excel (.xlsx) file. The header records the mint, the holder count, the top-10 share, the fresh-wallet share, and the generated-at time; the requested top count is part of the filename.
{% endstep %}
{% endstepper %}

[**Open Holder Snapshot in the app →**](https://j.tools/en/tools/token-snapshot)

## The options, explained

* **Token mint (CA):** The token to snapshot. Required. Entered through the built-in token selector and validated as a real Solana address.
* **Top holders:** How many top holders to return: 100, 500, 1000, 5000, or 10000. Default 1000. This caps the table rows; the full holder set is still scanned for the totals. SOL balances and class tags are added automatically for the top 1,000 rows.
* **Search:** Filters the table by holder address. Runs in your browser; it is not sent to the server.
* **Sort by:** Reorders the rows by token amount, share, SOL, or address. The server already returns rows by token amount, highest first.
* **Minimum SOL:** Hides wallets below a SOL threshold. Also a browser-side filter. On a 5000 or 10000 run, rows past the top 1,000 carry no SOL balance, so any threshold hides them too; the filter is only meaningful for the enriched rows.

## Fees and costs

{% 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 %}

**This tool is free.** There is no platform fee. Holder Snapshot only reads on-chain data, so you pay nothing.

| Cost                 | Amount                              |
| -------------------- | ----------------------------------- |
| J Tools platform fee | Free (0 SOL)                        |
| On-chain cost        | None, the scan only reads the chain |

Because a snapshot is a read of on-chain state and never signs a transaction, there is also no Solana network fee. You do not need any SOL in your wallet to run it.

## Common mistakes and troubleshooting

Holder scanning is RPC-heavy, since the tool pages through every token account for the mint. The page names the specific failure so you know what to do next.

* **RPC errors (`RPC_AUTH_FORBIDDEN`, `RPC_METHOD_NOT_ALLOWED`, `RPC_RATE_LIMITED`, `RPC_TIMEOUT`).** The endpoint refused, throttled, or could not serve the account-scan method. The most common fix is to lower the Top Holder Limit and run again.
* **Snapshots are busy (`TEMPORARILY_UNAVAILABLE`).** Heavy scans run against a shared platform budget, so at peak you may be served a cached result or asked to wait. Lowering the top limit does not help here; retry in a moment instead.
* **Heavy-scan timeout.** Very large holder sets can hit the scan time limit. The page suggests dropping to a smaller top limit and retrying.
* **USD value shows "-".** The USD column comes from an external price lookup made from your browser. If that lookup fails, USD shows a dash and the rest of the snapshot still works.
* **Treating a snapshot as live.** Solana state changes block by block. A snapshot reflects holders at the moment it ran, not five minutes later. Re-run it right before any final airdrop or governance action.
* **Counting infrastructure as holders.** LP, CEX, and burn rows are tagged for a reason. Filter them out before you treat the list as real owners.

For the full list, see the [Error codes reference](/reference/error-codes.md).

## Advanced tips

* Start with a smaller top limit (100 or 500) for the fastest pass, then re-run with a larger limit once you know the mint scans cleanly.
* Use the minimum-SOL filter to drop dust wallets when you are building an airdrop list, so you are not sending to empty accounts.
* A saved export doubles as an audit record: the header carries the mint, the counts, the shares and the generated-at time.
* For huge balances, treat the largest figures as close rather than exact to the last digit. Shares and ranking still hold.

## Related tools

{% content-ref url="/pages/tvk3KydrniyizApPkWZi" %}
[Wallet Scope: Bulk Wallet Analyzer](/tools/utilities/wallet-scope.md)
{% endcontent-ref %}

{% content-ref url="/pages/biKUAmB4vuIiL2aReFe0" %}
[J Map: Token Cluster Map](/tools/utilities/j-map.md)
{% endcontent-ref %}

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

{% content-ref url="/pages/o5eO6abVdoCCB4WkfKVR" %}
[Solana Holder Booster](/tools/boost/holder-booster.md)
{% endcontent-ref %}

{% hint style="success" %}
**J Tools is non-custodial.** We never store or transmit your private keys and never ask for your seed phrase. Every transaction is signed in your own browser, and nothing about a key ever reaches our servers. A few multi-wallet tools do let you paste private keys for throwaway hot wallets, which stay in your browser tab and are used only to sign locally. Never paste a key tied to long-term holdings, and if a page ever asks for your seed phrase, stop and close it.
{% endhint %}


---

# 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/tools/utilities/token-snapshot.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.
