Skip to main content

What Is SPL Token? Solana's Token Standard Explained

Solana's token standard, how SPL Token + Token-2022 work, vs ERC-20 and TRC-20

Written by Eco
What Is SPL Token? Solana's Token Standard Explained


If you've sent USDC on Solana, held PYUSD in Phantom, or claimed an airdrop on a Solana DEX, you've touched an SPL token. SPL is the token standard that makes those balances work. This guide walks through what SPL means, how the Token Program holds your balance, what changed with Token-2022, a side-by-side example of USDC-SPL and USDT-SPL, and how SPL differs from ERC-20 on Ethereum and TRC-20 on Tron.

What does SPL stand for?

SPL stands for Solana Program Library. It's a collection of onchain programs (Solana's term for smart contracts) maintained by Solana Labs that ship reference implementations for common functions, like a token registry, a memo program, and a name service. When people say "SPL token," they usually mean a token issued through the SPL Token Program, Solana's equivalent of the ERC-20 standard on Ethereum.

How SPL tokens actually work

SPL splits responsibilities across three account types, which is different from the Ethereum model where one contract holds every balance in a single mapping.

  • Token Program. A single program deployed at address TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA owns every SPL mint and every token account. It contains the logic for transfers, minting, and burning, per Solana's Token Program docs.

  • Mint account. One account per token. It stores total supply, decimals, the mint authority, and the optional freeze authority. USDC on Solana lives at mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, per Circle, a single mint that every wallet's USDC balance references.

  • Token account. One per (user, token) pair. Your USDC balance lives in your token account, not in your main wallet account. Most wallets use the Associated Token Account (ATA) convention, a deterministic address derived from your wallet + mint, so apps can find it without you doing anything.

Practical consequence: the first time someone sends you a new SPL token, the sender (or the wallet) creates your ATA. That account costs roughly 0.00204 SOL in rent-exempt deposit for a standard 165-byte token account, which is refunded if you ever close the account. Phantom and Solflare handle this silently.

What is Token-2022 (SPL Token Extensions)?

Token-2022 is a newer program at TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb that's backward-compatible in spirit but adds optional features called Token Extensions. Issuers opt in per mint. The original Token Program still exists and still backs the majority of liquidity, but most new institutional issuance ships on Token-2022, per Solana's Token-2022 docs.

The headline extensions:

  • Transfer hooks. Run custom logic on every transfer, used for allowlists, KYC checks, or royalty routing.

  • Confidential transfers. Hide amounts (but not sender/receiver) using zero-knowledge proofs.

  • Interest-bearing tokens. Balance rebases automatically based on a published rate, without per-user transactions.

  • Transfer fees. A fee is deducted at the protocol level on every transfer and routed to a withdrawal authority.

  • Permanent delegate, non-transferable, metadata pointer. Used for compliance, soulbound tokens, and onchain metadata respectively.

PayPal's PYUSD on Solana is the most prominent Token-2022 issuance, it uses confidential transfer support and a permanent delegate for compliance freezes. Circle's USDC on Solana stayed on the original Token Program.

USDC-SPL and USDT-SPL: a beginner's walkthrough

USDC-SPL and USDT-SPL are the same dollar-pegged tokens you know from Ethereum, reissued natively on Solana under the SPL standard rather than bridged. Each has its own mint account, decimals setting, and issuer, so a wallet balance of "USDC" on Solana and "USDC" on Ethereum are different onchain assets that happen to share a name and a 1:1 redemption promise.

Here's what that looks like in practice, since Solana's own reference docs describe the mechanism but not a walkthrough of a real token:

  • USDC-SPL. Mint address EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, 6 decimals, issued directly by Circle (not bridged), per Circle's Solana page. USDC circulating supply across all chains is about $74.4B per DeFiLlama. When you receive USDC-SPL, your wallet opens (or reuses) the ATA derived from your wallet address and this exact mint address; that ATA is where the balance actually sits.

  • USDT-SPL. Mint address Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB, 6 decimals, issued by Tether. Total USDT circulating supply across all chains is about $183.3B per DeFiLlama, making it Solana's second-largest native stablecoin by mint after USDC. The mechanics are identical to USDC-SPL: one shared Token Program, one mint account, one ATA per holder.

The practical takeaway for a beginner: to confirm you're holding the real USDC-SPL or USDT-SPL and not an imposter token with the same ticker, check that the mint address in your wallet's token details matches the addresses above exactly. Phantom and Solflare both surface the mint address when you tap into a token's details screen.

Reading a mint account: decimals, supply, and authorities

A mint account is the onchain record for one SPL token's decimals, current supply, and two optional authorities that control it. Understanding these fields is how you tell a legitimate token from a copycat before you interact with it.

USDC-SPL and USDT-SPL both use 6 decimals, matching their behavior on Ethereum, per Circle's Solana page. SOL itself uses 9 decimals (lamports). This matters because a wallet or explorer reading the wrong decimals value will display a balance that's off by orders of magnitude, a common source of confusion when a scam token copies a real ticker but ships different decimals.

The two authorities on a mint account:

  • Mint authority. The address allowed to create new tokens, increasing supply. Circle and Tether retain mint authority on USDC-SPL and USDT-SPL so they can issue and redeem against fiat reserves. A token with a renounced (null) mint authority has a fixed, unchangeable supply.

  • Freeze authority. The address allowed to freeze a specific token account, blocking transfers from it. Circle holds freeze authority on USDC-SPL for compliance and sanctions enforcement; many meme and community tokens set this to null at launch to signal they can't be frozen.

