Ethereum Message Signing

EIP-191 secp256k1 ethers.js v6 100% Client-Side

Sign and verify Ethereum messages entirely in your browser using ethers.js v6. Supports EIP-191 personal_sign (MetaMask-compatible) and raw keccak256 hash signing. Generate key pairs, import private keys, and recover signer addresses — no server calls, no data leaves your device.

Blockchain Signing Tool
Security: Never paste a real private key on any website. Use this tool with test keys only, or run it offline.

Result

What is Ethereum Message Signing?

1
Prove Identity Sign a message to prove you own an Ethereum address — without revealing your private key
2
Sign In with Ethereum Authenticate to dApps and Web3 services using EIP-191 personal_sign — the same method MetaMask uses
3
Verify Signatures Recover the signer address from any message + signature pair to confirm authenticity
4
Off-Chain Governance Cast gasless votes on Snapshot and other off-chain governance platforms with signed messages

What is Ethereum Message Signing?

Ethereum message signing uses the secp256k1 elliptic curve to produce a cryptographic signature that proves the signer controls a specific private key — and therefore a specific Ethereum address — without revealing the key itself. This is the foundation of authentication in decentralized applications (dApps), token approvals, and off-chain governance voting.

The EIP-191 standard (also known as personal_sign) prefixes the message with \x19Ethereum Signed Message:\n<length> before hashing with keccak256. This prefix prevents a signed message from being replayed as a valid Ethereum transaction, making it safe for user-facing "Sign In with Ethereum" flows.

Security Best Practices

Frequently Asked Questions

EIP-191 defines a standard for signing human-readable messages in Ethereum. It prefixes the message with \x19Ethereum Signed Message:\n and the message length before hashing with keccak256 and signing. This is the same method MetaMask and other wallets use, preventing signed messages from being replayed as transactions.
This tool runs 100% client-side using ethers.js. No private keys are ever sent to a server. You can verify this by checking the Network tab in your browser developer tools. For maximum security, use this tool offline after the page has loaded, or use it only with test keys.
Any EVM-compatible blockchain uses the same secp256k1 curve and address format. Signatures generated here work on Ethereum, Polygon, Arbitrum, Optimism, Avalanche C-Chain, BNB Smart Chain, and all other EVM chains.
Personal Sign (EIP-191) adds a prefix to prevent signed messages from being used as transactions. Raw Hash Sign signs an arbitrary 32-byte keccak256 hash directly without any prefix. Use Personal Sign for user-facing messages and Raw Hash for protocol-level signing.
Ethereum signatures allow you to recover the signer's public key and address from just the message and signature using ecrecover. Switch to Verify mode, paste the original message and signature, and the tool will recover the signer address so you can confirm it matches the expected signer.
An ECDSA signature consists of two 256-bit integers r and s, plus a recovery parameter v (27 or 28). The r and s values are the mathematical output of the signing algorithm, while v helps identify which of two possible public keys was used to create the signature.

Explore More Cryptography Tools

BIP39

BIP39 Mnemonic Generator

Generate & validate seed phrases in 10 languages

ECDSA

ECDSA Key & Signature

Elliptic curve key generation, sign & verify

PGP

PGP Encryption

PGP key generation, encrypt, sign & verify

RSA

RSA Functions

RSA key generation, encrypt, decrypt & sign

Support This Free Tool

Every coffee helps keep the servers running. Every book sale funds the next tool I'm dreaming up. You're not just supporting a site — you're helping me build what developers actually need.

500K+ users
200+ tools
100% private
Privacy Guarantee: Private keys you enter or generate are never stored on our servers. All tools are served over HTTPS.