You can create BRC-20 inscriptions using platforms such as UniSat or Ordinals Wallet. These tools handle the Bitcoin transaction construction for you — you supply the JSON, they handle the rest.
Understand the deploy inscription
Every BRC-20 operation is a JSON object inscribed onto a satoshi. The
The first valid deploy inscription for a ticker is canonical. Any later deploy inscription for the same ticker is ignored by indexers.
deploy operation defines a new token and sets its rules. All subsequent mints are bound by these rules.The required and optional fields are:| Field | Required | Description |
|---|---|---|
p | Yes | Protocol identifier. Always "brc-20". |
op | Yes | Operation type. "deploy" for this step. |
tick | Yes | Ticker symbol (see step 2 for length rules). |
max | Yes | Maximum total supply, as a stringified integer. |
lim | No | Maximum amount any single mint inscription can claim. |
self_mint | No | Set to "true" to restrict minting to the deployer only. |
Choose your ticker
The ticker length determines which namespace your token occupies and which rules apply.4-byte tickers (e.g.
ordi, sats) are the original BRC-20 namespace. Most are already claimed on mainnet.5-byte tickers support self-minting. They are isolated from the 4-byte namespace so legacy indexers that do not support self-minting will ignore them.6-byte tickers were introduced with BRC2.0 Phase 1 and are designed for programmable and composable use cases. They must:- Be exactly 6 characters
- Match the regex
^[A-Za-z0-9-]{6}$ - Be treated case-insensitively
Create the deploy inscription
Construct the JSON for your token. The examples below cover the two main issuance models.Public mint — anyone can mint until the supply cap is reached:Self-mint — only the deployer can mint. Requires a 5-byte or 6-byte ticker:Under self-mint semantics you can also set Inscribe this JSON as a text/plain inscription onto a satoshi and broadcast the Bitcoin transaction.
"max": "0" to indicate unlimited supply (bounded only by the indexer’s uint64 ceiling). Tokens cannot be destroyed, and sending to an unspendable address does not reduce the mint capacity.Wait for confirmation
BRC-20 state is derived from the ordered sequence of confirmed Bitcoin inscriptions. Your deploy inscription only takes effect once the Bitcoin block containing it is confirmed.Bitcoin produces a new block approximately every 10 minutes. Until confirmation, indexers will not recognise your token as deployed.
One confirmation is sufficient for the token to appear in indexers. You do not need to wait for multiple confirmations before proceeding to mint.
Mint tokens
Once your deploy inscription is confirmed, anyone (or only you, for self-mint tokens) can mint tokens up to the
lim amount per inscription.amtmust be a stringified integer and cannot exceed thelimvalue set at deploy time.- Minting stops once the cumulative minted supply reaches the
maxvalue. Any mint inscription that would exceed the cap is ignored by indexers. - For self-mint tokens, each mint inscription must be inscribed as a child of the original deploy inscription. Mint inscriptions without this parent relationship are invalid.
Transfer tokens
Transferring BRC-20 tokens is a two-step process:There is no recipient address in the JSON. The inscription simply moves the
- Inscribe a transfer inscription to lock the specified amount against your address.
- Send the satoshi containing that inscription to the recipient’s Taproot address (
bc1p...).
amt from your available balance into a “pending transfer” state.Step 2 — send the satoshi to the recipient:Send the satoshi that carries the transfer inscription to the recipient’s Taproot address. When indexers see this Bitcoin transaction, they credit the recipient’s balance for the specified amount.