Tokens / Methodology
Methodology · version 2026-10-29How SheetScore works
SheetScore is DexSheet's 0–95 rug-risk score for the tokens on our hot list. It weights automated on-chain checks into five pillars: can you sell, who can change the rules, whether the liquidity is real, who holds the supply, and the token's track record. A fatal finding, such as a token you cannot sell, caps the score at 10. No token scores above 95.
SheetScore is a weighted estimate of rug risk from public on-chain data at the time shown. It is not a guarantee, a calibrated probability or financial advice. A high score means we found fewer of the known rug patterns, not that a token is safe or will hold its price. Nothing is 100% safe.
The five pillars
| Pillar | Weight | What it measures |
|---|---|---|
| Can you sell? | 30% | Sell route or sell simulation, real holders' sell outcomes, buy and sell tax. |
| Who can change the rules? | 30% | Mint, freeze, pause, blacklist, upgrade and owner powers, and who holds them (nobody, a known bridge or issuer, a multisig or timelock, or a single wallet). |
| Is the liquidity real? | 20% | Pool depth, whether liquidity has collapsed from its peak, and, for tokens under 30 days old, whether the creator can pull the LP. |
| Who holds it? | 12% | Share held by the 10 largest ordinary wallets after excluding pools, burn addresses, lockers, vesting contracts, bridges and labelled exchanges, plus the creator's share. |
| Track record | 8% | Age, verified source code, RugCheck's second opinion and, on Solana, Jupiter verification. |
The weights add up to 100%. "Can you sell?" and "Who can change the rules?" carry the most because they are how buyers actually lose money: a token that can't be sold, or one whose rules someone can change after you buy.
How the score is calculated
- Every check belongs to one pillar and earns a credit from its result (table below). A check can count for more than others inside its pillar.
- A pillar's score is the weighted average credit of its checks, times 100. One failed check caps its pillar at 35, and one warning at 80, however many other checks in it pass.
- Checks that don't apply to a token are marked Not applicable, shown greyed and left out. For example, whether the creator can pull the liquidity only matters for tokens under 30 days old. A pillar with no applicable checks drops out, and its weight is shared among the others in proportion.
- SheetScore is the weighted average of the pillar scores, rounded, then capped at 95.
- Score caps then apply (below): the lowest cap that fits the token wins.
- If any fatal check fails, the score is capped at 10 and the band is Failed, whatever the other pillars say.
| Check result | Credit | Meaning |
|---|---|---|
| Pass | 1 | The check found nothing wrong. |
| Info | 1 | A risk factor shown for context (for example other tokens using the name). Never moves the score. |
| Warning | 0.55 | Something a buyer should weigh. |
| Fail | 0.1 | A real problem that is not, on its own, a trap. |
| Unknown | 0.5 | The check could not run. |
| Unknown (critical check) | 0.25 | A core check, like the sell test, could not run. |
Worked example. A token with perfect pillars except "Who holds it?" at 55: (30 × 100 + 30 × 100 + 20 × 100 + 12 × 55 + 8 × 100) ÷ 100 = 94.6, which rounds to 95. SheetScore 95.
Score caps
Caps are track-record and weakest-link ceilings: a token can't buy its way to a high score with many passes when one thing is wrong, or when it is brand new. After the weighted average is worked out, every cap that fits the token is applied and the lowest one wins. The token page says which cap applied and why.
Track record: how long the token has existed
| Token age | Highest SheetScore | Best possible band |
|---|---|---|
| Younger than 1 day | 50 | Elevated risk |
| 1 to 7 days old | 64 | Elevated risk |
| 7 to 30 days old | 79 | Moderate risk |
| 30 to 90 days old | 89 | Low risk |
| 90 days or older | 95 | Low risk |
| Age unknown | 64 | Elevated risk |
On-chain checks cannot see a dev dump or a bundled sell, so a short track record limits the score.
Weakest link
| Condition | Highest SheetScore | Best possible band |
|---|---|---|
| Any non-fatal fail in Can you sell?, Who can change the rules? or Is the liquidity real?, or in Who holds it? for a token younger than 30 daysAny failed check in a core pillar limits the score, however clean the rest is. | 59 | Elevated risk |
| One ordinary wallet holds a live upgrade, mint, pause, blacklist or freeze power. | 74 | Moderate risk |
| Low confidence (fewer than 60% of the checks, by weight, returned a result)Too few checks could be completed to support a higher score. | 64 | Elevated risk |
Inside a pillar, one failed check limits the pillar to 35 and one warning to 80, so passes cannot wash it out.
On a token page the cap that decided the score is named in one line, for example "Capped at 64: it is 3 days old." The 95 ceiling and the fatal cap are not repeated there: the score and the Failed band already say it.
Fatal findings
Some findings mean a buyer can lose everything no matter how good the rest looks. Any one of them caps SheetScore at 10, marks the token Failed and removes every buy link, swap and referral code from its page. The check that decided it is marked on the page. Fatal findings include:
- You can't sell: no sell route at all, a sell that fails in simulation, or most recent real holders failing to sell.
- Someone can create new tokens or freeze holders' tokens at will. When the power sits with a known bridge or a Jupiter-verified issuer it counts as a warning instead, because you are trusting that issuer.
- Someone else can move your tokens (a permanent delegate), transfers can be paused, or new holders start frozen. These stay fatal even on verified tokens.
- A sell tax or transfer fee above 10%.
- The liquidity collapsed or was pulled (down more than 80% from its 7-day peak).
When two tools disagree about a deal-breaker, we don't pick a side: the check counts as a non-fatal fail and shows both results, unless on-chain evidence settles it, such as real holders failing to sell or our own test transfer reverting.
Bands
| Band | SheetScore | On the token page |
|---|---|---|
| Low risk | 80–95 | Normal page with places to buy. |
| Moderate risk | 65–79 | Normal page with places to buy. |
| Elevated risk | 45–64 | Normal page; the flagged checks are listed first. |
| High risk | 11–44 | Normal page; the flagged checks are listed first. |
| Failed | 0–10 | Warning page. No buy links, no swap, no referral codes. |
| Unrated | no number | Our core checks could not run. Places to buy carry a "not checked" note, and there is no swap. |
Bands describe how many known rug patterns we found, not a probability. "Low risk" is never "no risk".
Confidence
Every score comes with a confidence level: the share of the applicable checks, by weight, that actually returned a result. High means at least 85% did, medium at least 60%, and low anything less. A check that could not run still earns partial credit, so a low-confidence score can sit closer to the middle than the token deserves in either direction.
Who holds it: what we exclude
A raw "top 10 holders" figure is misleading: pools, burn addresses and vesting contracts look like whales. Before measuring concentration we set aside liquidity pools, launchpad curves, burn addresses, lockers, vesting contracts, bridge custody and labelled exchange and treasury wallets. Each token page lists what was set aside and how much it holds, so the remaining figure can be checked.
Risk factors
Some things are worth knowing but say nothing about the contract itself, such as other tokens using the same name. They appear under "Risk factors" on the page, shown neutrally, and never change the score.
What SheetScore can't see
- Off-chain risk. On-chain checks cannot see off-chain risk (a team selling its tokens, a hack, a new kind of trick), so no token scores above 95.
- An old rug can look clean today. Once a scam has removed its sell block or drained its liquidity, today's contract can pass. We compare liquidity with its 7-day peak (a fall of more than 80% is fatal) and re-check when it drops by more than half, which catches a rug in progress, not one that finished before we listed the token.
- Who stands behind a multisig. We can tell nobody, a known bridge or issuer, a multisig or timelock, and a single wallet apart, but not who the signers are.
- Role holders a contract doesn't list. Tokens built on OpenZeppelin roles (admin, minter, pauser) often don't list who holds them. We read the role-grant history (in full on Ethereum, the recent weeks elsewhere) and test the likely holders; when we still can't name a holder, that check reads unknown, never renounced.
- Unlabelled wallets. Exchange and treasury wallets are only set aside when they are labelled; an unlabelled one counts as an ordinary holder. On EVM chains the list of top-holder addresses comes from GoPlus, so a large wallet it doesn't list can't be seen (and on HyperEVM, which GoPlus doesn't cover, holder concentration can't be measured).
- LP locks on concentrated-liquidity pools. On EVM chains (Uniswap v3/v4, PancakeSwap v3, Aerodrome) we check who holds the largest liquidity positions: burned, in a known locker, or withdrawable. On Solana (Orca Whirlpool, Raydium CLMM, Meteora DLMM) they usually can't be measured, because there is no LP token.
- The Solana sell test is a quote, not a simulated sale. Jupiter confirms a route exists without executing it. On EVM chains our own buy-and-sell simulation runs everywhere; honeypot.is adds a second one only on Ethereum, Base and BNB Chain.
- HyperEVM has no GoPlus witness. GoPlus doesn't cover it, so there its sell test and taxes rest on our own simulation alone (a failed sell is never fatal without a second witness), and the contract powers GoPlus normally reports (mint, pause, blacklist) and the top-holder list show as unknown.
- Jupiter verification is about identity, not discipline. A verified token whose issuer keeps mint or freeze power is trusted on the issuer's word.
- Fake liquidity. Pool figures come from DexScreener and can be inflated with a worthless paired token; the sell test is what catches that.
Where the data comes from
Every source is free and public, and every check on a token page names the one that produced it.
- Our own on-chain reads (public Solana and EVM RPC nodes): mint and freeze authority, token extensions, holder balances and total supply, LP supply, contract owner and role holders (admin, minter, pauser, upgrader), proxy slots, and a test transfer to the pool.
- Jupiter: the Solana sell quote, whether Jupiter has verified the token, and price and creator when the chain data doesn't say.
- RugCheck: a second opinion on Solana tokens, and a fallback for holders and LP locks.
- Our own buy-and-sell simulation (EVM): buys a small amount straight from the token's main pool and sells it back in a read-only call, measuring taxes and whether the sell goes through.
- GoPlus: EVM contract powers (mint, pause, blacklist), taxes, the addresses of the top holders and a honeypot flag, on every EVM chain we cover except HyperEVM.
- honeypot.is: a simulated buy and sell on Ethereum, Base and BNB Chain, and whether recent real holders managed to sell.
- Blockscout: the full history of role grants on Ethereum tokens that use OpenZeppelin roles.
- DexScreener: liquidity and its recent peak, token age, and the search for other tokens using the same name.
Which tokens get a score
We publish a page when a token on Solana, Ethereum, Base, BNB Chain, Arbitrum, Robinhood Chain or HyperEVM has real trading demand: at least $75,000 of liquidity, $250,000 of 24-hour volume, at least 6 hours of trading, and either two independent trending sources or very high volume from one unpaid source. Large, long-running tokens ($1M+ liquidity, $5M+ daily volume, 30+ days old) stay listed too. A paid DexScreener boost alone never qualifies a token. Stablecoins are left off the list. A token that isn't listed hasn't been scored; that says nothing either way.
Addresses on each page are the token our pipeline tracks. Other tokens using the same name or symbol are listed with their own addresses: many are copycats, some are legitimate bridged versions, and copycat liquidity that looks fake is shown as "reported liquidity unverified". Prices are snapshots refreshed about every 15 minutes, never live.
Referral links
Where we show places to buy a token, some links are referral links that pay DexSheet a share of fees. Referrals never change a score, and Failed tokens get no buy links at all. See the disclosure.
Data
Scores for every listed token are in /tokens.json (score, band), and agents can query them through our MCP server (check_token, trending_tokens). When citing, please say "SheetScore NN/100 (band)" with the date it was checked.
Calibration
Calibration in progress since 29 Oct 2026: we record every token's score daily and what happens to it afterwards, and will publish how often each band went bad once each band has enough tokens.
Last updated 29 Oct 2026.
Questions
How accurate is SheetScore?
We are measuring it. Since 29 Oct 2026 we record every listed token's score daily and what happens to it afterwards (a fatal finding, liquidity or price collapse, trading stopping). Once a band has at least 200 tokens we publish how often tokens in that band went bad within 7 and 30 days, with a 95% confidence interval; until then we show no accuracy figure. See the Calibration section of this page.
What is DexSheet's SheetScore?
SheetScore is DexSheet's 0–95 rug-risk score for crypto tokens. It combines automated on-chain checks in five weighted pillars: can you sell (30%), who can change the rules (30%), is the liquidity real (20%), who holds it (12%), track record (8%). Any fatal finding, such as a token that cannot be sold, caps the score at 10 and marks it Failed. Each token page shows the score, its band, how confident we are, every check and when it ran.
Is a high SheetScore a guarantee?
No. SheetScore is a weighted estimate of rug risk from public on-chain data at the time shown. It is not a guarantee, a calibrated probability or financial advice. A high score means we found fewer of the known rug patterns, not that a token is safe or will hold its price. Nothing is 100% safe.
Why does no token score above 95?
On-chain checks cannot see off-chain risk (a team selling its tokens, a hack, a new kind of trick), so no token scores above 95.
Why does a new token score lower even if every check passes?
Because a short history is a risk in itself: a brand-new token hasn't yet shown it can survive, and a few hours of clean checks say little about what its creators will do next. On-chain checks cannot see a dev dump or a bundled sell, so a short track record limits the score. SheetScore caps scores by age: 50 under 1 day, 64 under 7 days, 79 under 30 days, 89 under 90 days, and up to 95 after that. A token younger than 7 days can't score above 64 however many checks it passes.
What does a Failed SheetScore mean?
At least one fatal check failed: for example the token cannot be sold, someone can mint or freeze it at will, someone else can move holders' tokens, a sell tax is above 10%, or the liquidity collapsed or was pulled (down more than 80% from its 7-day peak). The score is capped at 10 and DexSheet shows no buy links, swaps or referral codes for the token.
How often is SheetScore updated?
When a token first qualifies for our list, then every 6 hours while it is hot and every 24 hours after that, plus immediately if its liquidity drops by more than half between runs. Each page shows when the score was last checked.
What does an Unrated SheetScore mean?
Our core checks could not run (a data source was down or returned nothing), so we show no number. Treat the token as unchecked.
Disclaimer
SheetScore is a weighted estimate of rug risk from public on-chain data at the time shown. It is not a guarantee, a calibrated probability or financial advice. A high score means we found fewer of the known rug patterns, not that a token is safe or will hold its price. Nothing is 100% safe. Nothing on DexSheet is financial advice.