Both fields are visible on any Solana block explorer by looking up the mint address, which is the fastest way to confirm you're holding USDC-SPL or USDT-SPL rather than an imposter token using the same name and logo.

The major SPL stablecoins

Stablecoins dominate SPL volume on Solana. Beyond USDC-SPL and USDT-SPL covered above, PayPal's PYUSD (SPL) is worth noting: native on Solana via Token-2022, issued by Paxos, circulating supply about $2.8B across all chains per DeFiLlama.

Beyond stables, the SPL standard also backs SOL liquid-staking tokens (mSOL, jitoSOL, bSOL), every Jupiter or Pump.fun token, and Solana NFTs (which use a related but distinct Metaplex standard built on top of SPL).

How do I add an SPL token to Phantom or Solflare?

You usually don't need to. Both wallets auto-display any SPL token that lands in your wallet, and both pull names + logos from the Solana token list. If a token isn't showing, it's almost always one of two issues: (1) the token account hasn't been created yet (send a tiny amount or use the wallet's "manage tokens" toggle), or (2) the token is unverified and hidden by the spam filter.

Phantom: Open the token list → tap the gear icon → toggle "Manage token list" → enable the specific token, or paste its mint address. Phantom flags mislabeled or unverified tokens with a warning icon in this same screen, per Phantom's own scam-prevention guide.

Solflare: Tokens tab → "+" icon → paste mint address → confirm. Solflare also lets you close empty token accounts from this screen to reclaim the 0.00204 SOL rent.

Neither wallet requires you to know a mint address for USDC-SPL or USDT-SPL under normal use, since both are on the default verified token list. You'd only paste a mint address manually if a project or exchange gives you one directly, in which case cross-check it against the addresses in this guide before trusting it.

SPL vs ERC-20 vs TRC-20

SPL, ERC-20, and TRC-20 all do the same job, track fungible balances on their respective chain, but the engineering choices and fee economics diverge sharply.

Property

SPL (Solana)

ERC-20 (Ethereum)

TRC-20 (Tron)

Underlying VM

Solana Sealevel (Rust/C)

EVM (Solidity)

TVM (Solidity-compatible)

Where balance lives

Per-user token account (ATA)

Mapping inside the token contract

Mapping inside the token contract

Contract per token

One mint account, shared Token Program

One full contract per token

One full contract per token

Gas asset

SOL

ETH

TRX (or burned bandwidth/energy)

Typical transfer cost

~$0.0006 base fee

$0.20–$3 depending on base fee

~$1–$3 in energy, often $0 if rented

Approve/transferFrom pattern

Optional delegate per token account; not the default UX

Standard, required for DEX/lending

Standard, same as ERC-20

Programmable extensions

Token-2022 hooks, confidential transfers, fees, interest

Custom contract code per token (ERC-1363, ERC-2612 permit, etc.)

Limited; mostly ERC-20 parity

Settlement time

300ms slot per Solana, current mainnet figure, down from 400ms

~12s block, ~13min finality

~3s block, ~57s finality

The headline difference for users: on Solana, you almost never sign an "approve" transaction before a swap because the runtime model lets the swap program own the token movement directly within a single instruction. On Ethereum and Tron, every new dApp interaction usually means one approve transaction plus one swap transaction. (For a deeper comparison of the two non-Solana standards, see our TRC20 vs ERC20 breakdown.)

Why does SPL feel cheaper than ERC-20?

Two reasons. First, Solana fees are denominated in SOL and base fees are flat (5,000 lamports per signature, or about $0.00058 at $115.67 SOL), with priority fees added on top during congestion. Second, the SPL design moves per-token state into per-user accounts, which removes the storage-write cost that dominates ERC-20 transfers on Ethereum L1. The trade-off: more accounts to manage and small rent deposits per token, which is invisible most of the time but matters if you hold dozens of low-value tokens.

Common SPL gotchas

  • Sending to a wallet without an ATA. Some older wallets and exchanges don't auto-create the ATA. The transaction will either fail or the sender pays an extra ~0.00204 SOL to create it.

  • Token-2022 compatibility. Older DEXes, bridges, and wallets sometimes don't recognize Token-2022 mints. Check that your destination (CEX deposit, DEX pool, bridge) supports Token-2022 before sending PYUSD or other extension-using tokens.

  • Spam tokens. Anyone can airdrop SPL tokens to any wallet. Phantom and Solflare hide unverified ones by default; don't interact with random tokens that appear in your wallet, and always verify the mint address for high-value tokens like USDC-SPL and USDT-SPL.

  • Rent reclaim. If you close a token account with a zero balance, you get the ~0.00204 SOL back. Solflare exposes this; Phantom hides it behind "burn token."

When should you use SPL instead of another network?

If you're sending stablecoins to another Solana wallet or a Solana-native dApp, use SPL, fees are a fraction of a cent and finality is under a second at the slot level. If you're sending to a CEX, check which networks they support for that token; many list SPL USDC and SPL USDT as the cheapest option. For cross-chain moves out of Solana, use a CCTP-based route for USDC or a major bridge for USDT, both routinely settle in under a minute. Tools like Eco's stablecoin routing pick the SPL leg automatically when it's the cheapest path.

Methodology & sources

Token Program addresses and account structure: Solana Token Program docs. Token-2022 extensions and feature list: Solana Token-2022 docs. USDC-SPL mint verification: Circle. Wallet flows verified against Phantom's scam-prevention guide and Solflare docs. Stablecoin supplies: DeFiLlama Stablecoins (Sep 2026). SOL price for fee math: $115.67, live data snapshot (Sep 2026). Solana slot time: Solana.

Related reading

Did this answer your question?