Every token page on this site carries a number from 0 to 100 and a grade from A to F. This page is the full recipe: every signal, every threshold, every penalty. If you disagree with a weighting you can see exactly which one it is, and you can recompute any score yourself from the figures we publish on the page.
It is not an audit. We do not read source code, we do not verify teams and we do not certify that anything is safe. It is a mechanical reading of what the chain shows, and a token can score well and still go to zero the same afternoon. Nothing here is financial advice.
Every pair starts at 50, a deliberately neutral score, and moves from there. A pair we know nothing about stays near the middle rather than being flattered or punished by default.
The single most useful anti-rug number there is. Liquidity determines how much you can sell before you move the price against yourself, which is the difference between a position and a trap.
| Pool liquidity | Effect on score |
|---|---|
| $5,000,000 or more | +22 |
| $500,000 to $5M | +17 |
| $100,000 to $500k | +12 |
| $25,000 to $100k | +7 |
| $5,000 to $25k | +2 |
| Under $5,000 | -20 and a flag |
Volume on its own says nothing, because volume is the easiest number on a chain to manufacture. What carries information is volume relative to the pool that produced it. A pool with $255,000 of liquidity reporting $599 million of daily volume is not a busy market, it is a number being made up, and we have seen exactly that.
| 24h volume vs liquidity | Effect | Reading |
|---|---|---|
| 1x to 20x | +12 | Healthy turnover |
| Above 20x | -8 | Possible wash trading |
| Above 100x | -20 | Strong wash trading signal |
| Above 500x | -35 | Not physically plausible in real trading |
| Some volume, under 1x | +3 | Quiet but alive |
| No volume at all | -5 | Dead pool |
Applied once a pair has at least 20 transactions, because below that the sample means nothing. If people are buying and nobody is selling, that is the classic honeypot shape: the contract lets money in and not out.
| Pattern | Effect |
|---|---|
| More than 10 buys and zero sells | -25 and a flag |
| Sells between 20% and 80% of trades | +8 |
| Skewed in either direction | +2 |
Surviving the first hours already filters most rug pulls, so age is evidence rather than nostalgia.
| Pool age | Effect |
|---|---|
| More than 180 days | +10 |
| 30 to 180 days | +7 |
| 7 to 30 days | +4 |
| 1 to 7 days | +2 |
| Under 1 hour | Flagged as unproven |
Where the launch platform exposes it, we look at the wallet that created the token and at what else it has launched. A wallet on its tenth token where eight collapsed after pumping is telling you something no price chart will.
| Deployer history | Effect |
|---|---|
| 10 or more prior launches with 80% collapsed | -20 and a flag |
| 5 or more prior launches | -8 |
| First token from this wallet | +5 |
A token with a site, a published account and a written description is not safer, but it is less anonymous, and anonymity is a cost the buyer pays if something goes wrong.
| Public presence | Effect |
|---|---|
| A description plus two or more official channels | +6 |
| No site, no accounts, no description | -5 |
| Flagged as banned by its own launch platform | -30 |
A pair we have not been able to verify off-chain, meaning we have no deployer history, no contract check and no published description, cannot score above 82 no matter how deep its pool is. Without that ceiling every liquid pair came out at 98 and the number stopped saying anything. A high score has to mean something was verified, not merely that a lot of money is sitting in a pool.
These are not penalties, they are gates. A pair that fails either one is served but kept out of our index pages entirely, because the figures we would be publishing are not figures we trust.
| Grade | Score | What it means |
|---|---|---|
| A | 88 to 100 | No mechanical red flags and verified off-chain |
| B | 74 to 87 | Solid on the measurable signals |
| C | 58 to 73 | Mixed, worth reading the individual signals |
| D | 42 to 57 | Several signals against it |
| F | Below 42 | Serious problems in the basic numbers |
Prices, liquidity, volume, transaction counts and pair ages are read from decentralised exchange pools through the CoinGecko on-chain API. Launch details and deployer history for tokens created on Solana bonding curves come from the pump.fun public API. Contract checks shown on token pages are produced by GoPlus Security and attributed to them, because those are their checks and not ours. Contract and pool addresses on every token page link straight to the block explorer for the chain, so nothing here has to be taken on trust.
Price, liquidity, volume and trade counts refresh continuously. The slower parts of a page, meaning the description, the chart history, the contract checks and the market list, are rebuilt in the background on a rolling basis, with the busiest pairs first. Every page states the figures it was built from, so you are never reading a score without also seeing its inputs.
Every input is on the page next to it. If a pair looks mispriced by our index, the signal breakdown will tell you which rule produced it, and the tables above tell you what that rule is worth. That is the point of publishing this: a proprietary number that nobody can audit is just an opinion with a decimal point.