CultScreener
A Solana token conviction analyzer. Track diamond hands, measure holder commitment, and discover tokens with the strongest communities.
How It Works
Conviction Score
The conviction percentage shown on the main leaderboard is the >1 Month diamond hands rate. It measures what percentage of sampled holders have been holding a token continuously for more than 30 days.
- ELITE (75%+) — 3 out of 4 holders are long-term diamond hands
- HIGH (50%+) — Majority of holders are committed
- MID (25%+) — Some committed holders mixed with traders
- LOW (<25%) — Mostly short-term traders
How Hold Time Is Measured
For each holder wallet, CultScreener queries the wallet's Associated Token Account (ATA) directly on the Solana blockchain using getSignaturesForAddress. The oldest transaction on that token account tells us when the wallet first received the token. The hold time is now - firstReceivedAt.
This approach is reliable regardless of how active the wallet is — even if a wallet has done thousands of other transactions, the token-specific account only contains transactions for that token.
Sampling
CultScreener samples up to 250 holders per token. Holders are sourced from the Helius DAS API (getTokenAccounts), sorted by balance, with the bottom 10% (dust wallets) excluded. LP pools and burn wallets are also filtered out.
Diamond Hands Distribution
The Diamond Hands section on each token page shows what percentage of the sample has held for various time periods: >24h, >3d, >1w, >1M, >3M, >6M, >9M. This gives a fuller picture of holder commitment across different timeframes.
Token Pages
Each token detail page shows:
- Price & Market Data — Current price, 24h change, market cap, volume, liquidity. Sourced from GeckoTerminal.
- Token Statistics — Market cap, volume, liquidity, holder count, supply, token age, and page views.
- Conviction Metrics — Holder concentration (top 5/10/20%), token age, fresh wallet detection, locked/burnt supply, and the Diamond Hands distribution.
- Top Holders Table — The largest 20 holders with balances, USD values, supply percentages, and individual hold times.
- Liquidity Pools — Active DEX pools with volume and liquidity data.
Watchlist
Connect your Solana wallet to save tokens to your personal watchlist. You can add tokens from the star button on any token page, and view them from the WATCHLIST pill on the main terminal or the dedicated Watchlist page.
The Watchlist page also shows a global leaderboard of the most watchlisted tokens across all users.
Data Sources
| Data | Source | Notes |
|---|---|---|
| Holder list & hold times | Solana RPC via Helius | DAS API for token accounts, standard RPC for signature history |
| Price, volume, liquidity | GeckoTerminal | Free tier, rate-limited with circuit breakers |
| Token metadata | Helius DAS + on-chain | Name, symbol, logo, social links from on-chain & off-chain JSON |
| Holder count | Jupiter + Helius | Jupiter search API (fast) with Helius DAS fallback |
| Liquidity pools | GeckoTerminal | Pool addresses, reserves, volume per DEX |
| Social links | On-chain + DexScreener | Helius metadata extensions, off-chain JSON, DexScreener for curated tokens |
Cache & Refresh Times
CultScreener caches data at multiple levels to balance freshness with API cost. Here are the current cache durations:
Server-Side Cache
| Data | Cache Duration | Notes |
|---|---|---|
| Per-wallet hold time | 48 hours | Cached per wallet per token. A wallet holding for 30d won't change meaningfully in 48h. |
| Diamond Hands distribution | 3 hours | Full distribution recomputed when cache expires |
| Token price/market data | 1-10 min | Price data: 1 min. Token info: 10 min. |
| Conviction leaderboard | 1 min | Leaderboard query results cached briefly |
| Holder analytics (concentration) | 1 hour | Top holder list and concentration metrics |
| Holder count | 24 hours | From Jupiter/Helius. Cached longer since it changes slowly. |
| Token metadata (name, logo) | 1 hour | Stable data, rarely changes |
Frontend Cache (Browser)
| Data | Cache Duration | Notes |
|---|---|---|
| Token list page | 2 min | Auto-refreshes every 2 minutes |
| Token detail page | 5 min | Price refreshes every 5 minutes with freshness indicator |
| Search results | 2 min | Cached to avoid redundant API calls on re-search |
| Chart/OHLCV data | 5 min | Per interval (1h, 4h, 1d, etc.) |
Background Jobs
| Job | Interval | Notes |
|---|---|---|
| Curated token conviction refresh | 1 hour | Re-analyzes all admin-curated tokens |
| Top token conviction warm | 10 min | Re-analyzes up to 3 most-viewed tokens per cycle |
| Cache warm on startup | Once | Pre-fetches market data for top 20 most-viewed tokens |
| View count flush | 5 sec | Batches page view increments to the database |
Curated Tokens
Site administrators can add tokens to a curated list via the admin panel. Curated tokens:
- Appear on the conviction leaderboard immediately (with 0% conviction until analysis completes)
- Have their conviction data refreshed automatically every hour
- Can display DexScreener banner images and social links on their token page
Technical Details
- Backend: Node.js + Express, PostgreSQL, Redis (BullMQ), deployed on Render
- Frontend: Vanilla HTML/CSS/JS (no build step), static site
- Wallet: Supports Phantom, Solflare, Backpack, Coinbase, Trust, Brave, Exodus
- RPC: Helius for DAS API and standard Solana RPC, with public RPC fallback
- Rate Limiting: Per-IP rate limits on all API endpoints, circuit breakers on external APIs
- Security: Helmet CSP headers, CORS, signature-based replay protection, timing-safe admin auth