A token approval checker is a page that lists which contracts your address has allowed to spend its tokens, and lets you revoke them. On Ethereum the most direct one is the block explorer’s own: open the Etherscan Token Approvals page, paste your address, and read the ERC-20, ERC-721 and ERC-1155 tabs. Checking is free and needs no wallet. Revoking needs your wallet connected, because each revocation is an on-chain transaction that you sign and pay gas for.
Last checked November 8, 2026, against the token standards, Etherscan’s approval tool and MetaMask’s help pages linked below.
Check and revoke in five steps
- Open the checker for the right network. An approval exists only on the chain where you granted it. Etherscan has a checker for Ethereum, and the same layout runs on BscScan (BNB Smart Chain), Arbiscan (Arbitrum One) and BaseScan (Base). MetaMask’s help page also points to Polygonscan.
- Search your address, not your wallet name. Paste the public address (or ENS name). The Etherscan guide to the tool says this read-only view needs no connection.
- Turn on “Show all approvals”. By default the list shows approvals for tokens you hold now. The toggle adds approvals for tokens you no longer hold, which still apply if those tokens come back to the address.
- Read each row. Look at the asset, the Approved Spender (the contract that can move it), the allowance, and the transaction that granted it.
- Connect and revoke only what you no longer need. Each row has its own Revoke button; only the address owner can use it. Confirm the network, token and spender in your wallet before you sign, then wait for the transaction to confirm and reload the list.
What the columns mean, with numbers
Etherscan shows an Original Allowance in the list and a Current Allowance when you open a row. The difference is what the spender has already used. Etherscan’s own example: you approve 100,000 tokens, the contract later spends 95,000, and 5,000 remain spendable.
“Unlimited” is usually not a special flag. Under ERC-20, approve(spender, value) stores a number and allowance(owner, spender) returns what is left. Apps that ask for “unlimited” access normally set that number to the largest value the field can hold, 2^256 − 1:
| Value | |
|---|---|
| Largest uint256 allowance | 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935 base units |
| Same allowance for a 6-decimal token (such as a typical dollar stablecoin) | about 1.16 × 10^71 tokens |
| Same allowance for an 18-decimal token | about 1.16 × 10^59 tokens |
Either way the spender can take your whole balance of that token, now and whenever more arrives. Calling approve(spender, 0) overwrites the allowance with zero, which is what a revoke button does for an ERC-20 row. The standard also says a new approval replaces the old one rather than adding to it.
Not every permission shows up the same way
| Permission | Where it lives | How a checker shows it | How it is removed |
|---|---|---|---|
ERC-20 approve | Token contract’s allowance for one spender | ERC-20 tab, with an amount | approve(spender, 0), an on-chain transaction |
ERC-2612 permit signature | Off-chain signature until someone submits it | Nothing, until it is submitted; then it is an ordinary ERC-20 allowance | Expires at its deadline; once submitted, revoke like ERC-20 |
| Permit2 allowance | Inside the Permit2 contract, with an amount and an expiry | Checker shows the Permit2 contract as spender of the token; per-app allowances sit inside Permit2 | Permit2 approve with amount 0 or expiration 0, and/or revoke the token’s approval of Permit2 |
ERC-721 approve | One specific NFT, one address | ERC-721 tab with a token ID | Cleared automatically when that NFT is transferred, or replaced by a new approval |
ERC-721 / ERC-1155 setApprovalForAll | Every NFT you hold in that collection, for one operator | ERC-721 or ERC-1155 tab, no amount | setApprovalForAll(operator, false) |
Sources: ERC-2612 sets an allowance from a signed message that must be used before its deadline; Permit2’s overview explains the one-time token approval of the Permit2 contract (commonly the maximum amount) and its time-bound allowances, and its AllowanceTransfer reference says an expiration of 0 ends the permission at once; ERC-721 resets a per-token approval on transfer and defines operators who “can manage all NFTs of the owner”; ERC-1155 only has the all-or-nothing operator approval.
Two practical results. A signature request that mentions “Permit” can create an allowance without any approval transaction from you, so read it as carefully as an approve screen. And an NFT row without an amount is often the widest permission on the list, because it covers the whole collection.
Disconnecting a site is not revoking
MetaMask’s help page separates the two. Disconnecting stops a site from seeing your address and balances and from proposing transactions. Revoking removes the contract’s on-chain right to move tokens. A wallet can show no connected sites while old allowances remain, and closing the browser or deleting the app changes nothing on-chain.
MetaMask also notes that revocations are on-chain and cost gas each time, and suggests a regular habit of checking, for example monthly.
When revoking does not help
Revoking changes future permissions only. It cannot reverse a transfer that already happened.
It also does not fix an exposed recovery phrase or private key. Whoever holds the key can sign new approvals or plain transfers. Move what is left to a new wallet instead; our wallet explainer covers the difference between an app connection and the keys that sign. Approvals granted to a bridge contract are worth reviewing when you stop using it; see how blockchain bridges work.
Do not revoke everything by reflex. An app you still use needs its allowance, and you will pay gas again to re-approve. The aim is to remove permissions you no longer intend to give, and to prefer exact amounts over unlimited ones when the wallet offers the choice.





