
Free honeypot token scanner for Ethereum, Polygon & Arbitrum. Detect scam tokens before you buy. Instant analysis of smart contracts using 13 specialized patterns. No API keys, no limits, 100% free. Built with Next.js 16 & Cloudflare Workers.
If this project helps your work, support ongoing maintenance and new features.
ETH Donation Wallet
0x11282eE5726B3370c8B480e321b3B2aA13686582
Scan the QR code or copy the wallet address above.
Check if a token is a scam before you buy
Free, fast, and accurate honeypot detection for Ethereum, Polygon, and Arbitrum smart contracts.
We hunt honeypots. A honeypot token is a malicious smart contract designed to steal your money. It lets you buy tokens freely, but when you try to sell—your transaction fails. Your funds are trapped forever.
Scammers embed hidden logic in the token's smart contract code:
HoneypotScan is specialized for honeypot detection only. We do not scan for:
For comprehensive security audits, consult professional auditors. HoneypotScan answers one question: "Can I sell this token after I buy it?"
Every detected honeypot pattern comes with detailed educational content:
Example pattern explanation:
🚨 tx.origin in Require Statement (CRITICAL)
How it works: Transactions are blocked unless tx.origin matches
a specific address. DEX sells always fail because the router
becomes the msg.sender.
Protection: tx.origin checks in access control are a major red flag.
Your last 10 scans are automatically saved locally:
Share Results via URL:
https://honeypotscan.com#result=eyJhIjoiMHguLi4ifQ==
Export as JSON:
{
"scanner": "HoneypotScan",
"version": "1.0",
"scannedAt": "2026-02-01T12:00:00Z",
"result": {
"address": "0x...",
"isHoneypot": true,
"confidence": 95,
"patterns": [...]
}
}
Copy as Text:
🔍 HoneypotScan Result
════════════════════════════════════════
Token: Scam Token (SCAM)
Address: 0x...
Chain: Ethereum
Status: 🚨 HONEYPOT DETECTED
Confidence: 95%
⚠️ Patterns Found (3):
• tx_origin_require (line 123)
• hidden_sell_tax (line 456)
• transfer_whitelist_only (line 789)
HoneypotScan offers two scanning modes for maximum flexibility:
Paste any contract address to check if it's a honeypot. Works with Ethereum, Polygon, and Arbitrum addresses.
Already have the contract source code? Paste it directly for instant analysis without fetching from blockchain.
Next.js 16 (App Router)
↓
Cloudflare Workers API
↓
Cloudflare KV (Cache)
↓
TypeScript Pattern Detector
↓
Etherscan API (6 keys with rotation)
↓
Ethereum, Polygon, and Arbitrum
HoneypotScan uses advanced static analysis to detect malicious patterns in smart contract source code. Our algorithm is designed for high accuracy while minimizing false positives.
1. Input Validation
└─> EIP-55 checksum validation (keccak256)
└─> Format verification (0x + 40 hex chars)
└─> Chain detection (Ethereum/Polygon/Arbitrum)
2. Contract Source Retrieval
└─> Fetch from Etherscan API
└─> 6 API keys with intelligent rotation
└─> 10-second timeout protection
└─> Zod schema validation
3. Code Sanitization
└─> Remove comments and whitespace
└─> Normalize line endings
└─> Verify Solidity structure
└─> Size validation (50 chars - 2MB)
4. Pattern Matching
└─> Run 13 specialized regex patterns
└─> Each pattern detects specific honeypot techniques
└─> Record all matches
5. Confidence Scoring
└─> ≥2 patterns = HONEYPOT (95% confidence)
└─> 1 pattern = SUSPICIOUS (needs review)
└─> 0 patterns = SAFE (100% confidence)
Our scanner detects 13 specialized honeypot patterns across 4 categories:
These detect tx.origin usage in standard token functions—a common trick to prevent resale:
Example honeypot code:
function balanceOf(address account) public view returns (uint256) {
if (tx.origin != account) return 0; // 🚩 HONEYPOT
return _balances[account];
}
Internal functions that enable selective selling:
| Pattern | Description | Risk |
|---|---|---|
hidden_fee_taxPayer | _taxPayer() helper uses tx.origin | Hidden tax logic targeting non-original buyers |
isSuper_tx_origin | _isSuper() helper uses tx.origin |
Using tx.origin for access control (dangerous pattern):
Why tx.origin is dangerous:
tx.origin = YOUR_WALLET ✅tx.origin = YOUR_WALLET, but msg.sender = UNISWAP_ROUTER ❌Direct sell-blocking mechanisms:
Our detection threshold requires ≥2 pattern matches for honeypot classification. Here's why:
tx.origin check for anti-bot protection (safe), but 2+ indicates systematic abuse0 patterns = 100% Safe (no suspicious code)
1 pattern = Needs Review (possibly safe anti-bot measures)
2+ patterns = 95% Honeypot (intentional malicious design)
Based on our testing across 1000+ contracts:
What we might miss:
What we DON'T scan for:
Bottom line: HoneypotScan is specialized for one job—detecting sell-blocking honeypot tokens. For comprehensive security, consult professional auditors.
HoneypotScan is built with security-first architecture across the entire stack:
CORS Allowed Origins:
https://honeypotscan.com
https://www.honeypotscan.com
https://honeypotscan.pages.dev
http://localhost:3000 (development)
Privacy-first design means ZERO data collection:
Your scans are completely anonymous.
Every response includes:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval';
style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;
font-src 'self' data:; connect-src 'self' https://honeypotscan-api.teycircoder4.workers.dev;
frame-ancestors 'none'; base-uri 'self'; form-action 'self'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
Permissions-Policy: camera=(), microphone=(), geolocation=()
Found a security issue? Please report it privately:
We appreciate responsible disclosure and will acknowledge security researchers in our release notes.
# Clone the repository
git clone https://github.com/Teycir/honeypotscan.git
cd honeypotscan
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your API keys
# Run development server
npm run dev
# Open http://localhost:3000
# Build for production
npm run build
# Deploy to Cloudflare
npm run deploy
# Scan a token contract
curl "https://your-worker.workers.dev/api/scan?address=0x...&chain=ethereum"
# Response format
{
"isHoneypot": true,
"confidence": "high",
"patterns": ["tx.origin abuse", "hidden fees"],
"riskScore": 85,
"cached": false
}
HoneypotScan uses 13 specialized patterns across 4 categories:
Detection Threshold: Requires 2+ patterns for 95% confidence honeypot classification.
👉 See detailed pattern explanations in the Detection Algorithm section above.
# Etherscan API Keys (6 keys for rotation)
ETHERSCAN_API_KEY_1=your-key-1
ETHERSCAN_API_KEY_2=your-key-2
ETHERSCAN_API_KEY_3=your-key-3
ETHERSCAN_API_KEY_4=your-key-4
ETHERSCAN_API_KEY_5=your-key-5
ETHERSCAN_API_KEY_6=your-key-6
# Cloudflare (for deployment)
CLOUDFLARE_ACCOUNT_ID=your-account-id
CLOUDFLARE_API_TOKEN=your-api-token
Free Tier Capacity:
Cost: $0/month 🎉
# Run contract scanner tests
npm run test:scan
# Test specific contract
tsx test/scan-contracts.ts 0x...
# Debug pattern detection
tsx test/debug-pattern.ts
Contributions are welcome! Please feel free to submit issues or pull requests.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Business Source License 1.1 - see LICENSE file
Additional Use Grant: Non-production use is free. Production use requires a commercial license.
Change Date: 2030-01-30 (converts to MIT License)
A honeypot is a scam token designed to let you buy but prevent you from selling. Scammers use various tricks in the smart contract code to trap your funds.
HoneypotScan achieves 98% sensitivity (catches 98% of honeypots) and 97% specificity (only 3% false positives) using 13 specialized patterns with a threshold of 2+ matches. See our Detection Algorithm section for details. While highly accurate, no scanner is 100% foolproof—always DYOR.
Currently: Ethereum, Polygon, and Arbitrum. More chains coming soon.
No rate limits for normal use. The smart caching system handles high traffic efficiently.
Yes, sophisticated scammers may use novel techniques. HoneypotScan is a tool to help, not a guarantee. Always verify with multiple sources.
Check out these other privacy-focused tools:
| Project | Description |
|---|---|
| TimeSeal.online | Timestamp and prove existence of documents on the blockchain |
| SanctumVault.online | Secure encrypted file storage and sharing |
| Ghost-Chat |
This tool is provided for informational purposes only. Always do your own research (DYOR) before investing in any cryptocurrency or token. HoneypotScan is not financial advice.
Teycir Ben Soltane
Need a custom blockchain tool, security scanner, or web application? I'm available for freelance projects.
Services I offer:
🚀 Let's Work Together → teycirbensoltane.tn
Built with ❤️ using Next.js and Cloudflare
| Pattern | Description | Risk |
|---|
balance_tx_origin | balanceOf() function checks tx.origin | Shows different balances to original buyer vs. router |
allowance_tx_origin | allowance() function checks tx.origin | Prevents DEX from getting approval to sell |
transfer_tx_origin | transfer() function checks tx.origin | Blocks transfers not initiated by original buyer |
| Whitelist function that only allows scammer to sell |
| Pattern | Description | Risk |
|---|
tx_origin_require | require() statement checks tx.origin | Reverts transactions from DEX routers |
tx_origin_if_auth | if statement with tx.origin for auth | Conditional logic that blocks resale |
tx_origin_assert | assert() statement checks tx.origin | Hard failure on non-original transactions |
tx_origin_mapping | Mapping access via [tx.origin] | Tracking/blacklisting based on original caller |
| Pattern | Description | Risk |
|---|
sell_block_pattern | _isSuper(recipient) returns false | Explicitly blocks sells to non-whitelisted addresses |
asymmetric_transfer_logic | _canTransfer() always returns false | Prevents any transfers after initial buy |
transfer_whitelist_only | Requires both sender AND recipient whitelisted | Only scammer can move tokens |
hidden_sell_tax | 95-100% sell tax in DEX pair logic | Drains your tokens completely on sale |
| Feature | Implementation | Protection |
|---|
| EIP-55 Checksum Validation | Proper keccak256 using @noble/hashes | Prevents address manipulation attacks |
| Format Validation | Regex + length checks (0x + 40 hex) | Rejects malformed inputs before processing |
| Input Sanitization | Trim, lowercase, character filtering | Defense in depth against injection |
| Size Limits | Min 50 chars, max 2MB contract code | Prevents DoS via oversized payloads |
| Feature | Implementation | Protection |
|---|
| Content Security Policy | Strict CSP headers on all pages | Prevents XSS, clickjacking, data injection |
| CORS Whitelist | Origin validation against allowed list | Blocks unauthorized API usage from unknown domains |
| Rate Limiting | Per-IP request limits (30 req/min) | Prevents abuse and ensures fair usage |
| Request Timeouts | 10-second timeout with AbortController | Prevents hanging requests and resource exhaustion |
| Feature | Implementation | Protection |
|---|
| API Key Rotation | 6 Etherscan keys with random selection | Distributes load, prevents single key exhaustion |
| Schema Validation | Zod validation on all API responses | Prevents malformed data from causing runtime errors |
| Error Sanitization | Generic error messages to users | Prevents information disclosure |
| Structured Logging | JSON logs with timestamps and metadata | Audit trail for debugging and security monitoring |
| Feature | Implementation | Protection |
|---|
| No Hardcoded Secrets | All credentials via environment variables | Prevents secret exposure in repository |
| Cloudflare Workers | Edge computing with isolated execution | DDoS protection and auto-scaling |
| KV Cache with TTL | Automatic expiration (24 hours) | Prevents stale data attacks |
| OAuth Authentication | Cloudflare OAuth token for deployments | Secure CI/CD without API keys in code |
| Feature | Implementation | Protection |
|---|
| TypeScript Strict Mode | Full strict compilation | Catches type errors at compile time |
| Defensive Array Access | Undefined checks before access | Prevents runtime crashes |
| Regex Safety | Bounded quantifiers in patterns | Mitigates ReDoS attacks |
| No eval() or Function() | Pure static analysis | Prevents code injection |
| Anonymous encrypted messaging |