EIP-712 Typed Data Hasher

Compute the EIP-712 domain separator, struct hash and signing digest from typed data — in your browser.

🔒 100% in your browser — nothing is uploaded

Paste the JSON a wallet shows for signTypedData_v4 (types, primaryType, domain, message).

0xbe609aee343fb3c4b28e1df9e632fca64fcfaede20f02e86244efddf30957bd2
0xf2cee375fa42b42143804025fc449deafd50cc031ca257e0b194a650a912090f
0xc52c0ee5d84264471806290a3f2c4cecfc5490626bf912d01f240d7a274b371e
Mail(Person from,Person to,string contents)Person(string name,address wallet)

How it works

Paste the typed-data JSON a wallet shows on signTypedData_v4 and this computes the encoded type string, the domain separator, the message hashStruct, and the final signing digest keccak256(0x1901 ‖ domainSeparator ‖ hashStruct). Everything runs in your browser — handy for debugging signatures and understanding what a wallet is asking you to sign.

Frequently asked questions

What is EIP-712?

A standard for hashing and signing structured data so wallets can show humans what they are signing, instead of an opaque hash. The signing digest is keccak256(0x19 0x01 ‖ domainSeparator ‖ hashStruct(message)).

What is the domain separator?

A hash of the domain (name, version, chainId, verifying contract) that binds a signature to one app and chain, preventing replay elsewhere.

Is my data uploaded?

No — the typed data is hashed entirely in your browser.

Related tools

Embed this tool

Add this free tool to your own site: