Ethereum’s fee market: base fee, priority fee, and why gas spikes
Ethereum fees are set by an algorithm with a hard limit on how fast it can move — at most 12.5% per block. That single rule explains both why gas can multiply in two minutes and why it can never spike instantly.
Priced at publication
Now
Prices are indicative and may be delayed. A change since publication is not a performance claim and not financial advice.
Not financial advice. This article is for informational purposes only.
The short version
An Ethereum fee has two parts. The base fee is set by the protocol, adjusts automatically toward half-full blocks, moves at most 12.5% per block, and is destroyed rather than paid to anyone. The priority fee is what you add on top to be included sooner, and it goes to the block proposer. Fee spikes are the base fee compounding: 12.5% per block for ten consecutive blocks is roughly 3.2x in about two minutes.
Most explanations of Ethereum fees stop at “it depends on network demand”, which is true and useless. The mechanism is actually quite precise, and once you can see it, gas stops feeling arbitrary. There are two numbers, one algorithm, and one hard constraint on how fast that algorithm is allowed to move.
Gas is a unit of work, not a currency
Gas measures computational work. Every operation the network can perform has a fixed gas cost, set by the protocol and identical for everyone. A simple transfer of ether costs 21,000 gas whether the network is quiet or overwhelmed. Interacting with a smart contract costs more, depending on what the contract does.
So the amount of gas you need is a property of the transaction. What varies is the price you pay per unit — and that is where the two-part structure comes in.
The base fee: an algorithm, not an auction
Since the fee-market change introduced in 2021, each block carries a base fee per unit of gas that is set by the protocol rather than bid for. Every user in a given block pays the same base fee. It is calculated from the previous block, using one rule:
- Blocks have a target size and a maximum of twice that target.
- If the previous block was exactly at target, the base fee stays the same.
- If it was above target, the base fee rises — by at most 12.5%.
- If it was below target, the base fee falls — by at most 12.5%.
That is the whole mechanism. It is a feedback loop steering block occupancy toward the target, and the 12.5% cap is the reason fees behave the way they do.
The base fee is then burned — removed from supply entirely rather than paid to a validator. This matters for two reasons. It means no participant profits from congestion, so nobody has an incentive to manufacture it. And it means network usage permanently reduces the ether supply, which is why fee revenue is discussed alongside issuance when people argue about Ethereum’s supply dynamics.
Why “gas spiked instantly” is never quite true
The 12.5% cap means the base fee cannot jump. It can only compound. Ethereum produces a block every 12 seconds under normal conditions, so a sustained run of completely full blocks gives you:
| Consecutive full blocks | Elapsed time | Base fee multiple |
|---|---|---|
| 1 | 12 seconds | 1.125x |
| 5 | 1 minute | 1.80x |
| 10 | 2 minutes | 3.25x |
| 20 | 4 minutes | 10.5x |
| 40 | 8 minutes | 111x |
Every figure above is just 1.125 raised to the number of blocks. Nothing else is needed to explain a tenfold fee increase over a few minutes, and nothing about it requires a conspiracy or a bug.
The same arithmetic runs in reverse. Once demand falls away and blocks come in under target, the base fee decays at up to 12.5% per block, which halves it in about six blocks — a little over a minute. This is the single most practical consequence of the design: fee spikes are short-lived unless demand is genuinely sustained. If a transaction is not urgent, waiting ten minutes is frequently the entire optimisation.
The priority fee: the part you actually choose
The base fee gets you into the queue at the protocol’s price. The priority fee is a tip on top, paid to whoever proposes the block, and it determines your ordering relative to other transactions competing for the same space.
When blocks are below target there is spare room, so a minimal tip is usually enough — you are not competing with anyone. When blocks are full, the tip becomes a real auction, and this is the part of your fee that can genuinely be bid up without limit. A wallet showing you “slow / average / fast” options is almost always varying the priority fee, not the base fee, because the base fee is not yours to vary.
You also set a fee cap: the maximum total you are willing to pay per unit of gas. If the base fee rises above your cap while your transaction is pending, it simply waits rather than executing at a price you did not agree to. Anything you were willing to pay above the actual base fee plus your tip is refunded.
What makes fees high in the first place
Congestion is competition for a fixed amount of block space. In practice it comes from a few recognisable sources: a heavily oversubscribed token distribution where thousands of participants race for the same allocation; a sharp market move that triggers many simultaneous liquidations and rebalances; a newly popular application whose transactions are individually gas-heavy; and periods where automated arbitrage between venues intensifies.
Notice what these have in common — they are all bursts of simultaneous, time-sensitive demand. Ordinary steady usage does not spike fees, because the base fee algorithm has time to find its level.
The structural answer: move the work elsewhere
Ethereum’s long-run approach to fees is not to make the base layer cheaper by making blocks bigger. It is to settle transactions on a layer 2 network and post compressed data back to the base layer, so many transactions share the cost of one settlement.
A later protocol change added a dedicated, separately priced data channel for exactly this traffic, with its own independent fee market. The practical effect is that layer-2 costs are no longer tightly coupled to base-layer congestion — which is why the fee you pay on a rollup and the fee you pay on Ethereum itself can now diverge sharply during the same busy hour.
Checking the current number
Because the base fee is a live protocol value, the only honest way to know it is to read it. Our gas tracker reads the current base fee and priority fee from a node and states when it last did so. Everything in this article explains how that number got there; it deliberately does not quote one, because any figure written into a sentence here would be wrong within the minute.
Key takeaways
- Gas is a fixed unit of computational work; a plain ether transfer is always 21,000 gas. Only the price per unit moves.
- The base fee is set by the protocol, is identical for everyone in a block, and is burned rather than paid to anyone.
- It can change by at most 12.5% per block, so spikes compound rather than jump — about 3.2x in two minutes, 10.5x in four.
- The same cap applies to the decay, which halves the base fee in roughly six blocks. Waiting is often the whole fix.
- The priority fee is the part you choose and the part that can be bid up without limit when blocks are full.
- Your fee cap protects you: if the base fee exceeds it, the transaction waits instead of executing at a price you did not accept.
- Layer-2 networks with their own data fee market are the structural answer, which is why rollup and base-layer fees can now diverge.