---
title: "Quickstart: launch a token"
description:
  Create a compliance-ready Token-2022 mint on a local network in about ten
  minutes - metadata, pausable transfers, permanent delegate, and frozen-by-
  default accounts.
---

This example creates a Token-2022 mint with onchain metadata, pausable
transfers, a permanent delegate, and token accounts that start frozen. Choose
Kit, legacy TypeScript, or Rust, then run it on the isolated test network:

<CodeTabs storage="cookbook" flags="r">

```ts !! title="Kit" file=packages/docs-examples/cookbook/tokens/create-mint-with-extensions/kit.ts#region=create

```

```ts !! title="Legacy" file=packages/docs-examples/cookbook/tokens/create-mint-with-extensions/legacy.ts#region=create

```

```rust !! title="Rust" file=packages/docs-examples/cookbook/tokens/create-mint-with-extensions/rust/src/main.rs#region=create

```

</CodeTabs>

You should see the transaction signature, the mint address, and the list of
enabled extensions.

## Point it at devnet

Swap the RPC URLs for devnet and fund the payer from a
[faucet](/developers/cookbook/development/airdrops-and-faucets):

```ts
solanaRpc({
  rpcUrl: "https://api.devnet.solana.com",
  rpcSubscriptionsUrl: "wss://api.devnet.solana.com"
});
```

Everything else is unchanged. Before using the same configuration on mainnet,
plan authority management, compliance operations, and monitoring for the asset.

## Where to go next

- [Assets on Solana](/docs/tokens) - mint accounts, token accounts, and
  authorities
- [Token extensions](/docs/tokens/extensions) - choose only the controls your
  asset needs
- [Token ACL](/docs/tokenization/token-acl) - enforce allowlists and blocklists
- [Delivery versus payment](/docs/tokenization/dvp) - settle an asset and its
  payment atomically
