Written by Pablo Gómez
Founder & CEO at Metlabs · Reviewed on October 11, 2026
EIP-191, also referenced as ERC-191 or the Signed Data Standard, sets a canonical format for signing arbitrary data. The structure is 0x19, a version byte, the version-specific data and the message to sign. The 0x19 prefix, decimal 25, guarantees the signed content cannot be a valid Ethereum RLP transaction. It defines several versions. 0x00 sets an intended validator, used for instance by multisigs. 0x01 is reserved for EIP-712 typed data. 0x45, the byte for the letter E in Ethereum Signed Message, is the format behind personal_sign for human-readable messages.
It is the foundation of all off-chain signing in Ethereum. Wallet sign-in (Sign-In with Ethereum), gasless approvals and meta-transactional authorizations all build on it. It is the direct precursor and structural base of EIP-712 and, by extension, of Permit2 and ERC-2612, which sign typed structures on this same footing.
The everyday examples are clear. MetaMask uses version 0x45 when requesting personal_sign. Uniswap and Permit2 approvals and Seaport signatures, the OpenSea protocol, use version 0x01 typed data. Multisig wallets rely on version 0x00 with an intended validator. For a project that needs wallet logins or verifiable authorizations, EIP-191 is the technical social contract that ensures a message signature never moves funds by accident.
Also known as
- ERC191
- Signed Data Standard





