# Ethereum L2 Fees Compared: Cost per Transaction

> Compare L2 fees on Base, Arbitrum, OP Mainnet and other rollups: what a transfer or swap costs now, the L1 data fee in it and the cheapest L2 each day.

Markdown copy of https://voltfincrypto.com/apps/ethereum-l2-fees

**Question:** Which Ethereum layer 2 is cheapest for a transfer or a swap right now?

- Kind: Dashboard in Voltfin Vantage
- Topic: [Layer 2s](https://voltfincrypto.com/topics/layer-2)
- Chains: Multi-chain, Base, Arbitrum, OP Mainnet, ZKsync, Linea, Scroll, Unichain
- Status: Planned. The data is not published yet, so this page states no figure; each figure will open its receipt when it is.

A layer 2 fee has two parts: the cost of executing the transaction on the layer 2, and a share of what the rollup pays to publish its data on Ethereum. This dashboard shows both for each covered layer 2, for an ETH transfer, a token transfer and a swap, so the cheapest chain for each action is plain to see.

Costs are shown two ways: the median that recent transactions of that kind actually paid and what the action would cost now according to the chain's own fee estimator. When the two disagree, the receipts are the measure and the gap is shown.

Use it to choose a chain for a payment or a trade, or to watch how layer 2 fees respond when Ethereum blob prices move. Each figure links to the blocks and receipts behind it.

## Blueprint

### Now

What each action costs on each layer 2 at current fees.

- **Cheapest chain for a token transfer** (USD): The covered layer 2 with the lowest median cost for an ERC-20 transfer over the last hour, and that cost.
- **Cheapest chain for a swap** (USD): The covered layer 2 with the lowest median swap cost over the last hour, and that cost.
- **Median token transfer, all L2s** (USD): The median cost of an ERC-20 transfer across every covered layer 2 over the last hour.
- **Same transfer on Ethereum** (USD): The median cost of an ERC-20 transfer on Ethereum mainnet over the last hour, for scale.
- **Cost by chain and action**: For each layer 2: the estimated and the median paid cost of an ETH transfer, a token transfer and a swap, in USD and in the gas token, with the L1 data share.
- **Ethereum data share of the fee** (%): The share of each layer 2's median fee that paid for publishing data to Ethereum, over the last hour.

### History

How layer 2 fees moved by day and how much of them paid for Ethereum data.

- **Median fee, period** (USD): The median fee of the chosen action across covered layer 2s over the selected period.
- **Blob base fee, daily median** (gwei): The median blob base fee on Ethereum on the latest complete day, which drives the data part of rollup fees.
- **Median fee by day and chain** (USD): The daily median cost of the chosen action on each covered layer 2.
- **Execution and data fees by day** (USD): Fees users paid each day across covered layer 2s, split into layer 2 execution fees and L1 data fees.

Filters: Action (ETH transfer, token transfer or swap); Period (Last week, month or year).

## How it will be measured

- Fees paid are read from layer 2 receipts: gas_used times effective_gas_price, plus the l1Fee field and any operator fee on OP Stack chains. On Arbitrum the L1 part is already inside gas_used and is shown apart through gasUsedForL1.
- Transactions are classified by their call: plain ETH transfers, ERC-20 transfer calls (selector 0xa9059cbb) and swaps through known router contracts. The median of each class is taken over the last hour and over each day.
- Current costs come from each chain's own estimators, such as the OP Stack GasPriceOracle getL1Fee and Arbitrum's NodeInterface gasEstimateComponents, for a standard transfer and swap at the latest block.
- Fees are converted to USD with the Chainlink ETH/USD feed at the same block, and every figure keeps its gas-token value beside the USD one.

## Data it needs

- `gas_blocks` (to build): Base fee, priority fee percentiles, gas used and gas limit for each block on fee-market chains, for a near-live gas tracker.
- `l2_activity_daily` (to build): Per layer 2 per day: transactions, active addresses, fees users paid on the L2, and what the L2 paid Ethereum to settle and post data.
- `blob_usage_daily` (to build): EIP-4844 blobs posted per day, blob gas used, blob base fee, and the rollup that posted them.
- `native_prices_daily` (to build): Reference prices of major assets read from on-chain oracle feeds (Chainlink latestRoundData) at each day's last block, with each round's update time.
- Source: Layer 2 receipts: gas_used, effective_gas_price, l1Fee, l1GasUsed, l1BlobBaseFee and operator fee fields on OP Stack chains
- Source: Arbitrum receipts: gasUsedForL1, the L1 part of gas used
- Source: The function selector of each transaction, to classify ETH transfers, ERC-20 transfers and swaps through known routers
- Source: OP Stack GasPriceOracle getL1Fee and Arbitrum NodeInterface gasEstimateComponents for current-cost estimates
- Source: Chainlink ETH/USD latestRoundData at the same block

## Questions

### Which Ethereum layer 2 is cheapest?

The cheapest chain changes with demand on each layer 2 and with blob prices on Ethereum, and it can differ by action. The dashboard ranks chains by the median cost of each action over the last hour, so the answer is current and specific to what you want to do.

### Why do layer 2 fees change when Ethereum is busy?

Part of every layer 2 fee pays for posting data to Ethereum. When a rollup posts its data in blobs, that part follows the blob base fee, which rises only when blob demand runs above its target. Execution on the layer 2 itself is priced by the chain's own base fee.

### What is the L1 data fee?

On OP Stack chains it is the l1Fee in each receipt: the estimated cost of publishing that transaction's compressed bytes to Ethereum, computed from the Ethereum base fee, the blob base fee and the chain's fee scalars. Arbitrum charges the same cost as extra gas, recorded as gasUsedForL1.

### Why does a swap cost more than a transfer?

A swap calls more contracts and changes more storage, so it uses more gas on the layer 2. Its calldata is also longer, which raises the data fee. The dashboard measures each action's median gas on each chain, so the difference is visible.

## Glossary

- **L1 data fee**: The part of a layer 2 fee that pays for publishing the transaction's data to Ethereum.
- **Effective gas price**: The price per unit of gas a transaction actually paid, recorded in its receipt: the base fee plus the tip.
- **Operator fee**: An optional per-transaction fee that an OP Stack chain operator can set, paid into its own fee vault.

## Related apps

- [Ethereum Gas Tracker](https://voltfincrypto.com/apps/ethereum-gas-tracker)
- [Ethereum Blob Fees and Blobs per Block vs Target](https://voltfincrypto.com/apps/ethereum-blob-fees)
- [Cheapest Blockchain Fees: Median Cost per Transaction](https://voltfincrypto.com/apps/cheapest-blockchain-fees)
- [ETH Transaction Fees by Action: Transfer, Swap, Bridge](https://voltfincrypto.com/apps/eth-transaction-fee-by-action)
- [L2 Profitability: Fees Earned vs Costs Paid to Ethereum](https://voltfincrypto.com/apps/l2-profitability)
- [Ethereum TPS: Mainnet and Layer 2 Transactions per Second](https://voltfincrypto.com/apps/ethereum-tps)

Build it in Voltfin Studio: https://app.voltfincrypto.com/signup?next=%2F
