Why Solana Fees Matter More Than You Think
Solana is known for low fees, but for active traders the details of how fees and priority fees work matter a lot:
- Why did a 5 SOL swap cost 0.0006 SOL yesterday and 0.01 SOL today?
- Why do some transactions hang or fail even when the network isn’t fully congested?
- How should you set priority fees on Phantom, Backpack, or a custom RPC to avoid stuck orders without overpaying?
This article breaks down Solana’s fee model as it works today, and what it means specifically for DEX traders.
Core Pieces of Solana Fees
On Solana, you mainly deal with three concepts:
- Base transaction fee
- Compute budget & compute units (CUs)
- Priority fees (additional fee per compute unit)
Let’s unpack each.
1. Base Transaction Fee
Historically, Solana charged a flat 0.000005 SOL (5,000 lamports) per simple transaction. With fee markets and dynamic pricing, the effective base fee can vary slightly, but for most users it’s still tiny compared to EVM chains.
Key points:
- The base fee is charged per transaction, not per instruction.
- It’s burned (removed from supply) as part of Solana’s economic design.
- On its own, the base fee is usually not what determines whether your transaction gets included quickly.
For traders, the base fee is almost negligible; what matters is how much compute your transaction uses and how much priority fee you attach.
2. Compute Units (CUs)
Every Solana transaction has a compute budget measured in compute units (CUs). Each instruction (e.g., a Raydium swap, a Jupiter route, a token transfer) consumes some amount of compute.
Important details:
- Default max per transaction is around 200,000 CUs unless you explicitly request more via the
ComputeBudgetinstruction. - Complex DEX swaps (e.g., multi-hop Jupiter routes, CLMM interactions) can easily consume 100k+ CUs.
- If your transaction runs out of compute, it fails with an error like
ComputationalBudgetExceeded.
Wallets and SDKs (Phantom, Backpack, Jupiter, etc.) usually:
- Estimate compute usage, and
- Add a
ComputeBudgetinstruction to request enough CUs.
You don’t see CUs directly in most UIs, but they’re the foundation for priority fees.
3. Priority Fees (Per-Compute-Unit Fees)
Solana’s local fee markets (introduced via runtime updates like the v1.10+ and v1.14+ series) allow users to pay extra to prioritize their transactions on specific hot accounts (e.g., a popular AMM pool or memecoin mint).
You specify a micro-lamport per CU value:
- 1 lamport = 0.000000001 SOL
- 1 micro-lamport = 0.000001 lamport
In practice, UIs hide this complexity and show something like:
- Normal / Low priority
- Medium
- High / Turbo
Under the hood, these map to different micro-lamports per CU values.
Total priority fee you pay ≈ CUs used × price_per_CU.
Example (conceptual):
- Your Jupiter swap uses 120,000 CUs.
- You set 1 micro-lamport per CU.
- Priority fee = 120,000 micro-lamports = 0.12 lamport = 0.00000012 SOL.
In real congestion, UIs often set much higher values (tens to thousands of micro-lamports per CU), which is why you sometimes see fees spike into the 0.005–0.02 SOL range for complex swaps.
How Solana’s Local Fee Markets Actually Work
Solana doesn’t have a single global gas price like Ethereum. Instead, it uses local fee markets:
- Congestion is tracked per account (e.g., a specific Raydium pool, a memecoin mint, a popular program’s state account).
- Validators prioritize transactions with higher per-CU fees that touch those hot accounts.
- If you’re interacting with a quiet account, you can often get away with very low or zero priority fees.
For DEX traders, this means:
- Hot memecoin pools and new launches often require aggressive priority fees to get filled.
- Swapping in a quiet SOL–USDC pool on a less-used DEX might clear with minimal or no priority fee.
This is why you can see:
- Network TPS looking fine,
- But your transaction to a specific pool still stalls—because that account is saturated.
What You Actually Pay in a Typical DEX Swap
Let’s break down a realistic Solana DEX swap from a trader’s perspective.
Components of your cost:
- Base fee – tiny, usually around 0.000005 SOL equivalent.
- Priority fee – main variable part, depends on:
- CUs used by the route (single vs multi-hop, CLMM vs AMM, additional checks), and
- Micro-lamports per CU you (or your wallet) choose.
- Program fees / protocol fees – some protocols charge additional on-chain or off-chain fees, but these are separate from Solana L1 fees.
On a calm day:
- Simple swap via Jupiter on a liquid pool: total L1 fee often in the 0.0001–0.001 SOL range.
During heavy memecoin mania or NFT mints:
- Priority fees can spike significantly, sometimes pushing total L1 cost into multi-milliSOL territory (e.g., 0.005–0.02 SOL or more) for complex, high-priority routes.
The key point: priority fee is the lever you control to trade off speed vs cost.
How Wallets and Aggregators Expose Priority Fees
Different tools expose priority fees differently, but the mechanics are the same underneath.
Phantom
- Phantom typically offers priority options (e.g., standard vs high) when the network is busy.
- It automatically adds
ComputeBudgetinstructions and estimates a reasonable per-CU fee. - You can’t directly set micro-lamports per CU in the UI, but the wallet adjusts them based on network conditions.
Backpack, Solflare, and Others
- Many wallets follow a similar pattern: pre-set priority levels rather than raw per-CU inputs.
- Some advanced UIs or developer tools (e.g., custom scripts using
@solana/web3.js) let you: - Manually set
computeUnitPrice(micro-lamports per CU), and - Explicitly request higher
computeUnitLimit.
Jupiter
- Jupiter’s web UI and SDKs:
- Estimate compute usage for the chosen route.
- Attach a
ComputeBudgetinstruction with a recommended priority fee. - Some integrations or advanced settings allow tweaking this (e.g., “Aggressive” mode in certain frontends).
For most traders using mainstream UIs, you’re choosing between pre-defined priority profiles, not raw numbers—but it’s still useful to understand what’s happening under the hood.
Practical Priority Fee Settings for Solana Traders
Here’s how to think about priority fees in real trading scenarios.
1. Routine Swaps on Liquid Pairs
Example: SOL ↔ USDC on Raydium or Orca via Jupiter.
- Goal: Reliable execution, not ultra-time-sensitive.
- Suggested approach:
- Use the wallet’s default / standard priority.
- Only bump to “High” if you notice repeated delays or failures.
- Risk of overpaying: High priority here often doesn’t materially improve outcome but can multiply your fee.
2. Sniping New Memecoins / Hot Mints
Example: Trading a fresh Pump.fun token that just launched or a hyped NFT mint.
- Goal: Get in early; speed matters more than fee size.
- Suggested approach:
- Use High / Turbo priority in your wallet or aggregator.
- Accept that fees can be orders of magnitude higher than normal.
- Combine with tight slippage and realistic expectations—priority fees don’t guarantee fills if everyone else is also bidding high.
- Watch out for:
- Paying high priority fees into a transaction that ultimately fails (e.g., due to price moving beyond your slippage).
3. Managing Larger Positions
Example: Exiting a 3–5 figure position in a volatile token.
- Goal: Get out reliably without massive slippage.
- Suggested approach:
- Use medium to high priority, especially if:
- The token is actively pumped, or
- The pool is relatively small and likely to be congested.
- Consider splitting orders into chunks to reduce slippage and the risk of a single failed transaction.
Here, paying a bit more in priority fees is often worth it to avoid being stuck while price moves against you.
How to Tell If You’re Underpaying or Overpaying
You can use explorers and analytics tools to understand what’s going on.
1. Check Your Failed or Slow Transactions
Using Solscan, SolanaFM, or Explorer.solana.com:
- Look up your transaction signature.
- Check:
- Error messages (e.g.,
BlockhashNotFound,ComputationalBudgetExceeded, or account-related congestion errors). - Compute units used and priority fee paid (some explorers expose this explicitly, others via logs).
If you see repeated failures touching the same pool or mint account while others are succeeding, you’re likely underbidding on priority fees.
2. Compare to Other Transactions in the Same Block
Some explorers and tools let you:
- View other transactions in the same slot touching the same program or pool.
- Compare their priority fees to yours.
If your fee is significantly lower than successful transactions, that’s a clear signal to raise your priority level.
3. Watch Network & Market Conditions
- During high TPS bursts and when memecoins are trending, assume higher priority fees are needed.
- During quiet periods, you can often scale back to default or low priority without issues.
Advanced: Custom Priority Fees via Code
If you’re using @solana/web3.js or a custom bot, you can control fees more precisely.
Key instructions:
ComputeBudgetProgram.setComputeUnitLimit({ units })ComputeBudgetProgram.setComputeUnitPrice({ microLamports })
Typical pattern:
import { ComputeBudgetProgram } from "@solana/web3.js";
const computeBudgetIx = [
ComputeBudgetProgram.setComputeUnitLimit({
units: 200_000, // or more if your route needs it
}),
ComputeBudgetProgram.setComputeUnitPrice({
microLamports: 1_000, // example: 1,000 micro-lamports per CU
}),
];
// Prepend these to your transaction instructions
You then:
- Monitor success/failure rates and inclusion speed.
- Dynamically adjust
microLamportsbased on observed competition for the accounts you care about.
This is how many arbitrage, sniping, and liquidation bots operate: they treat priority fee as a bidding market and tune it in real time.
Common Misconceptions About Solana Fees
“Solana fees are always basically zero, so I don’t need to care.”
They’re low compared to Ethereum, but priority fees can become meaningful when:
- You trade frequently.
- You snipe hot launches.
- You run bots that submit many transactions per minute.
Ignoring fees can materially cut into PnL for active traders.
“If I just max priority fee, I’ll always win.”
Not necessarily:
- Validators still enforce compute limits and other constraints.
- If your transaction is poorly constructed (e.g., too low slippage, bad routing), it can fail even with high fees.
- Overbidding on every trade is a good way to leak edge to validators and the network.
“Network congestion = global gas war.”
On Solana, congestion is often local to specific accounts:
- A memecoin mint might be overloaded while a stablecoin pool is fine.
- You might need high priority fees for one trade and almost none for another in the same block.
Practical Checklist for Solana DEX Traders
When sending a trade on Solana, especially during volatile periods, run through this quick checklist:
- How time-sensitive is this trade?
- If it’s a routine rebalance, default priority is fine.
-
If it’s a snipe or urgent exit, bump priority.
-
How hot is the pool or token?
- New memecoin or hyped NFT mint → expect competition and pay up.
-
Quiet, large-cap pool → standard priority usually works.
-
What does your last failed transaction tell you?
- Check explorers for compute usage and errors.
-
If you’re consistently under the priority fee of successful transactions, increase your bid.
-
Are you overpaying for no reason?
-
If trades clear instantly in calm markets, try stepping down from High to Standard and see if reliability stays the same.
-
For bots or advanced users:
- Implement dynamic fee bidding based on recent blocks and account-level congestion.
Conclusion: Treat Priority Fees as a Trading Input
On Solana, fees are not just a background detail—they’re an active parameter you control:
- Base fees are tiny and mostly irrelevant for decision-making.
- Compute units and priority fees determine whether your trade lands in time, especially in hot markets.
- Local fee markets mean you should think in terms of which account or pool you’re competing for, not just global network load.
If you understand how priority fees work and adjust them intentionally, you’ll:
- Reduce failed or stuck transactions,
- Avoid overpaying during calm conditions, and
- Increase your odds of getting filled when it matters most.
For Solana traders, mastering fees and priority fees is part of mastering the chain itself.