Rugpull Scorer

Score any ERC-20 token contract from 0 (safe) to 100 (almost certainly a rug) in one API call. Detects honeypots, owner-power abuse, and known scam-deployer wallets across four EVM chains.

What it does

Paste a token contract address, get back:

The scorer combines static contract analysis, a simulated buy/sell, deployer-wallet reputation, and liquidity-pool checks. It does not predict future price — it answers "can this code take my money even if I do nothing wrong."

Using the web UI

Go to threatchain.io/rugpull-check, paste the token contract address, pick a chain, click Scan Contract. Results in 3–10 seconds.

The results page shows the score headline, list of triggered flags with plain-English explanations, a tradeability verdict, and a button to share the report.

Score methodology

The score is the sum of triggered-flag penalties, capped at 100. Each flag carries a point value reflecting how definitively it indicates a scam. Flags are grouped into four families — honeypot, owner-power, deployer, liquidity — and the score aggregates them with family-level caps so no single family can overwhelm the result.

FamilyMax contributionRuns what
Honeypot50Simulated buy/sell on a forked node
Owner power40Static analysis of onlyOwner functions and pause logic
Deployer reputation30Cross-reference against ThreatChain's scam-deployer cluster DB
Liquidity25LP lock status, concentration, and age

Risk buckets

ScoreBucketWhat to do
0–14SafeNo rug indicators. Still do your own research on fundamentals and team.
15–34Low riskMinor flags — usually small owner-power items. OK for most traders with standard caution.
35–59MediumOwner holds real leverage (mint, pause, blacklist). Proceed with position-sizing caution.
60–84HighMultiple rug indicators active. Most of these tokens drain within 30 days.
85–100CriticalConfirmed honeypot or known rug-deployer. Do not buy.

Flag reference

Full list of 27 flags across four families. Each flag shows its point value when triggered.

Honeypot flags

HP-CANT-SELL
Simulated sell transaction reverts. You can buy but cannot sell — textbook honeypot.
+50 points · Critical
HP-HIGH-SELL-TAX
Sell tax > 50%. You get less than half your money out when selling.
+30 points · High
HP-ASYMMETRIC-TAX
Sell tax at least 3× buy tax. Classic asymmetric-extraction pattern.
+20 points · Medium
HP-BLACKLIST-REACHABLE
Owner has a blacklist or equivalent function that can block specific addresses from selling.
+25 points · High

Owner-power flags

OW-MINTABLE
Owner can mint unlimited new tokens. Instant supply inflation = instant price destruction.
+20 points · High
OW-PAUSABLE-TRANSFERS
Owner can pause all transfers. Holders are frozen until owner decides otherwise.
+15 points · Medium
OW-SET-TAX-UNCAPPED
Owner can raise transfer tax with no maximum. Can be pushed to 100% (honeypot at will).
+25 points · High
OW-UPGRADEABLE-UNLOCKED
Token is a proxy and owner can upgrade implementation with no timelock. Contract code can change to anything.
+20 points · High
OW-HIGH-HOLDINGS
Owner or deployer holds > 30% of supply. Big dump risk.
+10 points · Medium
OW-OWNER-IS-EOA
Owner is a single externally-owned account (no multisig). One private-key compromise = full control.
+8 points · Low

Deployer flags

DP-KNOWN-SCAMMER
Deployer wallet previously deployed confirmed rug tokens. Cross-referenced against ThreatChain's rug-deployer cluster DB.
+30 points · Critical
DP-FRESH-WALLET
Deployer wallet funded less than 24 hours before contract deployment. Fresh-wallet pattern heavily correlates with hit-and-run launches.
+10 points · Medium
DP-TORNADO-FUNDED
Deployer wallet funded from a mixer. Common pattern for scammers avoiding attribution.
+15 points · Medium

Liquidity flags

