Signature Verifier

Recover who signed a message or EIP-712 typed data, and check it against an address you expect — no blockchain call needed.

Why signatures are verifiable offline

An ECDSA signature doesn’t just prove “someone with the private key signed this” — the math lets you go one step further and recover exactly which public key (and so which address) could have produced it, using nothing but the message and the signature. That’s why wallets, contracts, and tools like this one can all verify signatures without ever touching a blockchain node.

Two different things get signed

A plain message (personal_sign) is just a string. EIP-712 typed data is structured and domain-scoped — it includes a name, version, and chain ID so a signature meant for one app or network can’t be replayed against another. Most modern “sign in with wallet” flows and gasless token approvals use EIP-712 specifically because of that domain separation.

How this tool works

Recovery uses viem’s recoverMessageAddress and recoverTypedDataAddress, entirely client-side. Add an expected signer to get a direct match/mismatch check instead of having to compare addresses by eye.

Frequently asked questions

ECDSA signatures are recoverable by construction — given the message and the signature alone, elliptic-curve math yields the public key (and so the address) that could have produced it. No lookup, no chain state, no RPC call is involved; it's the same property wallets and contracts use to verify signatures on-chain.

Plain message is for anything signed with personal_sign / eth_sign (a plain string, often prefixed "\x19Ethereum Signed Message:\n"). EIP-712 typed data is for structured, domain-scoped signatures — the kind used for gasless approvals (permit), off-chain orders, and most "sign this to log in" flows. Using the wrong mode recovers a different, wrong address.

Either the message/typed-data content doesn't exactly match what was actually signed (even a single-character difference changes the recovered address completely), the signature is malformed, or the signer genuinely isn't who you expected — which, for e.g. verifying a claimed identity, is exactly the case this check exists to catch.

No. Recovery happens locally in your browser using viem — nothing you enter here, including the signature, is transmitted anywhere.