Methodology
How every number is computed, where it comes from, and what it can't tell you.
Principles
#- A flag is a reason to look closer, never proof of intent. Plenty of fine tokens carry flags.
- Unknown is never zero. When a source doesn't answer, the number shows as — with the reason, and a missing signal is never scored as clean.
- On-chain first. Places, trades and balances are read from the chain's own logs, not from a third-party indexer.
- No advice. Nothing here says buy or sell. Testnet tokens have no value.
The line
#Every holder of a token is placed by their first real buy. A place needs 0.0003 ETH+ paid for tokens still held.
A holder walks out when the bag falls to 5% of its peak or less, or under 5,000 tokens. Partial sells keep the place. Re-entries start a new place at the back.
Source: Transfer logs of the token from its launch block, replayed in order. ~1 h is measured as 22,000 blocks (0.165 s per block).
Line Health · A–F
#Who stands at the front of the line: the first 20 distinct buyers (the creator excluded). The score starts at 100.
| Signal | Score |
|---|---|
| Known sniper bots in the first 20 (6+ medium, 12+ high) | −3 each, max −45 |
| Wallets from a known farm group in the first 20 | −5 each (2+), max −25 |
| Dev sold on the curve or pool | −15 |
| Dev moved tokens to other wallets | −10 |
| First 20 who sold 95%+ within ~1 h | up to −20, by share |
| Under 30% of the first 20 still hold | −10 |
| Verified-early wallets in the first 50 | +5 each, max +10 |
A ≥85B ≥70C ≥55D ≥40F <40
Any high-severity reason (12+ snipers, dev sold, a big farm group, half the first 20 out within an hour) caps the letter at C, whatever the score.
A signal that can't be read (fewer than 5 buyers, launch block unknown, labels too old) scores 0 and marks the grade Partial.
Early Index · snipers & farms
#A wallet index rebuilt every hour from every launch in a 7-day window. Current build: 15,414 launches, 273 sniper wallets, 0 farm groups, built 8 Nov, 18:42 UTC.
- Sniper: bought among the first 20 of 10+ launches in the window, and picked graduating tokens no better than chance (base rate 11.75%).
- Farm group: wallets that keep entering the first minutes of the same launches together. Often one operator.
- Verified early: early entries that graduated well above chance.
Hourly, not live: a new bot trades before it is labelled. Labels older than 14 days are not used at all.
Bundle · one funder · fresh wallet
#Bundle: 3+ top holders whose first buy landed in the same second. When the whole trade history is loaded, 3+ first buys in the launch minute count too.
One funder (a funding cluster): top-30 holders whose first incoming ETH came from the same wallet (read from the explorer, oldest transactions first). Public faucets and hubs (50+ funded wallets or 1,000+ sent transactions, read from the account nonce) are not clusters. ETH bridged from L1 counts as self-funded.
Fresh wallet: a holder whose first ETH arrived less than 24 h before its first buy of the token.
Same funder or same second is common for friends, bots and airdrop hunters alike. A wallet still being checked is shown as pending, never as “no cluster”.
Exit math
#What selling a bag would return right now: the bonding-curve price integrated over the tokens sold (your own sell moves the price down as it goes), minus the 1.25% vibe/vibe fee.
ETH out ≈ ∫ price(s) ds over the bag × (1 − 0.0125)
Sell wall: how far the price would drop if every holder in profit sold now. The token page flags it for graduated pools only, from a 50% drop.
A quote at the latest block, not a promise: every sell ahead of yours lowers it. The curve fills at 5 ETH; after graduation trades move to the Uniswap V4 pool and the curve quote no longer applies.
Real volume
#Raw volume counts every buy and sell. Real volume sets apart trades that don't bring new money: one wallet buying and selling around the same moment (round trips), the dev trading its own token, and wallets of one funding cluster trading with each other. Those trades are labelled wash: they move volume but bring no new money.
Wash trading can't be proven from the chain; the split is a lower bound of what looks organic. When the trade history isn't fully loaded, the share is marked partial.
Graduation ETA
#Graduation: the curve reaches 5 ETH and trading moves to a Uniswap V4 pool. To grad is how far the curve is toward that target.
ETA: ETH still missing to the 5 ETH target, divided by the slower of two paces:
- net ETH inflow over the last 24 h (or since launch, if younger);
- the last hour's volume (buys + sells, an upper bound of the last hour's net inflow).
ETA = ETH remaining / min(net 24 h pace, last-hour pace)
Stalled, no ETA: no buys in the last hour, a flat or draining day, or a last hour under 10% of the day's pace. Lines younger than 1 h get no ETA: that is noise, not a rate.
Sources & freshness
#| Source | Used for |
|---|---|
| Robinhood Chain testnet RPCrpc.testnet.chain.robinhood.com | Lines, trades, balances, curve progress, exit math |
| vibe/vibe APItestnet.vibevibe.fun | Launch list, names, logos, 24 h stats, holder lists, dev history |
| Blockscout explorerexplorer.testnet.chain.robinhood.com | Who first funded each top holder (funding clusters) |
| Early Indexrebuilt hourly from chain logs | Sniper, farm and verified-early labels |
The vibe/vibe indexer can lag the chain by minutes to hours; curve progress is therefore read on-chain. Live freshness of every source: Status.
The site is open source: every formula on this page is in the code on GitHub ↗.
Independent community project built on the vibe/vibe testnet. Not affiliated with vibe/vibe or Robinhood Markets. Testnet tokens have no value. Not affiliated with Blockscout either. Nothing on this site is financial advice.