They are programs, not versions
The names suggest an upgrade, and that is the first thing to unlearn. SPL Token and
Token-2022 are two separate programs running side by side on Solana. Token-2022 did not
replace anything and the original was not deprecated. The overwhelming majority of Solana
tokens, including the ones with the deepest liquidity, are standard SPL tokens.
A token is created under one program or the other, and that is permanent. There is no
migration path, no upgrade instruction, and no wrapper that makes an SPL token behave like a
Token-2022 one. Choosing means choosing for the life of the token.
What Token-2022 adds
Token-2022 supports everything the original does, plus optional extensions configured at
creation. The ones that matter in practice:
- Transfer fees. A percentage of every transfer is withheld automatically, collectable only by a nominated withdraw authority. This is the extension most people are actually after.
- Transfer hooks. Custom logic that runs on every transfer, used for allowlists and compliance checks.
- Confidential transfers. Balances and amounts hidden from public view while remaining verifiable.
- Interest-bearing tokens. Balances that display accrued interest without repeated minting.
- Non-transferable tokens. Tokens bound to the account that received them.
These are genuinely useful capabilities. The question is never whether they are impressive,
it is whether your token needs one badly enough to pay what they cost.
What they cost you
Not in SOL, though the deployment is more expensive. The real price is compatibility.
Every piece of infrastructure that touches your token has to know how to handle the program
it was created under, and for the extensions, how to handle that specific extension. Wallets
have largely caught up. Explorers have largely caught up. Beyond that it gets uneven:
- Some decentralized exchanges support Token-2022 tokens, and some support them but exclude ones with transfer fees, because a fee breaks the arithmetic their pools rely on.
- Some aggregators route them, some skip them, and the ones that route them may quote you a price that does not account for the fee.
- Some centralized exchanges do not accept Token-2022 deposits at all.
- Some bridges do not support them, which can strand your token on Solana.
None of this is a reason to never use Token-2022. It is a reason to check the specific venues
that matter to your project, by name, before you launch rather than after.
The honest decision rule
Use standard SPL unless you can name the extension you need and say what job it does.
That is not a hedge, it is the actual answer for most launches. If you are creating a
community token, a memecoin, a governance token, or a straightforward utility token, the
original program gives you maximum compatibility, the lowest cost, and no surprises at
listing time.
Use Token-2022 when the extension is doing identifiable work:
- A transfer fee funding a treasury or a buyback, where you have decided the rate and can defend it to holders.
- A compliance requirement that needs transfer hooks or a permissioned allowlist.
- A product genuinely built around confidential balances or accrued interest.
If your reason is that a fee on every transfer sounds like passive income, stop. Every holder
pays that fee on every transfer, it makes your token measurably worse to trade, and thin
volume on a fee-bearing token produces very little revenue while actively suppressing the
activity that would have produced more.
If you do want a transfer fee
A few things worth fixing in your head before you commit, because none of them can be
changed afterwards:
- The rate is permanent. Anvilmint creates the fee configuration fixed at launch. You cannot lower it later if it turns out to be suppressing volume.
- Keep it low. A rate above about 5% is where most tokens find that trading simply stops. Under 2% is where most workable fee tokens sit.
- Consider a cap. Without one, a single large transfer pays the full percentage, which can be enough to deter the exact liquidity you want.
- Fees do not arrive automatically. They accumulate on chain and stay there until your wallet collects them.
- Only your wallet can collect. Anvilmint sets the withdraw authority to the address you connect and never to its own. We take no share of your transfer fees.
Side by side