> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spark.money/llms.txt
> Use this file to discover all available pages before exploring further.

# Launch a Token

> Create a token on Spark, mint supply, and send your first token transfer.

<Frame className="chill">
  <img className="block dark:hidden" src="https://mintcdn.com/lightspark/qIS7zQJqaXfAMCl9/images/quickstart/create-token-light.png?fit=max&auto=format&n=qIS7zQJqaXfAMCl9&q=85&s=0e1dce30db937c786f11b2a230bdd619" alt="Launch a Token" width="1920" height="1080" data-path="images/quickstart/create-token-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/lightspark/qIS7zQJqaXfAMCl9/images/quickstart/create-token.png?fit=max&auto=format&n=qIS7zQJqaXfAMCl9&q=85&s=15fdb5dbd7185d4e504cb4ebb693714f" alt="Launch a Token" width="1920" height="1080" data-path="images/quickstart/create-token.png" />
</Frame>

Create and launch your first token on Spark in minutes. This quickstart will walk you through setting up your wallet, issuing a token, minting supply, and sending your first transfer. All on Spark, without touching L1 or waiting for confirmations.

***

<Steps>
  <Step title="Setup: Run the CLI" icon="terminal">
    Launch the Spark CLI with a single command. Requires Node.js 20+.

    ```bash CLI theme={null}
    npx @buildonspark/cli
    ```

    Or install it globally:

    ```bash CLI theme={null}
    npm install -g @buildonspark/cli
    spark-cli
    ```
  </Step>

  <Step title="Initialize your wallet" icon="wallet">
    Create a wallet to serve as the issuer of your token:

    ```bash CLI theme={null}
    > initwallet
    ```

    Example output:

    ```bash CLI theme={null}
    Mnemonic: rhythm torch mistake reopen device surround cabin wish snake better blind draft
    Network: REGTEST
    ```

    <Warning>
      Important: Keep your mnemonic safe and offline. The wallet you create here becomes the root of trust for your token. It's the only wallet authorized to mint or burn supply.
    </Warning>
  </Step>

  <Step title="Create a token" icon="coin">
    Launch your token directly on Spark:

    ```bash CLI theme={null}
    > createtoken <tokenName> <tokenTicker> <decimals> <maxSupply> <isFreezable>
    # Example:
    > createtoken MyToken MTK 6 1000000 false
    ```

    <AccordionGroup>
      <Accordion title="View Token Parameters">
        <ParamField path="name" type="string" required placeholder="MyToken">
          Human-readable name of the token.
        </ParamField>

        <ParamField path="ticker" type="string" required placeholder="MTK">
          Short symbol for the token (typically 3–6 characters).
        </ParamField>

        <ParamField path="decimals" type="number" required placeholder="6">
          Decimal precision used for display and arithmetic.
        </ParamField>

        <ParamField path="maxSupply" type="number" required placeholder="1000000">
          Hard cap on total mintable supply.
        </ParamField>

        <ParamField path="freezable" type="boolean" required placeholder="true">
          Whether the issuer can freeze or unfreeze token balances.
        </ParamField>
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      ```bash CLI theme={null}
      TxID: 9c5d17acb7fe203ab6342b3f556b4e5f3b4dabe1bca3b0b98b1b3d9cf7d92c4d
      Token ID: btkn1qv6cps0n0ttm3p4gx62rzty4rjhzqwe5eqv2wlt
      ```

      <Accordion title="View Response Fields">
        <ResponseField name="txId" type="string" required>
          Spark transaction ID of the token creation.
        </ResponseField>

        <ResponseField name="tokenId" type="string" required>
          Bech32m token identifier (e.g., <code>btkn1...</code>) used in later operations.
        </ResponseField>
      </Accordion>
    </AccordionGroup>

    Your token now exists on Spark. It's ready for minting and transfers.
  </Step>

  <Step title="Mint tokens" icon="coins">
    Bring new tokens into circulation. Only the issuer wallet can mint, up to the max you set before.

    ```bash CLI theme={null}
    > minttokens 500000
    ```

    Example response:

    ```bash CLI theme={null}
    Minted: 500000 MTK
    Remaining mintable: 500000 MTK
    ```

    You can verify the token balance:

    ```bash CLI theme={null}
    > gettokenbalance
    Token: MTK
    Balance: 500000
    ```
  </Step>

  <Step title="Send tokens" icon="money-bill-wave">
    Tokens on Spark move instantly and cost nothing. You can choose to create a new wallet to find a sender.

    ```bash CLI theme={null}
    # Wallet 2
    > initwallet
    Mnemonic: explain bullet cradle segment lava enable someone lemon bracket fossil invite crash
    > getsparkaddress
    sparkrt1pgw6rrt6s4y3xghx6cl5v4mm08eylktaygff62mg8uk3u5zqq2zwqf9t9d0
    ```

    Then send tokens from your issuer wallet:

    ```bash CLI theme={null}
    # Wallet 1 (Issuer)
    > transfertokens btkn1qv6cps0n0ttm3p4gx62rzty4rjhzqwe5eqv2wlt 100000 sparkrt1pgw6rrt6s4y3xghx6cl5v4mm08eylktaygff62mg8uk3u5zqq2zwqf9t9d0
    ```

    That’s it. The transfer settles instantly on Spark.
  </Step>
</Steps>
