Solana fees are usually tiny, but they have their own parts: a fixed base fee, an optional priority fee and sometimes rent. This article explains each part and what happens when the network is busy.
For a general introduction to fees, read gas and fees. For the chain itself, see Solana.
The base fee
Every Solana transaction pays a base fee of 5,000 lamports for each signature. A lamport is one billionth of a SOL, so 5,000 lamports is 0.000005 SOL. Most simple transactions have one signature, so the base fee is 5,000 lamports. A transaction signed by two wallets pays twice that.
The base fee does not depend on the amount sent, or on how busy the network is. It stays fixed, which is why Solana is usually very cheap.
Compute units
Solana measures work in compute units (CU). They play the role that gas plays on Ethereum. Each instruction in a transaction uses some compute units. As rough, typical values:
- A simple SOL transfer uses a few hundred CU.
- An SPL token transfer, such as USDC, uses a few thousand CU.
- A swap on a decentralized exchange can use hundreds of thousands of CU.
Each transaction has a compute unit limit, the most CU it may use. By default a transaction gets a standard limit per instruction, and the maximum for a whole transaction is 1.4 million CU. A transaction that tries to use more than its limit fails. Wallets often simulate the transaction first and then set a limit just above what it needs.
The priority fee
On top of the base fee, you can pay a priority fee. It is set with two numbers:
- The compute unit price, in micro-lamports per compute unit. A micro-lamport is one millionth of a lamport.
- The compute unit limit you ask for.
priority fee = compute unit price x compute unit limit
Example: a compute unit price of 1,000 micro-lamports and a limit of 200,000 CU gives 1,000 x 200,000 = 200,000,000 micro-lamports, which is 200 lamports. The total fee is then 5,000 + 200 = 5,200 lamports.
An important detail: the priority fee is charged on the limit you set, not on what the transaction really used. A limit that is far too high wastes money, and one that is too low makes the transaction fail. This is why a good wallet sets the limit carefully.
Why priority fees matter when it is busy
Each Solana block has a limit on compute units, and individual accounts can only be written by one transaction at a time. When many users try to use the same popular program or the same token pool, for example during a token launch, transactions compete. Those with a higher priority fee are more likely to be processed first. Others can be delayed or dropped, and then you must try again.
If the network is quiet, a priority fee is often not needed. If the network is busy, a small priority fee can be the difference between a quick success and a failed attempt.
How wallets set it
Most wallets and apps do this for you.
- They simulate the transaction to see how many CU it needs and set the limit with a small margin.
- They ask the network for recent priority fees paid for the accounts the transaction uses.
- They offer levels such as low, medium or high, or a "custom" field for advanced users.
Some apps let you pick a maximum you are willing to pay, so that the fee does not run away during a rush.
Rent and token accounts
Solana stores data in accounts, and keeping an account alive needs a minimum balance of SOL called rent exemption. In practice it is a deposit.
A wallet holds each token in a separate token account. If someone sends you USDC for the first time and you have no USDC token account, one must be created. The creation costs about 0.002 SOL. This deposit is not a fee in the usual sense: you can get it back if the account is closed. But it makes the first transfer of a token to a new wallet cost more than the usual number.
The gas page says this in a note when you look at the Send token action on Solana: the estimate leaves out rent for a new token account.
How ChainMonitor reads the estimates
The Solana network can tell you what priority fees were paid in recent slots. ChainMonitor asks for those fees on a few very busy accounts (the USDC token, wrapped SOL and a popular swap pool), because the fees paid when competing for busy accounts show what you need to beat. It ignores slots with a zero priority fee, and then takes three levels from the rest: low, median and high.
Then it calculates a cost for each action: 5,000 lamports plus the priority fee for a typical number of compute units, around 450 for a SOL transfer, 6,200 for a USDC transfer and 200,000 for a swap. These are the economy, normal and fast figures you see for Solana on the gas page. They are estimates for typical transactions, and your own transaction can differ. The fee is converted to dollars with the current SOL price.
What to look for on a transaction page
On a Solana transaction page you can see the fee paid, the compute units consumed and the instructions run. Check how to read a transaction to learn the fields. Live blocks are on the Solana page.
Frequently asked questions
How much does a Solana transaction cost?
The base fee is 5,000 lamports (0.000005 SOL) per signature. Add the priority fee, if any, and rent if a new token account is created. See the gas page for the live dollar value.
What is a micro-lamport?
It is one millionth of a lamport. The compute unit price on Solana is quoted in micro-lamports per compute unit.
Do I need a priority fee?
Not always. When the network is quiet or you use an app that is not under heavy load, the base fee is often enough. During busy moments a small priority fee helps your transaction land.
Why was my Solana transaction dropped?
Common reasons are a priority fee that was too low during a rush, a compute unit limit that was too low, or an old blockhash. Resending with a higher fee usually helps.
What is rent on Solana?
It is a deposit of SOL that keeps an account alive on the chain. For a token account it is about 0.002 SOL, and you get it back when the account is closed.