doomer - solana rug scanner
// scoring rules// product

How to read a doomer scan: every signal, in plain English.

The verdict word is the headline. Everything else on the page tells you why. A guided tour of the cope score, the risks list, and the on-chain signals.

8 min readdoomer
Vintage mechanical adding machine keys with numbers, black and white

The verdict is the headline. The page is the receipts.

We have a separate piece on what the four verdict words mean. This one is about everything else on the scan page: the cope score, the severity chips, the outcomes panel, the risks list, and the underlying signals that fed all of it.

The verdict is one word because we wanted a card you could read in a glance. But if you're going to actually trust it, or argue with it, you should know how to read the rest. This is that.

The four things on the card

Front of the page, top to bottom, left to right:

  1. The verdict word. SAFU, RISKY, or RUG. The bucket the cope score landed in. Covered in the other piece.
  2. The severity chips. "2 HIGH, 4 MED, 1 LOW" right under the verdict. The literal count of triggered signals at each severity level. Medium and low are real and worth reading even on a SAFU card. Ignored severity chips are a mistake we see often.
  3. The cope score. The 0 to 100 number on the right with the bar. Higher is worse. The bar visualizes it. Score is finer-grained than the tier, so it tells you whether you're at the safe edge of RISKY or basically the rug edge.
  4. The outcomes panel. "Of similar tokens, 62% got rekt at 24h." This is empirical, drawn from the cohort of recent scans that scored in the same bin, then checked against the +24h snapshot. It is not a forecast for this specific token; it's the base rate for tokens that scored like this one. Base rates beat opinions.

Below the card sits the risks list, then the structural breakdown (holders, liquidity, dev wallet, funder wallet, age, volume). The card is the summary; the page is the receipts.

The cope score, in depth

The cope score is a weighted sum of every triggered risk signal. Each signal has a severity (low, medium, high), each severity has a base point value, and each signal has a weight that sits in front of that.

The scoring is monotone: more risks triggered, or more severe risks triggered, only ever moves the score up. There is no signal that subtracts from cope. Clean structure means lots of unlit signals; you don't earn negative points for being clean, you just stay low.

A few things this design choice means in practice:

  • The score doesn't price the upside. There is no "this token has good fundamentals" input, because the scanner can't read that. The score is a downside meter, not a balance sheet.
  • Score 0 is rare. Most real tokens have at least a low-severity flag (recent deploy, modest holder count, etc.). A 4 or a 7 on a brand-new token isn't bad; it's normal.
  • Score 70+ is bad. By the time the cope hits the 70s, multiple medium signals have stacked or a high signal has fired. Very few tokens in this range survive the +24h checkpoint.

The bin boundaries between SAFU, RISKY, and RUG are tuned against actual outcome data and they shift when calibration says they should. The rule version on metrics tells you which iteration of the weights you're looking at.

The signals, in plain English

A glossary, because half the words on a scan page are jargon and the other half are jargon pretending not to be:

  • Mint authority. Whoever holds this can print more tokens. Should be revoked on day one for almost every legitimate launch. An active mint authority is a high-severity flag.
  • Freeze authority. Whoever holds this can freeze a specific wallet's tokens. Same deal: should be revoked. An active freeze authority is a high-severity flag.
  • LP (liquidity pool) lock. The dev's LP tokens are timelocked or burned, so the liquidity can't be yanked. Unlocked LP is the classic rug vector. A 24-hour "lock" is not really a lock; it's a delay. We treat it that way.
  • Top holder concentration. % of supply held by the top 10 or 20 wallets. High concentration means a few wallets can dump and end the chart. We discount holders that are clearly the LP pool itself, the burn address, or known CEX wallets, so the number isn't inflated by those.
  • Sniper share. Wallets that bought in the first block (or first slot) of trading. High sniper share means most of the float is held by people who came to flip, not to hold.
  • Bundler share. Wallets that bought through automated bundlers in the first transactions. Similar to snipers but more coordinated, and a stronger signal of an inside launch.
  • Dev wallet. The wallet that deployed the token. We look at what else it has done. Patterns repeat. If the wallet's last six tokens went to zero, this one probably will too.
  • Funder wallet. The wallet that funded the dev wallet. We look at that wallet's history too. The pattern often repeats one hop deeper, which is why "this dev is new" sometimes really means "this funder is the same as last time."
  • Age. How long the token has been alive. Fresh tokens carry more uncertainty by default; very old tokens carry more weight in their history.
  • Liquidity depth. How much SOL or USDC actually sits in the pool. Shallow liquidity means a small sell wrecks the chart. We report the dollar value, not just the token-side number, because the token-side number flatters thin pools.
  • Volume. Real volume, with wash filters. A token can show "$2m volume" that is one wallet trading with itself; we try to subtract that out before scoring.

Each of these contributes to the cope score with a weight that's been fit against actual outcomes. No signal is decisive on its own; combinations are. And every triggered signal shows up in the risks list with a one-line explanation, sorted by severity, so you can see what fed the verdict instead of having to take it on faith.

The outcomes panel, more carefully

The panel that says "of similar tokens, 62% got rekt at 24h" deserves its own paragraph because people misread it.

It is not a forecast for the token in front of you. It is the base rate for the score-bin cohort: every token recently scanned that landed in the same cope-score range, checked against the +24h snapshot, summarized as a percentage. It's the answer to "historically, when the scanner has said this, what's happened next?"

So a SAFU token might still show "30% of similar tokens got rekt at 24h." That does not mean this specific SAFU token has a 30% chance of rugging. It means the SAFU bucket as a whole, in the recent past, took heavy damage 30% of the time. Some of that is structural risk we couldn't see. Some of it is just chart fade that has nothing to do with rugs. The panel doesn't separate the two.

You should still read it. Base rates beat opinions, including ours.

What about when the scanner is unsure

Sometimes the data is incomplete. A token just launched and there's no holder distribution yet. An indexer is lagging. A pool just migrated. When that happens, we don't fake confidence: the card stays in pending state for a few seconds while the deep checks finish, then commits to a tier.

If a deep signal genuinely can't be read (an API failed, a vendor returned junk), we degrade gracefully. The affected check is skipped rather than counted as zero. The score reflects what we could read; the risks list says what we couldn't. You'll see a note when this happens.

Caching matters here too. If you scan the same token twice in a minute you'll get the same answer because the underlying signals don't move that fast. If you scan it again in an hour, things may have shifted and the verdict can flip. We don't pretend a call from ten minutes ago is still live.

When to override the verdict

A verdict is one input, not the whole decision. There are situations where the scanner is structurally weaker and the rest of your judgment should weigh more:

  • Brand-new tokens (under ten minutes old). Age, volume, and holder distribution are all noisy. SAFU on a token that launched 90 seconds ago carries less weight than SAFU on a token that's been alive an hour. RISKY on a 60-second-old token is mostly the model saying "I don't have enough information yet."
  • Migrating tokens. A token leaving its bonding curve and entering a real AMM temporarily looks weird. Liquidity briefly halves, holder counts re-baseline. Give it a beat and rescan.
  • Tokens with very thin liquidity. Structural reads still work, but the cope score has less to chew on, and the outcomes cohort for that bin is smaller. Small numbers, big variance.
  • Tokens whose risk lives off-chain. The scanner reads on-chain data. If the risk is "the team is going to fake a partnership and dump on Twitter," we cannot see that. Read the room.

These are not reasons to ignore the verdict. They're reasons to read the risks list and the score together instead of just glancing at the word and acting.

Using the scan in practice

A workflow that holds up across the four verdict tiers:

  1. Glance the verdict and the score. If SAFU + low score, you've got the cheap version of confirmation. If RUG, you're done. Close the tab.
  2. Check the severity chips. Any HIGH on a SAFU card is a contradiction (we shouldn't issue SAFU with a HIGH triggered). If you see one, rescan; the card may be mid-update.
  3. Read the risks list. Every triggered signal is one line. Low and medium signals on a SAFU card are still real information.
  4. Check the outcomes panel. The base rate for tokens in this score bin. Weigh that more than the verdict word if you're getting comfortable with the score.
  5. Scroll once. Look at the holder concentration, the funder wallet, the age. If anything in the structure feels off in a way the model didn't catch, trust that. You have context the scanner doesn't.

The scanner is a tool, not an oracle. Its job is to surface the structure, and yours is to make the actual call.

TL;DR

Word is the bucket. Number is the score. Chips are the count. Panel is the base rate. List is the receipts. Read all five before you act on any one of them.

If you came here for what each verdict word actually means, that's the other piece.

// faq

What does the cope score actually measure?
It's a weighted sum of every triggered risk signal (mint authority, LP lock, holder concentration, sniper share, dev wallet history, age, liquidity, more). Higher means worse. Weights are fit against actual outcomes, not picked by hand, and they get retrained as new patterns show up on chain.
What does "% of similar tokens got rekt" mean?
It's the empirical base rate for tokens that scored like this one. We look at the rolling cohort of recent scans in the same score bin, check what happened to them at the +24h snapshot, and report the share that took heavy damage. It's a base rate for the bucket, not a forecast for the specific token.
Does the scanner check the team or the project's social media?
No. The scanner reads on-chain data and on-chain data only. Team identity, social presence, partnerships, and roadmap are off-chain risks we don't claim to evaluate. A clean SAFU verdict still leaves the off-chain layer to you.
How often should I rescan a token?
Before sizing up, basically always. Devs change behavior. LP can be unlocked. Wallets wake up. The scan stays free; rescanning is the cheap defense.
What's the difference between sniper share and bundler share?
Snipers are wallets that bought in the first block via mempool or fast RPC; bundlers are wallets that bought via automated bundle transactions, usually pre-arranged. High sniper share means a lot of the float is in fast hands. High bundler share usually means an inside launch.
Why does a SAFU token sometimes show low or medium risks in the list?
Because the verdict is a tier, not "zero risks." SAFU means none of the triggered signals were severe enough to bump the token to RISKY or RUG. Low and medium flags can still be on the page, and they're worth reading. A SAFU card with five medium flags is structurally different from a SAFU card with none.

// read next