Why "top 10 holders own 90%" is often wrong on Solana
October 31, 2026 · 4 min read · by the Rugsight team
Paste almost any new Solana token into a holder list and you'll see something like "top 10 holders: 92%". It looks like a rug waiting to happen. Often it isn't, because most of that 92% is not held by anyone who can sell.
This post explains why raw holder lists mislead, how Rugsight computes holder concentration instead, and the cases where even a careful method can't give you a number.
Token accounts are not holders
On Solana, a wallet doesn't hold tokens directly. Tokens live in token accounts, and each token account has an owner. The RPC call most tools start from, getTokenLargestAccounts, returns the 20 largest token accounts for a mint, not the 20 largest owners.
That causes two problems:
- One owner can have several token accounts. Usually a wallet has one associated token account per mint, but nothing stops it from holding more. Counting accounts can split one whale into several smaller "holders".
- Many of the largest accounts are owned by programs, not people. That's the bigger problem.
What sits at the top of a typical list
For a token that trades on a DEX, the largest token accounts usually include:
- The liquidity pool's vault. An AMM pool holds one side of the pair in a token account owned by the pool program (or a PDA derived from it). On a thin token, that vault can hold 30% to 80% of the supply. Those tokens are the market; they're what buyers buy from.
- The pump.fun bonding curve. Before a pump.fun token graduates, most of its supply sits in the bonding-curve account. Calling that "one holder owns 80%" is wrong.
- Other program-owned accounts: lockers, vesting contracts, staking vaults, bridges.
- Burn and dead addresses. Tokens sent to an address nobody controls are gone in practice, even if they still count in the supply.
None of those can dump on you the way a single wallet can. Count them and nearly every new token looks like 90% concentration. Then the metric tells you nothing.
How Rugsight measures it
For each mint we:
- Read the largest token accounts (
getTokenLargestAccounts) and the total supply. - Resolve the owner of each of those accounts.
- Classify each owner. If it's a known burn address, it's burn. If it's one of the token's DEX pool addresses, it's a pool. If the owner account belongs to the System Program, it's a normal wallet. Anything else (a program-derived address such as a bonding curve, vault or locker) is a program. If we can't resolve an owner, we count it as a wallet, so errors push the number up, not down.
- Merge accounts that belong to the same owner.
- Report top-1 wallet % and top-10 wallet % using real wallets only, and list what we excluded and why.
The full report shows the top-20 breakdown with each entry labeled (wallet, pool, program, burn), so you can check our classification instead of trusting a single number.
Scoring then uses the wallet-only numbers: over 80% in the top 10 wallets costs 30 points, over 50% costs 20, over 30% costs 10, and any single wallet over 20% costs another 15.
Where it still breaks
Huge tokens. For a mint with millions of token accounts, getTokenLargestAccounts has to rank all of them. On USDC, USDT and wrapped SOL (each with more than 10 million accounts), public and free-tier RPC nodes refuse or time out. There's no free, reliable way to get that list, so for those tokens Rugsight says plainly that holder concentration is unavailable and leaves it out of the score, instead of guessing.
Overloaded indexes. Even for mid-size tokens like BONK or WIF, an RPC provider sometimes answers "index overloaded". We retry with backoff, fall back to another RPC, and as a last resort use the last successful holder snapshot (up to 7 days old), marked as cached in the report.
Wallets that look like wallets. A team can split its supply across 50 fresh wallets. Each is a real wallet on-chain, so it counts as a wallet, but no single one looks large. Holder concentration alone can't catch that; you need funding-graph analysis (who funded these wallets?), which bubble-map tools do and Rugsight does not yet.
Centralized exchange wallets. An exchange hot wallet holding 15% of a listed token is technically one wallet, but it represents thousands of customers. We don't relabel exchange wallets yet, so large listed tokens can look a bit more concentrated than they are.
What to take away
- Treat any "top 10 = 90%" number with suspicion until you know what's in the top 10.
- Look for the pool and bonding-curve accounts and set them aside.
- Concentration in real wallets over 50%, or one wallet over 20%, is the signal worth worrying about.
- Even a clean distribution doesn't rule out a coordinated group of wallets.
You can see the wallet-only numbers for any token on its Rugsight page: try BONK, browse new tokens, or read the full checklist in how to check a Solana token for rug-pull risk. The free sample report shows the labeled top-20 breakdown.
Automated technical analysis of public on-chain data. Not financial advice.