Solana token decimals: why almost everyone uses 9
Decimals on Solana aren't cosmetic — they change how supply is stored on-chain and how wallets display balances. Here's the right number to pick.
When you create an SPL token you have to pick a decimals value between 0 and 9. It's permanent — you can't change it after launch. Most Solana tokens use 9. Here's why, and the edge cases where another value makes sense.
What decimals actually does
On-chain, every balance is stored as an integer (u64) in "base units". decimals tells wallets how many digits to shift before displaying.
- A token with 9 decimals and a stored balance of
1,000,000,000displays as 1.000000000. - A token with 6 decimals and the same stored balance displays as 1,000.000000.
It's purely a display convention. It doesn't change the math, the supply cap (u64 max ≈ 18.4 quintillion base units), or the fees.
Why 9 is the de facto standard
- SOL itself has 9 decimals (1 SOL = 10⁹ lamports). Picking the same value makes mental arithmetic easier when you compare token amounts to SOL.
- Every Solana SDK, indexer, and UI defaults to 9 for unknown tokens. Picking 9 means fewer rendering bugs.
- Memecoins with 1 billion supply (
1,000,000,000UI tokens) need 9 decimals to fit comfortably insideu64even after a 10x supply event.
When to pick something else
| Decimals | Use case | |---|---| | 0 | NFTs in fungible form, collectibles, anything where fractional ownership is meaningless | | 2 | Cents-style tokens, points programs, anything mirroring fiat conventions | | 6 | USDC, USDT — stablecoin convention inherited from Ethereum | | 8 | BTC-pegged wrapped assets (BTC has 8 decimals) | | 9 | Everything else, especially memecoins and utility tokens |
What can go wrong if you pick badly
- Pick 0 decimals for a memecoin → users can't send "0.5 tokens", which kills micro-transactions and tipping.
- Pick 2 decimals with a 1 trillion supply → you overflow
u64and the create-mint instruction fails. - Pick 6 decimals for a memecoin → most wallet UIs and bots assume 9, your balances render with the wrong magnitude in some surfaces.
You can't change it later
decimals is set in the InitializeMint instruction and is part of the immutable mint account. The only way to "change" it is to deploy a new mint and migrate holders 1:1 — basically a fork.
Bottom line
Pick 9 unless you have a concrete reason not to. SolanaForge's create flow defaults to 9 and warns you if you change it. The 30 seconds you save by not thinking about decimals is one of the best decisions in your launch.
Ready to launch your token?
One signature, 0.1 SOL service fee, IPFS metadata pinned via Pinata, mainnet only.
