How to create a token on Solana: steps, code and real costs
How to create a token on Solana in 2026: SPL Token vs Token-2022, CLI and TypeScript steps, metadata, revoking authorities, what it costs in SOL after the rent cut, and liquidity.
By Przemysław Paczoski, CEO & Founder at 23studio
Published 10 min read

To create a token on Solana, you create a mint account with the SPL Token or Token-2022 program, add metadata (name, symbol, logo), mint the supply to a token account, then revoke the mint and freeze authorities if supply should be fixed. With the spl-token CLI that is about six commands. On-chain it costs roughly 0.005 to 0.02 SOL, under $2 at November 2026 prices. Liquidity is the real expense.
This guide walks through choosing between SPL Token and Token-2022, creating a token with the CLI and with TypeScript, what each step costs after Solana's 2026 rent reduction, how to add liquidity on Raydium, Meteora or Orca, when a launchpad like pump.fun makes more sense, and a security checklist we run before any mainnet mint.
What a Solana token actually is
Solana does not deploy a new contract per token the way an ERC-20 does on Ethereum. Every token is an account owned by one shared, audited program.
- Mint account: stores supply, decimals, the mint authority (who can create more) and the freeze authority (who can freeze holders' accounts).
- Token accounts: each holder has one per token, usually an Associated Token Account (ATA) derived from their wallet and the mint.
- Metadata: name, symbol and a URI pointing to a JSON file with the logo and description. It lives either in a Metaplex metadata account or, with Token-2022, inside the mint itself.
Because you reuse the token program instead of writing your own, a standard Solana token needs no custom Rust code and no audit of new logic. You only write a program if you need custom behavior, such as a transfer hook. If you are weighing Solana against an EVM chain for that kind of work, see our comparison of Rust vs Solidity for smart contracts.
SPL Token vs Token-2022
There are two token programs. Pick before you mint, because you cannot move a mint from one to the other later.
| SPL Token (original) | Token-2022 (Token Extensions) | |
|---|---|---|
| Program ID | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb |
| Metadata | Separate Metaplex account | Built-in metadata extension on the mint |
| Transfer fees | No | Yes, basis points with a cap |
| Other extensions | None | Transfer hooks, permanent delegate, non-transferable, interest-bearing, default account state, pausable, confidential transfers, and more |
| DEX and wallet support | Universal | Broad, but some pools and tools reject certain extensions |
| Best for | Plain fungible tokens, memecoins, max compatibility | Tokens with fees, compliance rules, stablecoins, RWAs |
The Token-2022 extension list now includes mint close authority, transfer fees, default account state, immutable owner, non-transferable tokens, required memo, interest-bearing, permanent delegate, CPI guard, transfer hook, metadata pointer and metadata, groups and members, scaled UI amount, pausable and permissioned burn.
Two notes from experience:
- Confidential transfers are live. Per the Token-2022 status page, all clusters run the version with confidential transfer support, and the ZK ElGamal Proof program it relies on is enabled on mainnet and devnet. Tooling is still thin, so budget extra integration time if you need private balances.
- Extensions can hurt compatibility. A transfer fee or transfer hook changes how every DEX, wallet and bridge has to handle your token. Some pools refuse tokens with hooks or permanent delegates, and traders read a permanent delegate as a red flag. Only add extensions you will actually use.
For a plain community or utility token, we still use the original SPL Token program or Token-2022 with only the metadata extension.
How to create a Solana token with the CLI
You need the Solana CLI and the spl-token CLI installed, and a wallet keypair with some SOL. Always run the whole flow on devnet first.
1. Configure the network and wallet
solana config set --url devnet
solana-keygen new --outfile ~/.config/solana/id.json # skip if you have one
solana airdrop 2
2. Create the mint (Token-2022 with metadata)
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
create-token --decimals 6 --enable-metadata
This prints the mint address. Use --decimals 9 if you want SOL-style precision. Add --enable-freeze only if you really need a freeze authority.
3. Add the metadata
Upload a JSON file with name, symbol, description and an image URL to permanent storage (Arweave, IPFS through a pinning service, or your own CDN if you accept the trust trade-off). Then:
spl-token initialize-metadata <MINT_ADDRESS> "My Token" "MTK" https://example.com/mtk.json
The mint authority has to sign this command, as described in the metadata extension docs.
4. Create your token account and mint the supply
spl-token create-account <MINT_ADDRESS>
spl-token mint <MINT_ADDRESS> 1000000000
5. Revoke authorities if supply is fixed
spl-token authorize <MINT_ADDRESS> mint --disable
spl-token authorize <MINT_ADDRESS> freeze --disable # only if a freeze authority exists
Revoking is permanent. After mint --disable nobody can create more tokens, including you.
6. Repeat on mainnet
Switch with solana config set --url mainnet-beta, use a fresh, well-protected keypair or a multisig, and run the same commands. Check the token on Solana Explorer or Solscan before you announce it.
For an original SPL Token mint, drop the --program-id and --enable-metadata flags and create the metadata with Metaplex instead, for example with its Umi createFungible helper.
How to create a Solana token in TypeScript
For scripted launches, tests or a token factory in your own app, use @solana/spl-token. This example creates a classic SPL mint, mints the supply and revokes both authorities:
import { Connection, Keypair, clusterApiUrl } from "@solana/web3.js";
import {
createMint,
getOrCreateAssociatedTokenAccount,
mintTo,
setAuthority,
AuthorityType,
} from "@solana/spl-token";
const connection = new Connection(clusterApiUrl("devnet"), "confirmed");
const payer = Keypair.fromSecretKey(/* load from a secure file, never hardcode */);
const decimals = 6;
const mint = await createMint(connection, payer, payer.publicKey, null, decimals);
const ata = await getOrCreateAssociatedTokenAccount(connection, payer, mint, payer.publicKey);
await mintTo(connection, payer, mint, ata.address, payer, 1_000_000_000n * 10n ** BigInt(decimals));
// Fixed supply: remove the mint authority for good.
await setAuthority(connection, payer, mint, payer, AuthorityType.MintTokens, null);
// Passing null as freezeAuthority in createMint means there is none to revoke.
Newer projects increasingly use @solana/kit (the successor to web3.js v1) and generated program clients, but the account model and the steps are identical. For Token-2022 mints, pass the Token-2022 program ID and include the extension initialization instructions before InitializeMint.
How much does it cost to create a token on Solana?
Most of the on-chain cost is rent: a refundable deposit that keeps each account alive. Solana is cutting rent in five steps under SIMD-0437. Steps 1 and 2 went live on mainnet on September 3 and September 11, 2026, taking rent from 6,960 to 5,080 lamports per byte. Steps 3 to 5 (2,575, 1,322 and finally 696 lamports per byte) are expected with Agave 4.4. At the time of writing, step 3 was still pending.
Rent for an account is (data size + 128 bytes) × the per-byte rate. At today's rate, and with SOL at about $93 on November 3, 2026:
| Item | Size | Rent before Sept 2026 | Rent now (5,080/byte) | Approx. USD now |
|---|---|---|---|---|
| Mint account (SPL Token) | 82 bytes | 0.00146 SOL | 0.00107 SOL | $0.10 |
| Your token account (ATA) | 165 bytes | 0.00204 SOL | 0.00149 SOL | $0.14 |
| Metaplex metadata account | ~607 bytes | 0.00512 SOL | 0.00373 SOL | $0.35 |
| Metaplex Token Metadata create fee | n/a | 0.01 SOL | 0.01 SOL | $0.93 |
| Token-2022 mint with metadata extension | ~300 to 600 bytes | 0.003 to 0.005 SOL | 0.002 to 0.004 SOL | $0.20 to $0.35 |
| Transaction fees | per signature | 5,000 lamports + priority fee | same | cents |
A classic SPL token with Metaplex metadata comes to about 0.016 SOL, matching a line-by-line October 2026 breakdown. A Token-2022 token with built-in metadata skips the Metaplex fee and lands around 0.005 SOL. Once step 5 is live, rent alone drops to a fraction of a cent. Existing accounts keep their old deposits, but the excess above the new minimum can be withdrawn. Do not hardcode these numbers in code. Query getMinimumBalanceForRentExemption instead, because the rate changes three more times.
No-code token creators charge a service fee on top, typically 0.05 to 0.3 SOL. That is convenience, not a network cost.
The costs that actually matter:
| Item | Typical cost |
|---|---|
| Raydium CPMM pool creation | 0.15 SOL fee plus about 0.04 SOL rent |
| Initial liquidity | Whatever you pair: often $5,000 to $100,000+ in SOL or USDC |
| Custom program (transfer hook, vesting, staking) | Development plus an audit; Rust audits carry a premium |
| Token design and launch work | $2,000 to $15,000 for a standard token build per our cost breakdown |
If you are comparing Solana with EVM chains on deployment costs more broadly, our smart contract cost comparison by chain has the numbers.
Adding liquidity: Raydium, Meteora or Orca
A token nobody can buy is a database entry. The three main Solana venues for a new pool:
- Raydium CPMM. Constant-product pools that support Token-2022, with a 0.15 SOL creation fee. Simple and widely indexed by aggregators like Jupiter.
- Meteora DAMM v2. Constant-product pools with an anti-sniper fee scheduler. The default frontend config starts the swap fee at 50% and decays it to 0.25% over 120 minutes, which makes bot-buying the first block expensive. Meteora's Alpha Vault can also give an allowlist a fair entry before trading opens.
- Orca Whirlpools. Concentrated liquidity. Better capital efficiency once a price range is established, but harder to manage at launch.
What to decide before you add liquidity:
- Starting price. It is set by the ratio you deposit. 10% of supply against $20,000 of USDC implies a fully diluted value of $200,000.
- LP tokens. Burning or locking them shows you cannot pull the liquidity. Communities check this before buying.
- Market depth. Thin pools swing on small trades. Our token launch playbook covers how much liquidity a launch needs and when to bring in a market maker.
Should you use pump.fun or another launchpad?
Launchpads remove the setup work. On pump.fun, creating a coin is free and the token trades on a bonding curve until it fills, then moves to PumpSwap. The platform charges a 1% fee on bonding-curve trades, and tokens graduate at roughly $69,000 to $100,000 in market cap. It is also crowded. Solana Compass reported about 42,000 launches in one day in June 2026, with fewer than 2% of all pump.fun tokens ever graduating.
Use a launchpad for a community or meme token where speed and attention matter more than control. Create your own mint when the token has a product behind it: you control decimals, authorities, metadata, allocations and vesting, and can plan supply properly. Our guide to designing token economics covers how to split supply between team, investors, community and liquidity.
Security checklist before a mainnet mint
- Rehearse on devnet with the exact script, decimals and amounts you will use.
- Protect the authority keys. Use a hardware wallet or a Squads multisig for any authority you keep.
- Decide each authority on purpose. Mint authority: revoke for fixed supply, or move to a multisig or vesting program if emissions are planned. Freeze authority: revoke unless you have a compliance reason (stablecoins and RWAs often do). Metadata update authority: keep it until the logo and links are final, then lock it.
- Avoid alarming extensions. Permanent delegate, transfer hooks and high transfer fees will be flagged by scanners like RugCheck and by traders.
- Host metadata permanently. A dead image link makes the token look abandoned in every wallet.
- Distribute through vesting contracts, not manual transfers, for team and investor allocations.
- Check the token in a wallet and in a DEX aggregator before announcing it, so the name, logo and decimals display correctly.
- Get an audit if you wrote any program. Standard token program mints do not need one. Transfer hooks, vesting and staking programs do.
Frequently asked questions
How much SOL do I need to create a token?
About 0.005 to 0.02 SOL covers the mint, your token account, metadata and transaction fees at the November 2026 rent rate. Keep 0.2 SOL or so in the wallet for pool creation if you plan to add liquidity on Raydium, plus the liquidity itself. Most of the rent is refundable if you close the accounts later.
Should I use Token-2022 or the original SPL Token program?
Use Token-2022 when you need an extension: transfer fees, transfer hooks, built-in metadata, a permanent delegate for compliance, or confidential transfers. Use the original program, or Token-2022 with only metadata, when you want the widest compatibility with DEXs, wallets and bridges. You cannot switch programs after minting.
Can I create a Solana token without coding?
Yes. No-code creators and launchpads such as pump.fun handle the mint, metadata and authorities for you, usually for a small fee in SOL. You give up control over details like decimals, extensions and how supply is distributed, which matters more for project tokens than for meme tokens.
What does revoking mint authority do?
It permanently sets the mint authority to none, so nobody can ever mint more of the token. Buyers treat it as proof of fixed supply. It does not remove other risks such as a live freeze authority, mutable metadata, or a team wallet that holds most of the supply.
Do I need an audit for a Solana token?
Not for a standard mint created through the SPL Token or Token-2022 program, since those programs are already audited and you are not deploying new code. You do need one for any custom program around the token, such as vesting, staking, a transfer hook or a launch contract.
Launch your Solana token with 23studio
We build Solana tokens and the programs around them: Token-2022 setups with fees or compliance hooks, vesting and staking, liquidity and launch tooling. Look at our token creation services or send us your token plan, and we will tell you what to build, what to skip and what it will cost.
Keep reading

How to create a stablecoin in 2026: models, rules, build and cost
How to create a stablecoin in 2026: fiat-backed, crypto-backed or white-label issuance, what the GENIUS Act and MiCA require, the contracts you need, and what each path costs.

MiCA White Paper Requirements: A 5-Step Guide for Token Issuers
What a MiCA crypto-asset white paper must contain, which Annex applies to your token, the 20-working-day notification, the iXBRL format and the liability you take on.

ERC-3643 and RWA tokenization infrastructure: a practical guide
How ERC-3643 handles identity, transfer rules and forced transfers, how it compares to ERC-1400, ERC-7943 and a plain ERC-20 allowlist, and which one to pick.