Interactive tool · Bitcoin mainnet · Rules as of indexer 1.9.3
SRC-20 payload validator
Paste an SRC-20 JSON operation. Every field is checked against the rules the Bitcoin Stamps indexer enforces, and each result explains itself, including whether a failure means the transaction is excluded or merely recorded as invalid.
This tool is a single static JavaScript file. There is no request, no logging, no storage and no analytics of any kind. You can read assets/validator.js and confirm it.
The validator needs JavaScript. Every other page on this site works without it.
Paste the JSON payload only, not the raw transaction hex.
Examples
Load an example:
Result
What this tool cannot know
A payload can be perfectly well formed and still fail on chain. These checks need the ledger:
The BRC-20 differences that catch people out
Both protocols use the field names p, op, tick, max, lim, amt and dec. That similarity is the problem: a payload copied from a BRC-20 guide looks right and behaves differently.
| Topic | SRC-20 | BRC-20 |
|---|---|---|
| Protocol string | src-20, compared case-insensitively. The hyphen is required. | brc-20 |
| Where the data lives | Transaction output scripts, which stay in the UTXO set. | Input witness data, under the witness discount. |
| Ticker length | 1 to 5 Unicode code points. | Exactly 4 bytes. |
| Ticker character set | A fixed ASCII list plus 1154 allowlisted single emoji code points. No space, hyphen or comma. | Any 4-byte sequence, with wider implementation variation. |
| Numeric types | JSON string or JSON number, both accepted. | Strings expected by the common indexers. |
Fractional max / lim | Truncated down to an integer, then deployed. | Commonly rejected outright. |
| Over-limit mint | Clamped and still valid. Statuses OMA and ODL are not failures. | Commonly rejected, though the last-mint clamp exists in some indexers. |
| Over-balance transfer | Invalid, nothing moves, no partial fill. | Also invalid. This one matches. |
| Transfer model | Direct: one transaction moves balance from sender to output 0. | Two steps: an inscribe-transfer, then a transfer of the inscription. |
| Who receives a mint | The address in output 0, which need not be the sender. | The inscription's owner. |
Treating a clamped mint as a rejected mint. In SRC-20, when your amt is above the per-mint limit or above what remains of the supply, the amount is quietly reduced and the mint still succeeds. An indexer that rejects it will report a smaller circulating supply than every other indexer, and a wallet that reports it as failed will confuse its users. See rules V-6 and V-7.