A WETH approval is a call to approve() on the WETH9 contract that lets another address - a DEX router, a lending pool, an NFT marketplace - move up to a set amount of your WETH with transferFrom(). Wrapping and unwrapping need no approval; anything a third-party contract does with your WETH does. Of the last 100 transactions sent to WETH9 on Ethereum on October 2, 2026, 24 were approvals, and 20 of those used about 46,000 gas because they created an allowance from zero (Etherscan). The rule: approve the contract you are about to use, for what you are about to use, and revoke what you no longer use.
- Approval is for third parties: deposit(), withdraw() and transfer() act on your own balance and need no approval; transferFrom() by a router, pool or marketplace does.
- Traffic share: approvals were 24 of 100 transactions sent to WETH9 in blocks 26,105,189-26,105,250 on October 2, 2026, next to 46 deposits and 26 withdrawals (Etherscan).
- First approval costs double: 20 of those 24 used 46,000-46,400 gas to create a new allowance, against 24,000-29,000 gas to change an existing one - 46,000 / 24,000 = 1.9 times as much.
- Unlimited means unlimited: WETH9 treats an allowance of 2^256-1 as infinite and never reduces it - about 1.16 x 10^59 WETH, against 2,031,131 WETH in existence at block 26,105,247 (Ethereum RPC).
What a WETH Approval Is
A WETH approval is an entry in the WETH9 contract’s allowance table: owner, spender, amount. approve(spender, amount) writes it and emits an Approval event; transferFrom(owner, recipient, amount), called by the spender, checks the entry, moves the WETH and lowers the allowance by the amount moved. The approval does not move any WETH by itself and does not lock it; the WETH stays on your address until the spender uses its allowance.
ERC-20 tokens work this way because a contract cannot pull tokens it was never authorized to pull, and WETH exists precisely so that ETH can take part in that flow (what WETH is). Native ETH has no allowance table: it is sent, never pulled, which is why DeFi contracts ask for WETH instead (why WETH exists).
When You Need to Approve WETH and When You Don’t
The question is always who moves the WETH: you, or a contract on your behalf.
| Action | Approval needed | Why |
|---|---|---|
| Wrap ETH into WETH (deposit) | No | the WETH9 contract mints to the caller |
| Unwrap WETH into ETH (withdraw) | No | the caller burns its own balance |
| Send WETH to an address (transfer) | No | the owner moves its own balance |
| Swap WETH on a DEX | Yes, to the router | the router pulls WETH with transferFrom() |
| Supply WETH to a lending market | Yes, to the pool | the pool pulls the deposit |
| Bid with WETH on an NFT marketplace | Yes, to the marketplace contract | the sale settles by pulling WETH from the bidder |
| Bridge WETH through a bridge contract | Yes, to the bridge or gateway | the bridge pulls WETH before sending it |
The first three rows are the ones How to unwrap WETH and ETH to WETH describe: no approval step appears in them because none exists. An interface that asks for an approval before a wrap or an unwrap is routing through another contract, not calling WETH9 directly.
Limited vs Unlimited Allowances
An allowance can be the exact amount of the next action or the maximum value the contract accepts. In WETH9 the maximum, 2^256-1, is special: transferFrom() skips the deduction when the allowance equals it, so one approval covers every future transfer by that spender (WETH9 verified source, Etherscan).
- Exact amount: each swap or deposit needs its own approve() first; the spender can never take more than the amount approved.
- Unlimited: one approve() for all future use; the spender can move any WETH the address holds until the approval is revoked.
The trade-off is gas against exposure. An unlimited approval saves one approval per use, about 24,000-46,000 gas each time; it also leaves standing permission with a contract that may later be upgraded, exploited or abandoned.
How Much a WETH Approval Costs
An approval costs one network fee in ETH and nothing else. The gas depends on whether an allowance already exists:
| Approval type | Gas used (Etherscan, October 2, 2026) | Mainnet fee at 5.6 gwei, ETH $2,690.75 |
|---|---|---|
| New allowance from zero | 46,000-46,400 | about $0.70 |
| Change of an existing allowance | 24,000-29,000 | about $0.36-$0.44 |
Gas units are derived from the fee and gas price of individual approvals; the USD column uses Etherscan’s September 28, 2026 average gas price and ETH price. On layer 2s the gas units are similar and the gas price is hundreds of times lower, the same way it is for wraps and unwraps (WETH gas costs). Either way the fee is paid in ETH, so an address holding only WETH cannot approve anything.
Why WETH Has No Permit Function
WETH9 was deployed in December 2017, before EIP-2612 defined permit(), the function that lets a token holder grant an allowance with an off-chain signature instead of a transaction. WETH9 has only deposit, withdraw, totalSupply, approve, transfer and transferFrom, and its code cannot be changed, so every WETH approval on Ethereum is an on-chain transaction paid in ETH.
Two workarounds exist. Uniswap’s Permit2 contract accepts one ordinary approval of WETH and then lets later spends be authorized by signature. Newer wrapped tokens build permit in: Lido’s wstETH implements EIP-2612 (wstETH vs WETH). For WETH9 itself the first approval is always a transaction.
How to Check and Revoke WETH Approvals
- List the allowances: open the token approval checker of the network’s explorer (Etherscan, Basescan, Arbiscan) or a dedicated tool such as revoke.cash, and enter your address.
- Find WETH entries: each row shows the spender contract, the allowance (exact or unlimited) and when it was set.
- Revoke what you no longer use: revoking sends approve(spender, 0) from your address; confirm it in the wallet and pay the fee in ETH.
- Repeat on every network: an approval on Base WETH is separate from one on Ethereum WETH, because each network has its own WETH contract (WETH on Base).
What an Approval Cannot Do
- It cannot move ETH: the allowance covers the WETH balance in that contract only, never native ETH on the same address.
- It cannot exceed your balance: transferFrom() fails if the owner holds less WETH than requested, whatever the allowance.
- It cannot cross networks: approvals live in each network’s WETH contract separately.
- It cannot be undone backwards: revoking stops future pulls; WETH already moved by the spender stays moved.