Every Solana transaction pays a fee in SOL that has two parts.
Priority fees are not a special product. They are a parameterized bidding mechanism inside the standard transaction format.
Solana measures transaction execution cost using compute units (CUs). A transaction requests a compute budget and is charged prioritization fees based on that request.
The default limits is set at 200,000 CUs per instruction and 1,400,000 CUs maximum per transaction. The compute budget matters for two reasons.
A transaction that runs out of compute fails, even if it would otherwise be valid. A transaction that requests an unnecessarily high compute limit can overpay on priority fees.
Priority fees are defined as a compute unit price. Compute unit price is an optional amount of micro-lamports paid for each requested CU, and that setting the CU price directly determines the prioritization fee.
The control mechanism is the Compute Budget program. Transactions can include special instructions that request a compute unit limit and set a compute unit price.
Solana’s compute budget page uses SetComputeUnitLimit and SetComputeUnitPrice instructions to optimize while the priority fee is based on requested CUs, not actual usage. That single sentence is the most important operational rule.
Priority fees are a bid on requested capacity. They are not a meter on used capacity.
A usable approximation is:
Prioritization fee (lamports) = requested compute units × compute unit price (micro-lamports per CU) ÷ 1,000,000.
Solana’s fee pages define micro-lamports per lamport as 1,000,000, which is the conversion step. The total transaction fee becomes:
Total fee = base fee (signatures) + prioritization fee.
The base fee is paid regardless of priority fee usage. The prioritization fee is optional, but under heavy load it often determines whether a transaction lands promptly.
During congestion, the leader has more transactions to choose from than the block can fit. Priority fees increase a transaction’s likelihood of being scheduled.
The prioritization fee increases the likelihood the current leader schedules a transaction ahead of competing ones. This creates a market:
This is not unique to Solana. What is distinct is the compute-based pricing, which directly ties bids to requested compute capacity.
Priority fees and compute budgets solve different failure modes.
If the compute unit limit is too low, the transaction fails with a compute exhaustion error.
No amount of priority fee fixes a compute cap that is below what the programs need.
If the compute unit price is too low under congestion, the transaction may not be scheduled quickly enough.
If it misses its validity window, it can fail or be dropped depending on the sender’s retry logic.
In practical terms, reliable sending requires both a realistic compute limit and a competitive compute unit price.
Priority fees help, but reliable sending is a workflow, not one knob.
Solana’s compute budget documentation explicitly recommends using SetComputeUnitLimit, and it provides the default and maximum limits. A practical workflow is to simulate a transaction, observe compute usage, then set the requested limit slightly above observed usage.
This reduces both compute-failure risk and overpayment risk.
Solana’s fee structure uses the compute unit price as the priority fee control surface.
A wallet UI that exposes “priority fee” is often mapping that setting to SetComputeUnitPrice. The cost scales with requested compute. High-CU transactions can become expensive quickly if CU price is set aggressively.
Because the priority fee is based on requested CUs, not actual usage, requesting 1,400,000 CUs when the transaction will use 200,000 CUs can multiply priority fee costs by roughly 7x.
This is the most common reason users overpay.
Congestion is not a constant. It clusters around launches, airdrops, NFT mints, and peak trading windows. During those windows, the “right” CU price changes rapidly.
Solana’s fee structure page points to priority fee API providers for real-time compute unit price estimates, which signals that fee selection is a dynamic market and often requires external estimation rather than guesswork.
Solana transactions have a limited lifetime tied to recent blockhashes. Even a correctly priced transaction can fail if it is submitted late, not retried, or not resubmitted with a fresh blockhash.
Reliable sends are therefore as much about RPC behavior and retry logic as they are about fee bidding.
Priority fee does not guarantee inclusion: Priority fee increases probability. It does not override compute exhaustion, account locks, or simulation failures.
Priority fee is not based on actual compute used: The priority fee is based on requested CUs, not actual usage.
Setting CU price without setting CU limit can be inconsistent
Underestimating the impact of account contention: Even with a high priority fee, transactions that contend for the same writable accounts can serialize behind each other. Priority fee does not remove account locking constraints.
Base fee and fee components: Solana’s fees page provides the base fee per signature and describes the prioritization fee mechanism.
Requested compute units: The compute budget page provides the default and maximum compute unit limits and explains the requested-versus-used distinction for priority fee billing.
Compute unit price setting: The fee structure page ties compute unit price to prioritization fee and describes it as micro-lamports per requested CU.
Whether the wallet is over-requesting compute: Over-requesting compute is a silent cost multiplier under congestion.
Whether the sender retries with fresh blockhashes: A reliable sender refreshes blockhashes and retries appropriately when blocks are full.
Solana priority fees are a compute-priced bid for inclusion. Transactions pay a base fee per signature plus an optional prioritization fee, and the prioritization fee is determined by a compute unit price in micro-lamports per requested CU. The compute budget controls both requested compute units and compute unit price, and Solana’s documentation highlights that the priority fee is based on requested CUs rather than actual usage.
A reliable send workflow treats fees and compute as separate controls. Set a realistic compute unit limit based on simulation, set a compute unit price that matches congestion conditions, avoid bloated compute requests that multiply fees, and use a sender that retries correctly within transaction validity windows. When these mechanics are applied, priority fees become a predictable congestion tool rather than a confusing “gas setting.”
The post Solana Priority Fees Explained: Compute Units, Congestion, and Reliable Sends appeared first on Crypto Adventure.