LQ-NO-LOCK
LP tokens are not locked and not burned. Deployer can pull liquidity at any time.
+25 points · High
LQ-SHORT-LOCK
LP tokens locked for less than 30 days. Lock expiry is a rug-pull trigger.
+10 points · Medium
LQ-SINGLE-POOL
All liquidity in one pool (usually Uniswap V2 on the primary pair). No market depth elsewhere.
+5 points · Low
LQ-DEPLOYER-DOMINATES-LP
Deployer wallet holds > 80% of LP tokens. They control exit liquidity entirely.
+15 points · Medium

API reference

GET/rugpull/score?address=<0x…>&chain=<chain>
curl "https://threatchain.io/rugpull/score?address=0xtokenaddr...&chain=ethereum"

Response shape

{
  "address": "0xtoken...",
  "chain": "ethereum",
  "name": "Example Token",
  "symbol": "EXAMPLE",
  "decimals": 18,
  "score": 72,
  "bucket": "high",
  "tradeable": true,
  "buy_tax": 5.0,
  "sell_tax": 95.0,
  "flags": [
    { "id": "HP-HIGH-SELL-TAX", "severity": "high", "points": 30, "evidence": "sell tax 95% observed in simulation" },
    { "id": "OW-SET-TAX-UNCAPPED", "severity": "high", "points": 25, "evidence": "setTax(uint256) has no maximum" },
    { "id": "DP-FRESH-WALLET", "severity": "medium", "points": 10, "evidence": "deployer funded 3h before deploy" }
  ],
  "checked_at": "2026-04-20T16:18:00Z"
}

Scores are cached for 30 minutes per (address, chain). Pass &refresh=true to force re-scoring (counts against your enrichment quota).

Chain coverage

BSC and BNB Chain are high on the roadmap — most rug-pulls happen there. Contact us if you need it urgently.

Integrations

Bookmarklet

Drag this link to your bookmarks bar, then click it on any etherscan/arbiscan/basescan token page to score it instantly:

javascript:(()=>{
  const a = (location.pathname.match(/\/token\/(0x[a-fA-F0-9]{40})/)||[])[1];
  if(!a) return alert("Open an etherscan /token/0x... page first");
  const chain = location.host.includes("arbi")?"arbitrum":location.host.includes("base")?"base":location.host.includes("polygon")?"polygon":"ethereum";
  window.open(`https://threatchain.io/rugpull-check?address=${a}&chain=${chain}`);
})();

Telegram rug-check bot

import httpx, os
from telegram.ext import Application, MessageHandler, filters

async def handle(update, ctx):
    txt = update.message.text.strip()
    if not txt.startswith("0x"): return
    r = httpx.get(f"https://threatchain.io/rugpull/score?address={txt}").json()
    flags = "\n".join(f"• {f['id']} (+{f['points']})" for f in r.get("flags", [])[:5])
    msg = f"{r.get('name','?')} ({r.get('symbol','?')})\nScore: {r['score']} ({r['bucket']})\nTradeable: {r['tradeable']}\n\n{flags}"
    await update.message.reply_text(msg)

app = Application.builder().token(os.environ["TG_TOKEN"]).build()
app.add_handler(MessageHandler(filters.TEXT, handle))
app.run_polling()

Limitations

False-negative honest take: A well-funded scam team can launch a contract that scores < 20, trade long enough to get listed, then upgrade or exploit a subtle backdoor later. No static score catches that. Pair with our Wallet Check on the deployer and our SolidGuard audit on the contract.

FAQ

Q — Does scanning leave a trace?
We simulate buy/sell on a forked node off-chain. The on-chain token isn't touched.

Q — Why did my safe token score Medium?
Likely owner power — mint or pause capabilities common in modern tokens add points even when governance is trusted. Check the flag list to see which specifically triggered.

Q — Can I submit a token I suspect is a rug?
Submit via the contact form with category "Security issue" and the contract address. Confirmed scams go into the deployer database and flag future deploys from the same wallet.

Q — How accurate is the score historically?
Last internal audit: tokens scored ≥ 60 had a 82% 30-day rug rate. Tokens scored < 15 had a 3% 30-day rug rate (mostly failed legitimate projects, not scams).