Token Allowances: How to Review and Revoke Approvals
The first time you swap a token on a decentralised exchange, the wallet asks you to approve it. That approval is not a one-off payment; it is a permission stored on-chain, and it can outlive the site that requested it. Understanding what the permission allows, and how to withdraw it, is part of using a self-custody wallet.

Cover artwork: CoinSoso · AI-generated, not a photograph of a real venue, product or market capture.
Key takeaways
- ERC-20 approve(spender, value) grants a spender permission to move up to value of your tokens, repeatedly, until the allowance is used or changed.
- The approval is stored in the token contract, not in the dApp. Disconnecting a site does not remove it.
- Revoking means sending a new approval of zero for that spender. It is an on-chain transaction and costs gas.
- An unlimited approval is a balance-wide permission; a limited approval caps the exposure at the amount you set.
- Revocation is preventive. It cannot reverse a transferFrom that has already executed.
A permission, not a payment
ERC-20 tokens do not let a contract pull funds from your wallet by default. The standard gives the token owner an explicit function, approve(address _spender, uint256 _value), which grants the spender an allowance. The spender then calls transferFrom to move tokens up to that amount.
EIP-20 is precise about the semantics: approve allows the spender “to withdraw from your account multiple times, up to the _value amount”. Calling approve again with the same spender replaces the previous allowance rather than adding to it. The read-only allowance(owner, spender) function returns what remains.
That design is why the approval step exists. A decentralised exchange cannot debit your balance directly; it needs a permission recorded in the token contract. The permission is public, persistent, and independent of the website that requested it.
What the number means
The _value in an approval is the ceiling, not a reservation. If you approve 500 TOK, the spender can move 500 in one call or 100 five times. If you approve the maximum uint256, the spender can move your entire balance of that token, now or later.
The token standard itself warns about approval races: a user interface should first set an allowance to zero before assigning a new value to the same spender, because a spender watching the mempool can spend the old allowance before the new one lands. EIP-20 notes that contracts cannot enforce the reset without breaking compatibility, so the responsibility sits with the interface and the user.
Three practical rules follow:
- Approve what the trade needs, not the maximum. A limit of the exact amount caps the loss if the spender is compromised.
- Read the spender address. The permission is granted to a contract, not to a brand. A phishing site can ask you to approve a contract that looks like a familiar router.
- Treat unlimited approvals as standing risk. They are convenient, and they remain usable indefinitely unless the spender contract is paused or the allowance is revoked.
How to review approvals
A wallet does not show every permission on its main screen. The common places to look are:
- Wallet portfolio tools. MetaMask Portfolio has a Spending Caps view that lists token approvals and can submit revocations. MetaMask’s help centre lists Ethereum Mainnet, Polygon, BNB Chain, Optimism and Base as supported networks at the time of writing.
- Block explorer approval checkers. Etherscan and its sister explorers offer a token-approval tool that reads the token contracts for a given address.
- Third-party revoke tools. Services such as Revoke.cash aggregate approvals across chains. They are convenient, and they are an additional trusted component; connect only when you intend to revoke.
A review should answer four questions for each row: which token, which spender, how much remains, and whether the spender is a contract you still use. An approval to a contract you no longer recognise is the one to remove first.
How revocation works
Revoking is not a special protocol message. It is another approve call, with the same spender and a value of zero. The token contract overwrites the allowance; allowance then returns zero, and transferFrom fails for any amount above zero.
Consequences:
- It is an on-chain transaction. You pay gas, and you need the native token of that chain to pay it.
- It affects one token and one spender at a time. Ten approvals mean ten writes unless a tool batches them.
- It does not reverse history. A transfer that already executed is settled. Revocation only prevents the next one.
- It can be undone by a future approval. The permission is a state, not a lock.
The MetaMask guidance draws the distinction that matters most: disconnecting a dApp stops it from seeing your address in that session, while revoking removes its ability to move tokens. The two actions are not substitutes.
A worked example
Suppose a wallet holds 1,000 USDC and approves a router for the maximum amount to swap 100 USDC. The swap uses 100 USDC through transferFrom; the allowance falls to 900 USDC if the router decremented it correctly. The remaining 900 is still spendable by that router.
If the router contract is later exploited, the attacker can call transferFrom for the remaining allowance without any new signature from the wallet. Revoking to zero before the exploit would have capped the loss at zero; revoking after the transfer executes does nothing.
This is why the useful habit is periodic review, not a one-time cleanup after a headline. Approvals accumulate quietly, and the wallet’s balance is the exposure ceiling.
What approvals do not cover
An allowance is specific to a token contract and a spender. It does not grant access to ETH itself, to tokens you have not approved, or to a different chain’s copy of the same ticker. NFT marketplaces use a separate approval function for collections, which is outside the ERC-20 allowance model and should be reviewed in the same spirit.
It also does not protect you from signing a malicious transaction. If you sign a call that transfers your tokens directly, the approval layer is irrelevant. The CEX vs DEX guide explains the custody difference; the approval layer is the part of self-custody that has no central intermediary to reverse a mistake.
Sources
How this was researched. Written from primary documentation and the exchange or protocol's own published material, with sources listed at the end of the article.
Primary sources for the factual claims on this page. A date appears only where a human has actually read the source; where it is missing, the check is still outstanding.
- EIP-20 — Token standard: approve, allowance and transferFrom(read 2026-10-20)
- MetaMask — How to revoke smart contract allowances and token approvals(read 2026-10-20)
- MetaMask — What are token approvals and how to revoke them(read 2026-10-20)
- MetaMask — Manage spending caps in MetaMask Portfolio(read 2026-10-20)
Frequently asked questions
Is approving a token the same as sending it?
No. An approval moves nothing. It writes a permission into the token contract that allows a specific spender to call transferFrom up to the approved amount. The tokens stay in your wallet until the spender uses the permission, and you can revoke it before then.
Why does a swap need two transactions?
Because the token standard separates permission from transfer. The first transaction calls approve on the token contract; the second calls the exchange or router contract, which then pulls the tokens using transferFrom. A wallet or aggregator that supports permit-style signatures may combine the steps, but the permission still exists.
Does disconnecting my wallet from a site revoke the approval?
No. Disconnecting stops the site from reading your address and asking for signatures in that session. The allowance lives in the token contract and remains usable by anyone who can submit a transaction for that spender. Revoking requires an on-chain approve call with a zero amount, which costs gas.
How much does revoking cost?
It is a normal Ethereum-style transaction, so it costs gas at the network rate at the time. Revoking several approvals means several transactions and several gas payments. Some wallets and portfolio tools batch the calls where the chain and contract support it, but the underlying writes are still on-chain.
Can I get tokens back after an approval was abused?
Only if the tokens are still in the wallet and the attacker has not moved them. Once transferFrom executes, the transfer is final and no revoke can undo it. That is why the useful moment to review approvals is before an exploit, not after one.
Where to go next
Independent research. Each card shows the platform’s invite code, and its Create Account button is a referral link that may earn us a commission at no extra cost to you. Whether an account can be opened is decided by the platform at sign-up.
Binance

One of the largest global exchanges by traded volume, with a very broad product range.
20% Trading Fee Rebate
Use invite code con888 when signing up to enjoy trading fee benefits.
Download from the exchange's official download service. Verify the source and follow the on-screen installation instructions.
Do not install an APK from an unknown source, or one that has been modified or cannot be checked.
OKX

A large global exchange offering spot, derivatives and a self-custody wallet.
20% Trading Fee Rebate
Enter invite code con888 when signing up to check available trading fee benefits.
Download from the exchange's official download service. Verify the source and follow the on-screen installation instructions.
Do not install an APK from an unknown source, or one that has been modified or cannot be checked.