Solana Token Holder Snapshot
Export the full holder list for any token, ready for an airdrop or a claim list.
Common questions
Do I need a wallet or need to pay anything?
Neither. This reads public on-chain data and signs nothing, so there is no wallet connection, no platform fee and no transaction. You can snapshot any token, including one you have nothing to do with.
Why is the largest holder such a big share of supply?
Because it is usually the liquidity pool, not a person. When a token is pooled, those tokens sit in an account owned by the DEX program, and it will typically be the largest single line in any snapshot. Exchange wallets are the other common case: one address holding on behalf of thousands of people.
Does one row mean one person?
No, and this matters if you are planning a reward. One person can hold many wallets and one wallet can hold on behalf of many people. A snapshot counts addresses, which is the only thing the chain actually knows. Any conclusion about people is something you are adding on top.
How current is the list?
It is true for the instant you took it and starts drifting immediately, because balances change every block. If a snapshot is going to decide who gets paid, take it as close as you can to the moment you decide and say publicly which moment you used.
Can I use this file with the Multisender?
Yes, that is exactly what the format is for. The CSV comes out as one row per wallet with its balance, which is the input shape the Multisender parses. You will normally want to edit the amounts column to whatever you are actually distributing.
How can it know the list is complete on an EVM chain?
By arithmetic rather than by scanning far enough. No EVM chain will list a token's holders, so the addresses are rebuilt from transfer history, which is always a window of blocks rather than the whole story. But every token that exists is in somebody's balance, so if the balances found add up to the total supply there is nothing left over for a missing holder to be holding. When that adds up the tool says the list is everyone, and it is right whatever the window covered. When it does not, it tells you exactly what percentage of supply is still unaccounted for and offers to keep scanning.
Why is the EVM version slower, and why does it sometimes refuse?
Because an ERC-20 balance is an entry in the token's own storage and nothing will iterate it: the only way to learn a balance is to ask for one address at a time. Most chains carry a Multicall3 contract that lets thousands of those questions travel in a single request, which is what makes this quick. On a chain without one the reads go one by one, and past a few hundred addresses that is slow enough to be rate-limited part way through. It stops and says so rather than handing you a list that quietly stops in the middle.
Why do some rows say burn address?
Because those two addresses really do hold the token and really cannot ever send it: nobody has a key for the zero address or for the 0x…dEaD address. They are kept in the list and in the CSV because the tokens sitting there are part of the supply, and leaving them out would break the check that proves the list is complete. The flag is there so you can drop them before an airdrop rather than paying them. Liquidity pools and exchanges are not labelled, because which address is a pool is a guess and a wrong label is worse than none.
Can I snapshot an NFT collection with this?
No, this reads fungible token holders, and on an EVM chain it will find nothing at all rather than guess: an ERC-721 transfer looks almost identical to an ERC-20 one in the logs, so those are dropped on purpose instead of being read as balances that would in fact be token ids. For a Solana collection, use the NFT Holder Snapshot, which counts how many NFTs each wallet holds, or the NFT Hashlist for the mint addresses themselves.
What a holder snapshot is
A list of every wallet holding a token at one moment, with each balance and its share of supply, read from every token account for the mint and rolled up one row per wallet. It is the starting point for a distribution: send a token to everyone on it with the Multisender, send the chain's own coin with the Native Multisender, reward only the largest with Top Holder Airdrop, or check how concentrated the holdings are with the Rug Checker.
