Crypto & wallets

Signature Request Inspector

Runs locallyNew

Use Signature Request Inspector

What it does

Paste what a wallet or a site asks you to sign and see in plain English what it would authorise. Token approvals, permits, Permit2 signatures and Seaport listings that pay someone else are marked red.

It runs entirely in your browser: nothing you enter is uploaded.

Example

Permit2 signature for an unlimited USDC allowance

Input
{
  "types": {
    "EIP712Domain": [
      {
        "name": "name",
        "type": "string"
      },
      {
        "name": "chainId",
        "type": "uint256"
      },
      {
        "name": "verifyingContract",
        "type": "address"
      }
    ],
    "PermitSingle": [
      {
        "name": "details",
        "type": "PermitDetails"
      },
      {
        "name": "spender",
        "type": "address"
      },
      {
        "name": "sigDeadline",
        "type": "uint256"
      }
    ],
    "PermitDetails": [
      {
        "name": "token",
        "type": "address"
      },
      {
        "name": "amount",
        "type": "uint160"
      },
      {
        "name": "expiration",
        "type": "uint48"
      },
      {
        "name": "nonce",
        "type": "uint48"
      }
    ]
  },
  "primaryType": "PermitSingle",
  "domain": {
    "name": "Permit2",
    "chainId": 1,
    "verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
  },
  "message": {
    "details": {
      "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "amount": "1461501637330902918203684832716283019655932542975",
      "expiration": "281474976710655",
      "nonce": "0"
    },
    "spender": "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB",
    "sigDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
  }
}
Output (captured 2026-10-20)
Read as: EIP-712 typed data. Change this with “Read the input as”.

DangerousPermit2 PermitSingle: token allowance by signature (UNLIMITED)

Signing lets 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB move an unlimited amount of 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (USDC token on Ethereum) out of your wallet through Permit2. The allowance never expires in practice. The spender submits this signature itself, so you will not see another prompt. Drainers favour Permit2 because many wallets have already approved Permit2 for apps such as Uniswap.

Unlimited amount: the spender can take your whole balance of the token.
The allowance never expires in practice.
The signature never expires in practice.
SPENDER	0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB
TOKEN	0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
USDC token on Ethereum

AMOUNT	Unlimited: 2^160−1, the Permit2 maximum (1461501637330902918203684832716283019655932542975)
ALLOWANCE EXPIRES	2^48−1 (Permit2 maximum): no practical expiry (beyond the year 5000)
NONCE	0
SIGNATURE VALID UNTIL (SIGDEADLINE)	2^256−1: no practical expiry (beyond the year 5000)
DOMAIN	name "Permit2"
CHAIN	Ethereum (chain ID 1)
VERIFYING CONTRACT	0x000000000022D473030F116dDEE9F6B43aC78BA3
Permit2 (Uniswap)

EIP-712 DIGEST (WHAT IS SIGNED)	0x579baa31b8f7279c82034e935d103d07caa27a817903937e201389d81d55984c
DOMAIN SEPARATOR	0x866a5aba21966af95d6c7ab78eb2b2fc913915c28be3b9aa07cc04ff903e3f28
MESSAGE HASH (HASHSTRUCT)	0xb646364eb4dc82faf68b61d79beb585797490532ff745845f3821e6f8573463c
PRIMARY TYPE	PermitSingle(PermitDetails details,address spender,uint256
…

Red plate: the spender 0xbBbB…BBbB could move an unlimited amount of USDC through Permit2, and neither the allowance nor the signature expires. The EIP-712 digest is computed.

FAQ

What does the Signature Request Inspector check?

It decodes EIP-712 typed data, transaction calldata, transaction objects and personal_sign or eth_sign messages and computes the EIP-712 digest. It flags token approvals, setApprovalForAll, EIP-2612 and DAI permits, Permit2 signatures, Seaport orders that pay someone other than you, and blind signatures over a 32-byte hash.

Can a request that is not marked red still be harmful?

Yes. The tool reads only the request itself: it cannot see balances, existing approvals or whether a contract is malicious, and functions outside its table are shown as unknown. Approvals for legitimate apps are marked red too, because the signature grants the same power either way.

Is the pasted request sent anywhere?

No. Decoding and hashing run in your browser and the page makes no network requests with your input. A signature request holds no secret, but never paste a private key or seed phrase into any website.