Top XRPL tokens by recent on-ledger trade count. Counts every token Payment plus every AMM deposit/withdraw.
XRPL tokens are placed on a 5-tier ladder — Verified, Self-described, Labeled, Bare, Unknown — based on what evidence exists for the issuer. Only Verified is a two-way TOML proof; the other tiers surface weaker signals honestly. Tokens with no identity land in Unlabeled below. How we verify →
Liquidity and volume figures reflect AMM activity only. Order-book DEX trading isn't included yet.
Zone A counts trades. Zone B counts the dollars sitting in liquidity pools. Two different questions, two different units — deliberately.
| pool pair | TVL (USD) | share of LP bar |
|---|---|---|
| XRP/RLUSD | $4,718,731.71 | 81.33% |
| XRP/USDC | $638,031.97 | 11.00% |
| XRP/BTC.Bitstamp | $288,356.08 | 4.97% |
| XRP/SOLO | $117,379.49 | 2.02% |
| XRP/SOIL | $24,035.26 | 0.41% |
| XRP/ZRP | $15,381.51 | 0.27% |
| XRP/mTBILL | $95.63 | 0.00% |
| USD.Bitstamp/USDC | $1.16 | 0.00% |
Zone A counts trades (activity). Zone B counts dollars where they sit (depth). Mixed units are intentional — activity and depth are different signals, and one bar showing both would lie about both.
Each token falls in a lane by how well its issuer has proven who they are — from fully verified down to no claim at all. Its color shows what the token says it is.
TOKEN_NAMES.md in the public repo — open a PR to add oneWhat "trades" means here: every on-ledger event that moves a token — token Payments and AMM deposits/withdraws. It's a raw activity count, not a USD volume.
Why some show as 40-char hex: XRPL allows tokens to use a 160-bit currency code. We decode it to ASCII when possible; when the bytes aren't text, we show truncated hex. Tokens we've labeled appear with a friendly name + category — to add a label, see
TOKEN_NAMES.md in the repo.
XRP price per token is now derived from AMM pool reserves for tokens with at least 2,500 XRP of XRP-paired liquidity. Tokens below the floor render a dash — rather than a thin-pool fiction. Per-trade XRP volume requires capturing trade amounts in the stream handler and is queued as a separate change.