The rules.
Everything ONE PAD does, in plain words. The numbers on this page are read live from the same API the product runs on.
The lock
When a coin launched on ONE PAD goes live on pump.fun, its ticker is locked for 60 minutes. The hour is counted by ONE PAD’s own clock, from the moment the coin is live; the countdown you see everywhere is that clock, not yours.
While the lock runs, nobody can launch that ticker on ONE PAD: not the same letters, and not a look-alike (next section). The lock is a single row taken in one step, so if two people launch the same ticker at the same instant, exactly one of them gets it and the other is told it is locked.
When the hour ends the ticker is free again. Any copies that were flagged during the hour stay on the record.
What counts as the same ticker
Three things, strongest first. Exact: the same letters, whatever the case, the dollar sign or spaces. Look-alike: characters that read as the same letters. Same name: a different ticker on a coin with the same name, when the name is 4 or more characters.
To compare two tickers, ONE PAD reads each one the same way: upper-case it and drop the $ and spaces; turn letters from other alphabets that look Latin (a Cyrillic М, О, А, Е, Р, С, Т, Х; Greek Α, Β, Ο, Ρ and so on) into the Latin letter; remove accents; turn the digits people swap in for letters back into letters (0 O, 1 I, 3 E, 4 A, 5 S, 7 T, 8 B); and drop everything else (dots, dashes, emoji, invisible marks). Two tickers that read the same are the same ticker.
| Someone types | Read as | Counts as | Launching it on ONE PAD | Deployed on pump.fun |
|---|---|---|---|---|
$moggy | MOGGY | Exact | Refused while it is locked | Flagged as a vamp |
M0GGYa zero for the O | MOGGY | Look-alike | Refused while it is locked | Flagged as a vamp |
МOGGYCyrillic М (U+041C) | MOGGY | Look-alike | Refused: not a ticker here (A to Z and 0 to 9 only) | Flagged as a vamp |
m.o.g.g.ydots between the letters | MOGGY | Look-alike | Refused: not a ticker here (A to Z and 0 to 9 only) | Flagged as a vamp |
MÖGGYan accent | MOGGY | Look-alike | Refused: not a ticker here (A to Z and 0 to 9 only) | Flagged as a vamp |
MOGGY2 | MOGGY2 | Different | Allowed | Not a copy |
MOG named “Moggy”a different ticker, the same name | MOG | Same name | Allowed | Flagged as a vamp |
ONE PAD’s launch form only takes 1 to 10 letters or digits, so a ticker with a Cyrillic letter, an accent or dots is refused as “not a ticker” there. pump.fun takes anything, so the watcher reads what it finds there with the same rules and flags the copy. A same-name copy is flagged but cannot be refused, because the name is not part of the ticker.
Tickers launched somewhere else
ONE PAD also refuses a ticker that someone else launched on pump.fun in the last 60 minutes (this check is on right now), so ONE PAD never hosts a vamp itself. The launch form says “taken” and tells you when the ticker frees up.
This only covers what the watcher heard: a ticker launched there a moment ago may not be known yet.
The watcher
The watcher listens to pump.fun’s stream of new tokens (through PumpPortal) in passes about once a minute, and keeps what it hears for a few hours. Every token that is not ONE PAD’s own is checked against every locked coin: if its ticker (exact or look-alike) or its name matches, and it was deployed inside that coin’s lock, it is flagged as a vamp.
The gaps between passes are covered by a backfill that searches Jupiter’s token index for each locked ticker, which also finds copies on other Solana launchpads. A flag records the token’s address, the wallet that deployed it, which kind of match it was, and how many seconds after the original it appeared.
Flags show on the coin’s page, on the Vamps page, on the live wire and through the API below. Right now the watcher is …, last heard …, and in the last hour it saw … new tokens, … of which reused a ticker already launched that hour.
The watcher can only flag what it hears, so a flag can arrive a little after the copy appears. It never blocks anything: nobody can stop a deploy on pump.fun.
Fees
Launching is free. ONE PAD’s treasury pays the cost of creating the coin (about 0.0115 SOL ) and deploys it through pump.fun. You give a wallet address, nothing else.
pump.fun pays a coin’s creator a fee on every buy and sell: 0.30% of volume at the rate ONE PAD’s coins are charged today. ONE PAD splits that fee at birth, inside pump.fun’s own fee-sharing program: 80% to your wallet, 20% to ONE PAD. It is a one-shot lock: once it is written there is no instruction that changes it, for you or for ONE PAD.
The rate is pump.fun’s, not ONE PAD’s, and pump.fun can change it. What a coin earns depends on its trading volume; most coins never trade much.
Limits
- The lock
- 60 minutes from the coin going live
- Launches per wallet, per day
- 3
- Launches per person, per day
- 3 (counted with a salted hash of the address that changes daily; the address itself is not kept)
- Launches on ONE PAD, per day
- 150
- Between your launches
- 2 minutes
- Ticker
- 1 to 10 letters or digits, A to Z and 0 to 9
- Name
- up to 32 characters
- Picture
- PNG, JPEG, GIF or WebP, up to 1.5 MB after the square crop. No picture: ONE PAD draws the coin’s card for you.
A short list of banned words is refused in tickers, names and descriptions; the form tells you when one is hit.
The API
Public JSON, no key, no sign-up, cached for a few seconds at the edge. Terminals and bots can ask whether a token is a flagged copy before they show it. Only /api/is-vamp sends CORS headers (any origin); the other routes are for servers and scripts.
GET /api/is-vamp?mint=<address>
Is this token a flagged copy? verdict is "vamp" (with the flag and the coin it copied), "original" (a coin launched on ONE PAD) or "unknown". A bad address gets a 400.
curl -s "https://your-pad-host/api/is-vamp?mint=<address>"{
"mint": "<address>",
"verdict": "vamp",
"vamp": {
"ticker": "M0GGY", "name": "Moggy Official",
"match": "lookalike", // "exact" | "lookalike" | "name"
"creator": "<wallet that deployed it>",
"afterSec": 840, // seconds after the original's lock started
"deployedAt": 1792236900000, "detectedAt": 1792236901200,
"original": { "mint": "<address>", "ticker": "MOGGY", "lockUntil": 1792240349442, ... },
"urls": { "pump": "...", "dexscreener": "...", "solscan": "..." }
},
"coin": null // set instead of "vamp" when verdict is "original"
}GET /api/check?ticker=MOGGY&name=Moggy
What the launch form shows while you type: status is available, locked (with the ONE PAD coin holding it and until when), taken (launched on pump.fun inside the hour, with when it frees up), invalid or blocked.
curl -s "https://your-pad-host/api/check?ticker=M0GGY"{
"ticker": "M0GGY", "key": "MOGGY", "lockMinutes": 60,
"status": "locked",
"reason": "$M0GGY reads as $MOGGY, which is locked on PAD.",
"lock": { "mint": "<address>", "ticker": "MOGGY", "name": "Moggy", "from": 1792236749713, "until": 1792240349442, "vamps": 2 },
"outside": null
}GET /api/vamps?original=<mint>&creator=<wallet>&limit=40&cursor=
Every flagged copy, newest first. Filter by the coin it copied or the wallet that deployed it. The first page also carries deployers: the wallets with the most vamps. Pass the returned next back as cursor for the next page.
curl -s "https://your-pad-host/api/vamps?limit=10"Also public
- GET /api/coins?sort=new|locked|mcap|vamps coins launched on ONE PAD
- GET /api/coin/<mint> one coin with its vamps and its wire
- GET /api/wire the live wire: launches, flags, graduations
- GET /api/dupes tickers launched 2+ times on pump.fun in the last hour
- GET /api/stats counts, limits, the split, the watcher’s state and the server clock
What ONE PAD does not do
- It cannot stop anyone deploying a copy on pump.fun. It refuses it here and flags it everywhere else.
- It does not vet, audit or endorse any coin. A lock says nothing about whether a coin is safe or will go up.
- It does not hold your fees. The split is set at birth in pump.fun’s own program.
- It is not financial advice. Memecoins are volatile and most lose all of their value.