{"id":"EIP-7825","name":"Transaction Gas Limit Cap","status":"Final","chain":"ethereum","category":{"id":"transaction-friction","name":"Transaction Friction","description":"Reducing clicks, signatures, and mental overhead"},"journeyStages":[{"id":"executing","name":"Executing Transactions","description":"Performing on-chain actions"},{"id":"gas","name":"Gas & Fees","description":"Paying for transactions"},{"id":"status","name":"Status & Confirmation","description":"Waiting for and confirming outcomes"}],"uxImpact":"EIP-7825 caps an Ethereum transaction's gas limit at 16,777,216 gas (2^24) on networks that activate it. Ethereum included the cap in Fusaka, which activated on mainnet on December 3, 2025. Large batch and deployment flows need a network-aware preflight and a recovery path that splits or redesigns oversized operations; eth_call is not subject to this transaction cap.","slug":"eip-7825","officialUrl":"https://eips.ethereum.org/EIPS/eip-7825","sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-7825","type":"official-spec"},{"label":"Discussion search","url":"https://ethereum-magicians.org/search?q=EIP-7825","type":"discussion"},{"label":"Fusaka mainnet announcement","url":"https://blog.ethereum.org/2025/11/06/fusaka-mainnet-announcement","type":"reference"},{"label":"Ethereum transaction gas-limit cap update","url":"https://blog.ethereum.org/2025/10/21/fusaka-gascap-update","type":"reference"},{"label":"Go Ethereum gas estimator Osaka cap","url":"https://github.com/ethereum/go-ethereum/blob/master/eth/gasestimator/gasestimator.go","type":"implementation"}],"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","hasDetailedContent":true,"content":{"id":"EIP-7825","specConstraints":[{"id":"eip-7825-split-large-transactions","constraint":"Transactions above the active gas-limit cap need a different operation plan, such as smaller transactions.","appliesTo":"application","normativity":"backwards-compatibility","specQuote":"Transactions with such high limits will need to be split into smaller operations.","specSection":"Backwards Compatibility","specUrl":"https://eips.ethereum.org/EIPS/eip-7825#backwards-compatibility","designImplication":"Preflight the selected network's transaction gas cap before signing. If a split is safe, preview its ordering, dependencies, and partial-result behavior instead of presenting it as an equivalent retry."},{"id":"eip-7825-complex-operation-cap","constraint":"Highly complex transactions, including large deployments, may need to be redesigned to fit the cap.","appliesTo":"application","normativity":"security-considerations","specQuote":"Certain highly complex transactions, such as large contract deployments, may require re-architecting to fit within the 16,777,216 gas cap.","specSection":"Security Considerations","specUrl":"https://eips.ethereum.org/EIPS/eip-7825#security-considerations","designImplication":"Treat an over-cap deployment or batch as a product-plan decision. Explain which work must be redesigned or split and do not imply that a lower gas estimate alone makes the original transaction valid."}],"sources":[{"label":"EIP-7825 official specification","url":"https://eips.ethereum.org/EIPS/eip-7825","type":"official-spec"},{"label":"Fusaka mainnet announcement","url":"https://blog.ethereum.org/2025/11/06/fusaka-mainnet-announcement","type":"reference"},{"label":"Ethereum transaction gas-limit cap update","url":"https://blog.ethereum.org/2025/10/21/fusaka-gascap-update","type":"reference"},{"label":"Go Ethereum gas estimator Osaka cap","url":"https://github.com/ethereum/go-ethereum/blob/master/eth/gasestimator/gasestimator.go","type":"implementation"}],"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","summary":"EIP-7825 caps an Ethereum transaction's gas limit at 16,777,216 gas (2^24) on networks that activate it. Ethereum included the cap in Fusaka, which activated on mainnet on December 3, 2025. Large batch and deployment flows need a network-aware preflight and a recovery path that splits or redesigns oversized operations; eth_call is not subject to this transaction cap.","partialDeployment":{"body":"The cap is active on Ethereum mainnet after Fusaka and was shipped in client releases for the fork. Do not import 16,777,216 into Monad or another EVM network without that network's fork configuration and client evidence; read the selected chain's current transaction and block parameters."},"designerTakeaways":["Show the selected network and the maximum transaction gas limit before a large batch or deployment is signed.","Distinguish gas estimation, simulation, transaction gas limit, and block gas limit; the cap applies to a transaction gas limit, not the whole block.","When the cap blocks an operation, explain which work can be split and preserve a reviewable multi-transaction plan."],"applicability":{"whenToUse":["A product builds large batches, contract deployments, routers, or other transactions that may approach the selected network's cap.","A wallet or SDK surfaces gas-limit estimates and needs to explain a preflight rejection.","The product can simulate the actual operation on the activated fork and offer a safe split or retry."],"whenToAvoid":["The selected network has no verified EIP-7825 activation or uses a different cap.","The operation is a read-only eth_call and the UI would apply a transaction-only rule to it.","Splitting the operation would change its atomicity or user-visible outcome without an explicit product decision."]},"prototypeFirst":[{"screen":"Large-operation preflight","why":"Users need to know whether one transaction can carry the requested work before they sign.","covers":["Under cap","Near cap","Over cap","Network unknown"],"include":["Network and fork","Estimated gas used","Requested gas limit","Transaction cap","Simulation result"]},{"screen":"Split-batch recovery","why":"A cap failure is only useful to users if the product explains what will happen to ordering and atomicity after a split.","covers":["Safe split","Atomicity lost","One chunk failed","Retry"],"include":["Chunk count and order","Per-chunk gas limit","Dependency warning","Progress and partial result"]}],"mentalModel":[{"label":"Transaction gas limit","description":"The sender's per-transaction gas allowance is the value constrained by EIP-7825."},{"label":"Gas used","description":"Execution may consume less than the limit; a low gas-used estimate does not make an over-cap gasLimit valid."},{"label":"Block gas limit","description":"A block can contain multiple transactions; the per-transaction cap is independent of the block's total gas limit."},{"label":"Network activation","description":"The cap applies only after the selected chain activates the relevant fork and clients enforce it."},{"label":"Operation plan","description":"Splitting an oversized transaction into chunks changes status, ordering, retry, and possibly atomicity, so the product must make that plan explicit."}],"statesToDesign":[{"state":"Network cap detected","trigger":"The selected chain and fork configuration expose an active transaction gas cap.","userNeed":"Know which limit governs the current action.","designResponse":"Show the cap with network and fork context and keep block gas limit as a separate value."},{"state":"Operation within cap","trigger":"The requested transaction gas limit is below the selected network cap and simulation succeeds.","userNeed":"Confirm the actual work and fee before signing.","designResponse":"Show estimated gas used, gas limit, fee estimate, and any remaining simulation risks."},{"state":"Operation over cap","trigger":"The transaction gasLimit exceeds 16,777,216 on Ethereum Fusaka or the selected network's configured cap.","userNeed":"A concrete way to continue or cancel.","designResponse":"Block signing, show the requested and maximum limits, and offer a split or redesign only when the product can preserve the intended semantics."},{"state":"Split plan ready","trigger":"The operation can be divided into ordered chunks.","userNeed":"Know the number, order, and failure behavior of the resulting transactions.","designResponse":"Preview each chunk, dependency, gas limit, and partial-result state before the first signature."},{"state":"Partial execution","trigger":"One chunk confirms while a later chunk fails or is rejected.","userNeed":"Know what changed and whether retry is safe.","designResponse":"Show per-chunk receipts, completed work, remaining plan, and a targeted recovery action."},{"state":"Read-only simulation","trigger":"The user previews an operation through eth_call.","userNeed":"Understand that read-only checks do not consume a transaction gas limit.","designResponse":"Label simulation separately and still validate the eventual signed transaction against the active cap."}],"designDecisions":[{"question":"What number should the UI show?","recommendation":"Show requested gas limit, estimated gas used, active per-transaction cap, and block gas limit as separate rows.","rationale":"Conflating these values creates false confidence near the protocol boundary."},{"question":"Should the product split automatically?","recommendation":"Offer a preview and require user review when splitting changes atomicity, ordering, or partial-failure behavior.","rationale":"A smaller transaction is not an equivalent operation if contracts depend on one atomic call."},{"question":"How should the cap be communicated across networks?","recommendation":"Read the selected chain's active fork/configuration and state the source and timestamp of the cap.","rationale":"A protocol rule on Ethereum is not evidence of the same rule on Monad or another EVM network."}],"problemsSolved":[{"problem":"Large transactions fail late after a user has prepared a complex batch","oldWay":"Estimate against block capacity, sign one oversized transaction, and receive a generic rejection.","newWay":"Preflight the per-transaction cap and explain a supported split or redesign before signing.","impact":"high"},{"problem":"Users cannot tell transaction and block capacity apart","oldWay":"Show one gas-limit number that appears to describe both.","newWay":"Label transaction cap, gas used, and block gas limit separately.","impact":"high"},{"problem":"A split operation hides partial completion","oldWay":"Present a series of transactions as one atomic action and report only the last error.","newWay":"Preview chunks and show per-transaction status and recovery.","impact":"critical"}],"uxPatterns":[{"name":"Gas-Cap Preflight","description":"Compare the requested transaction gas limit with the active network cap before signing.","components":["Network/fork badge","Gas limit comparison","Simulation status","Proceed or split action"],"userFlow":["Select a network","Estimate and simulate the actual operation","Read the active transaction cap","Compare requested gas limit","Proceed under cap or review recovery"]},{"name":"Explicit Batch Split","description":"Turn an oversized operation into ordered, independently tracked chunks only when semantics permit.","components":["Chunk preview","Dependency map","Atomicity warning","Per-chunk timeline"],"userFlow":["Identify cap violation","Calculate a safe chunk plan","Explain ordering and atomicity changes","Confirm each chunk's gas limit","Submit and track each result"]}],"uiComponents":[{"name":"GasLimitCapNotice","description":"Shows the active network cap next to requested gas limit and estimated gas used.","kind":"status","states":["loading","under-cap","near-cap","over-cap","network-unknown"],"props":["network","fork","requestedGasLimit","estimatedGasUsed","cap"]},{"name":"BatchChunkTimeline","description":"Tracks each transaction in a split operation and exposes partial completion.","kind":"progress","states":["planned","ready","submitted","confirmed","failed","blocked"],"props":["chunks","dependencies","atomicity","onRetry"]}],"antiPatterns":[{"pattern":"Applying Ethereum's 16,777,216 cap to every EVM network","why":"The rule is activated by a network fork and client configuration.","instead":"Read the selected network's current cap and state the source.","severity":"critical"},{"pattern":"Comparing only estimated gas used with the cap","why":"The protocol rejects a transaction whose gasLimit exceeds the cap even if execution might use less.","instead":"Validate the transaction gas limit and show estimated gas used separately.","severity":"high"},{"pattern":"Auto-splitting a batch with no atomicity warning","why":"A sequence of transactions can leave partial state when one chunk fails.","instead":"Preview ordering, dependencies, and partial-result behavior before signing.","severity":"critical"},{"pattern":"Treating eth_call as a signed transaction","why":"The cap applies to transactions and does not impose the same limit on eth_call.","instead":"Label simulations separately and validate the eventual transaction path.","severity":"medium"}],"vocabulary":[{"use":"Transaction gas limit","avoid":"Block gas limit","why":"The cap constrains one transaction while a block contains multiple transactions."},{"use":"Too large for this network","avoid":"Out of gas","why":"A cap rejection is a transaction-size boundary, not proof that execution consumed all gas."},{"use":"Split into [n] transactions","avoid":"Retry","why":"A split changes the operation plan and may change atomicity or partial-failure behavior."}],"technicalNotes":"EIP-7825 enforces a maximum transaction gasLimit of 16,777,216 (2^24) on activated networks. Txpool validation rejects a transaction above the cap and block validation rejects a block containing one. Ethereum's Fusaka mainnet upgrade activated the cap on December 3, 2025; the Ethereum Foundation documented it on October 21 and November 6, 2025 and noted that eth_call is unaffected. Client implementations such as Go Ethereum cap gas estimation when targeting Osaka. The cap is independent of block gas limit and does not prescribe how an application splits work.","relatedStandards":[{"id":"EIP-1559","relationship":"Fee-market fields used to estimate the cost of each transaction chunk."},{"id":"EIP-5792","relationship":"Wallet-mediated call batches whose capability and atomicity still need to be checked."},{"id":"EIP-7702","relationship":"Delegated EOA implementations that may construct large batched transactions."}],"keyTakeaways":["EIP-7825 caps one transaction's gas limit at 16,777,216 on Ethereum Fusaka.","The cap is separate from estimated gas used, eth_call, and block gas limit.","Large operations need network-aware preflight and explicit split semantics.","Do not carry Ethereum's cap into Monad without chain-specific activation evidence."]},"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-7825","markdown":"https://www.eipsfordesigners.com/standards/EIP-7825/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-7825/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-7825","official":"https://eips.ethereum.org/EIPS/eip-7825","discussion":"https://ethereum-magicians.org/search?q=EIP-7825"},"freshness":{"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18"}}