Why Are Arbitrum Gas Fees Sometimes Higher Than You Expect?
The question I see every week
"Arbitrum is supposed to be cheap. Why did my swap just cost $0.40?"
Fair question. The answer is the one thing most explainer articles skip: on Arbitrum, your gas fee has two completely different components, and only one of them behaves like "gas" as you know it.
I had a friend message me last month after his Camelot swap cost $0.18 on a Tuesday morning. He'd checked Arbitrum gas beforehand and it looked fine. What he hadn't checked was Ethereum mainnet — gwei was spiking on some ETF news, and his L1 data fee quadrupled between the wallet preview and confirmation. These are the moments the two-fee structure actually bites you.
The two fees hiding in one transaction
Every Arbitrum transaction pays:
- L2 execution fee — the cost of actually running your transaction on Arbitrum. This is tiny. Fractions of a cent, basically noise.
- L1 data fee — your share of the cost of posting the transaction data to Ethereum mainnet. This is the real fee. It moves up and down with mainnet congestion, not Arbitrum congestion.
That last part is the key. When Ethereum mainnet is busy — a big NFT drop, a meme coin frenzy, one of those days — the cost of writing data to L1 rises, and Arbitrum fees rise with it. Arbitrum itself might be half empty. Your receipt doesn't care.
Base has the same architecture, by the way. The difference is that Base's data compression is slightly tighter, so its L1 slice tends to be a bit smaller in practice.
There's a floor on the L1 side too. Even a tiny Arbitrum transaction — approving a token you'll never use, say — still has to post its data to mainnet. So there's a minimum you can't go below, around $0.001 to $0.002 on a quiet day. It's why an "Approve this token" sometimes feels oddly expensive relative to the swap that follows. You're paying for the data, not the computation.
What normal looks like on Arbitrum
On an average day, based on the numbers from the live Arbitrum tracker:
- ETH transfer: ~$0.001
- ERC-20 transfer: ~$0.002
- A swap on Camelot or Uniswap: $0.003 to $0.008
- A GMX position open/close: $0.005 to $0.02 depending on size and settings
- NFT mints: $0.005 to $0.02
When mainnet is congested, multiply those by 3 to 10. A $0.005 swap becoming $0.04 isn't a glitch — it's the L1 fee doing exactly what it's designed to do.
I track GMX trades specifically because I use the protocol, and the per-position cost has stayed in that $0.005 to $0.02 band for over a year now. Minus a few spikes during liquidation cascades — those push the upper bound — there's no real trend up or down. The chain added users; the fees didn't budge. That's the L2 promise actually working.
So how do I avoid the expensive windows?
Since the L1 fee follows mainnet, the trick is watching mainnet's rhythm rather than Arbitrum's. Ethereum gas historically runs lowest during US night hours, roughly 1 AM to 6 AM UTC. If mainnet gwei is sitting under 20, your Arbitrum transactions will be cheap. If it's above 60 and you're not in a rush, wait.
A couple of other habits that help:
- Don't set approvals to unlimited unless you actually trust the contract. Smaller approvals mean less data when you later interact — marginally, but it adds up.
- Batch what you can. A smart-contract wallet like Safe can fold an approval plus a swap into one transaction, so you pay the L1 data overhead once.
- Use the official Arbitrum bridge for large L1 deposits. Third-party bridges are faster but the fee difference on big amounts is real.
A direct habit that pays off: keep an eye on a mainnet gas tracker alongside the Arbitrum one. If you see Ethereum gwei sitting at 12, fire off whatever you've been queuing. If it's at 80, hold. You don't need to refresh constantly — just glance before any session that involves more than a quick swap.
One vs Nova — quick note
Arbitrum Nova is the cheaper, more centralized-feeling cousin chain. Fees run lower still, but most DeFi liquidity sits on Arbitrum One, which is what our tracker monitors. Unless you're deep into gaming or social apps on Nova, One is where you'll spend your time.
Worth mentioning: Arbitrum's Stylus rollout — letting contracts compile to WebAssembly alongside Solidity — has started pulling some gaming and high-throughput apps back toward One rather than Nova. So even the use-case split that used to send people to Nova is blurring. For most readers, One is still the answer.
Want the current numbers before you transact? The Arbitrum gas calculator shows live fees in USD and eight other currencies, with an AI take on whether prices are trending up or down in the next few hours.
How to read the fee before you sign
Here's something that trips people up: the gas number your wallet quotes before you confirm isn't always what you pay. On Arbitrum, the L2 execution portion is predictable — the wallet knows exactly how much computation your call needs. The L1 data fee, though, gets recalculated at execution time based on current mainnet gas prices. If mainnet moves between your click and your block inclusion, the actual cost drifts.
Usually this difference is tiny — a tenth of a cent. During volatile windows it can be 20% to 30%. Two habits keep it from surprising you: don't sit on a signed transaction (the estimate goes stale the moment mainnet gwei moves), and when the fee actually matters — bridging, minting, anything above a $0.01 swap — cross-check the wallet's number against the live Arbitrum calculator. If they're wildly different, something moved, and you should re-decide whether now is the right moment.