EIP-712 Hasher
Signing digest, domain separator and struct hash from typed data.
Runs offline
Paste typed-data JSON to hash the signing digest and its parts.
About eip-712 hasher
EIP-712 exists so a wallet can show you named fields instead of an opaque hash. The final signing digest is keccak256 of 0x1901, the domain separator, and the struct hash — three components, computed here separately so you can see which part differs when a hash does not match. If your hardware wallet shows only a digest, this is what to compare it against.
Common questions
What is EIP-712 typed data?
A way to sign structured fields with a domain separator so the same message means something different on another chain or contract. Permits, Safe hashes and many login flows use it; a plain personal_sign string does not.
What are the domain separator and struct hash?
The domain separator binds the signature to a name, version, chain and verifying contract. The struct hash commits to the fields you are signing. This page recomputes both and the final digest your wallet should show.
Does a matching digest mean I should sign?
No. A correct hash only means the JSON matches the digest. It says nothing about whether the spender, amount or deadline are acceptable. Read the fields; the hash checks tampering, not whether the deal is good.