Two transactions, same wallet, same amount, same recipient. One costs $0.40, the other costs $40. Welcome to gas fees — the most consistently confusing part of crypto.
If you’ve used Ethereum, Polygon, Base, or any other EVM blockchain, you’ve stared at a wallet popup quoting a fee that seemed completely disconnected from what you were trying to do. Send 5 USDC to a friend? That’ll be $12 in gas. Mint a free NFT? $0 for the NFT, $30 in gas.
It feels broken. It isn’t. Gas fees are doing exactly what they were designed to do — they’re just doing it in a way that’s hostile to intuition.
Here’s the full picture.
What gas actually is
Every transaction on a blockchain consumes computational work. Verifying a signature, updating an account balance, running a smart contract — all of it costs the network real CPU time and storage. “Gas” is the unit that measures this cost.
Different operations cost different amounts of gas:
- A plain ETH transfer: 21,000 gas
- A typical ERC-20 token transfer: 50,000–80,000 gas
- A Uniswap swap: 150,000–300,000 gas
- A complex DeFi interaction: 500,000+ gas
- Deploying a smart contract: 1,000,000+ gas
These numbers are fixed by the protocol. A USDC transfer always uses roughly the same amount of gas, no matter when you send it, where you send it, or what the network is doing.
What changes — dramatically — is the price you pay per unit of gas.
The two halves of a fee
Your total fee is:
Total fee = gas used × gas price
You can’t control gas used (it’s set by what operation you’re doing). You can influence gas price (it’s set by market conditions and what you’re willing to pay).
Gas price is measured in gwei — a billionth of an ETH. So a gas price of “30 gwei” means each unit of gas costs 0.00000003 ETH. Multiply that by 21,000 (for a simple transfer) and you get 0.00063 ETH, or roughly $2 at $3,000 ETH.
On a busy day, that gas price might be 100 gwei. Same transfer, now $7. On a really busy day — a major NFT mint, a meme coin frenzy, a Federal Reserve announcement — it might be 500 gwei. Now your $5 transfer costs $35.
This is the source of most “what just happened” moments in crypto.
Why gas prices change
A blockchain has limited capacity — only so many transactions can fit in each block. When demand for that capacity exceeds supply, users bid against each other for inclusion. The protocol sorts transactions by what they’re willing to pay, includes the highest bidders first, and leaves the rest waiting for the next block.
This is a continuous auction. When traffic is light, fees drop because there’s no competition. When traffic is heavy, fees climb because everyone’s racing to get included.
What causes traffic spikes:
- NFT mints with limited supply and high hype
- Token launches with bots racing to buy first
- Liquidations during volatile market moves (everyone trying to exit at once)
- Airdrops when claim windows open
- High-profile events (major DeFi launches, governance votes, ETF news)
The same blockchain that costs $0.50 per transaction at 3 AM on a quiet Sunday can cost $50 per transaction during a popular token launch.
EIP-1559 and the “base fee” model
Most modern EVM chains use a fee mechanism called EIP-1559, introduced on Ethereum in August 2021. Under EIP-1559, your fee is split into two parts:
- Base fee — a price set automatically by the protocol based on how full recent blocks have been. Burned (destroyed) when paid.
- Priority fee (tip) — optional bonus you pay to validators to prioritize your transaction.
The base fee adjusts every block: if the last block was more than half full, the base fee rises. If it was less than half full, the base fee falls. This creates a smoother fee market that’s less prone to wild spikes.
Your wallet typically shows you:
- Max fee — the highest gas price you’re willing to pay
- Priority fee — the tip to validators
- Estimated cost — what you’ll actually pay (usually less than the max)
If the base fee drops between when you submit and when you’re included, you save money. The protocol refunds the unused portion.
L1 vs L2: why Polygon and Base are so much cheaper
The biggest practical difference in gas fees today isn’t between blockchains — it’s between layer 1 chains (like Ethereum mainnet) and layer 2 chains (like Polygon, Base, Arbitrum, Optimism).
L1 is the base layer. Every full node verifies every transaction. Capacity is limited because every operation has to be replicated across thousands of computers.
L2 is built on top. Transactions are bundled, processed off-chain (or on a separate execution layer), and only the compressed result is posted back to L1. This means L2s can process orders of magnitude more transactions for a fraction of the cost.
Concrete comparison for a basic ERC-20 transfer:
- Ethereum mainnet: $1–$15 typical, $50+ during congestion
- Polygon PoS: $0.01–$0.10
- Base: $0.01–$0.30
- Arbitrum: $0.05–$0.50
L2 transactions are still secured by Ethereum L1 — they just don’t pay full L1 prices for every operation. For most everyday use cases (swapping tokens, sending payments, playing games), L2 is the right choice.
Why your wallet’s gas estimate is sometimes wrong
If you’ve ever had a transaction fail with “out of gas” — your wallet estimated incorrectly. This happens for a few reasons:
Network state changed. Gas usage depends on the current state of the contract. If the state changes between estimation and execution, the actual gas needed might be different. A swap on Uniswap costs slightly different amounts depending on what’s in the pool when your transaction lands.
Complex contracts with conditional logic. A contract that does different work depending on inputs might use more gas in some cases than others. Estimators usually catch the common case, but edge cases slip through.
MEV bots or competing transactions. If another transaction modifies state right before yours, your transaction might end up doing more (or different) work.
When estimates fail, the solution is usually:
- Set a higher gas limit manually
- Wait for less network congestion and retry
- Check if the action you’re trying to do actually still works (e.g., a sale might already have sold out)
How to time transactions for lower fees
If you’re not in a rush, you can save significantly on fees by waiting for quiet times.
Quiet times (when fees tend to be low):
- Weekends, especially Sunday mornings (US time)
- Late nights and early mornings UTC
- Periods of low market volatility
Busy times (when fees spike):
- Weekday afternoons (US business hours)
- Right after major news drops
- During hype cycles for specific tokens
Tools like the Ethereum gas tracker on Etherscan, or ethgastracker.com, show real-time gas prices and trend lines. You can submit a transaction with a lower priority fee and wait — it’ll execute when the base fee drops to a level your max fee can cover.
For non-urgent transactions on Ethereum mainnet, this can mean the difference between $5 and $50.
Common gas fee scenarios — what to expect
A reality check for typical actions, assuming moderate network conditions:
On Ethereum mainnet
- ETH transfer: $1–$5
- ERC-20 transfer: $3–$15
- Uniswap swap: $10–$60
- OpenSea listing: $5–$25
- OpenSea purchase: $15–$80
- NFT mint (popular collection): $30–$200+
On Polygon PoS
- POL transfer: $0.001–$0.01
- ERC-20 transfer: $0.01–$0.05
- Quickswap trade: $0.05–$0.20
- NFT mint: $0.05–$0.50
On Base
- ETH transfer: $0.05–$0.20
- Token swap: $0.10–$1.00
- NFT mint: $0.20–$2.00
On Arbitrum
- Similar to Base, slightly cheaper for swaps, slightly pricier for token transfers
These ranges shift over time as network usage changes and as the chains themselves get more efficient.
Why your transaction is “stuck”
A transaction that’s been pending for hours usually has one of three causes:
1. Gas price too low. You submitted with a max fee below the current base fee. The transaction sits in the mempool, but no block includes it because it can’t pay enough.
Fix: Resubmit (or “speed up” in MetaMask) with a higher gas price.
2. Nonce gap. You have an earlier transaction stuck, and any later transactions are waiting on it.
Fix: Cancel or speed up the oldest pending transaction first.
3. RPC issue. Your wallet thinks the transaction is pending, but it never reached the network. This is rare with reliable RPC providers but happens occasionally.
Fix: Check the transaction hash in a block explorer. If it doesn’t appear, resubmit from a different wallet session or RPC endpoint.
What you actually need to know
If you take only a few things from this:
- Gas fees are unpredictable on mainnet, cheap on L2. Use L2 unless you specifically need mainnet.
- Wait if you can. Off-hours fees can be 5–10x lower.
- Your wallet shows you an estimate, not a guarantee. Set a slightly higher max fee than the estimate to avoid failures.
- Failed transactions still cost gas. If a transaction reverts on-chain, you pay the gas it consumed up to that point. Always simulate transactions before signing when possible.
- L2 fees aren’t free either. They’re just much cheaper. L2 still has its own busy periods (especially Base during meme coin season, Arbitrum during airdrops).
Crypto gas fees aren’t going away. They’re how decentralized networks allocate scarce block space without a central operator deciding who goes first. But understanding them — really understanding them — turns them from a frustrating mystery into a predictable cost you can plan around.
Want to test transactions across multiple chains? rpcfree.com offers free RPC endpoints for Ethereum, Polygon, Base, and Arbitrum — useful for development, testing, or just checking what fees look like across chains at any given moment.