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.