EVMTools

Signature Signer & Verifier

Sign messages with a private key and verify Ethereum EIP-191 signatures. Recover signer addresses from signed messages.

This tool runs entirely in your browser. Never enter private keys that control real funds.

About EIP-191 Signed Messages

  • Ethereum personal signatures use the EIP-191 standard, which prefixes the message with "\x19Ethereum Signed Message:\n" + message.length before hashing with Keccak256.
  • This prefix prevents signed messages from being used as valid transactions.
  • The signature is 65 bytes: r (32 bytes) + s (32 bytes) + v (1 byte).
  • v is typically 27 or 28 (0x1b or 0x1c).

How to Use This Signature Signer & Verifier

This tool lets you sign messages with an Ethereum private key and verify signatures to recover the signer address. It supports EIP-191 (personal_sign) standard messages.

  1. To sign a message: Enter your private key and the message you want to sign. The tool produces a 65-byte signature (r, s, v) that anyone can verify.
  2. To verify a signature: Enter the original message and the signature hex string. The tool recovers the signer's Ethereum address.
  3. Compare addresses — check that the recovered address matches the expected signer to confirm authenticity.
  4. Copy the results for use in your dApp, smart contract verification, or authentication flow.

All signing and verification happens locally in your browser. Private keys are never sent to any server.

Common Use Cases

  • Sign-In with Ethereum (SIWE) — Test wallet-based authentication flows by signing and verifying login messages.
  • Off-chain voting — Create and verify signed votes for governance proposals without paying gas fees.
  • Permit signatures — Test EIP-2612 permit signatures for gasless token approvals.
  • Address ownership proof — Generate a signed message to prove you control a specific Ethereum address.
  • Smart contract testing — Create test signatures for contracts that verify off-chain signed data on-chain using ecrecover.

Related Tools

Frequently Asked Questions

What is an Ethereum message signature?

An Ethereum message signature is a cryptographic proof that a specific Ethereum address holder approved a particular message. It uses the ECDSA algorithm on the secp256k1 curve. The signature consists of three components: r, s (the signature values), and v (the recovery identifier).

What is EIP-191 (personal_sign)?

EIP-191 defines a standard for signing arbitrary data in Ethereum. It prepends the message with '\x19Ethereum Signed Message:\n' followed by the message length before hashing and signing. This prefix prevents signed messages from being mistaken for valid transactions, protecting users from phishing attacks.

How do I verify who signed a message?

To verify a signature, provide the original message and the signature (65 bytes as a hex string). The tool uses ecrecover to mathematically derive the signer's Ethereum address from the signature. If the recovered address matches the expected signer, the signature is valid.

What is the difference between signing and verifying?

Signing requires a private key and produces a signature for a given message. Verifying requires only the message and signature (no private key needed) and recovers the signer's public address. Anyone can verify a signature, but only the private key holder can create one.

What are common use cases for message signing?

Message signing is used for wallet-based authentication (Sign-In with Ethereum), off-chain governance voting, gasless token approvals (EIP-2612 permits), proving ownership of an address, and creating verifiable attestations without on-chain transactions.