Verify Digital Signature
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Verify Digital Signature enables you to cryptographically verify that a digital signature was produced by a specific wallet address for a given message. This is the essential counterpart to message signing—while signing proves you control a wallet, verification proves to others that the signature is authentic and came from the claimed signer. The tool takes a message (either text or hex), a signature (hex string), and an expected signer address, then uses Ethereum's signature recovery algorithm to extract the signer's address from the signature and message. It compares the recovered address against the expected address and displays a clear result indicating whether the signature is valid or invalid. This is useful for authentication systems, verifying signed statements, confirming wallet ownership, and ensuring the integrity of off-chain signed data. The tool is read-only and does not submit any transactions, making it fast, free, and safe to use.
HOW TO USE
Connect your wallet using the BGWallet connector (required for context). Select the message format that matches how the message was signed: "Text" for plain text messages (the most common format) or "Hex" for raw hex data. Enter the original message that was signed—this must be exactly the same as the message that was signed, including any formatting or prefixes. Enter the signature as a hex string starting with 0x (typically 132 characters long, representing the r, s, and v components). Enter the expected signer address—the address that should have signed the message. The tool displays the message, signature, expected address, and the recovered signer address from the signature. If the recovered address matches the expected address, the verification succeeds with a green checkmark; if not, it fails with a red X. The result includes a clear explanation of the outcome.
TECHNICAL MECHANISM
This tool implements Ethereum's signed message verification using the ethers.js verifyMessage() function, which follows the personal_sign standard (EIP-191). When a message is signed using personal_sign, the signing wallet hashes the message with the Ethereum signed message prefix ("\x19Ethereum Signed Message:\n" + message length) before signing with the wallet's private key. For text messages, the tool passes the message string directly to verifyMessage(). For hex messages, the tool validates the hex format, ensures even length, and prefixes it with "0x" before verification. The verifyMessage() function recovers the signer's address from the signature and the message by: (1) reconstructing the prefixed message, (2) hashing it with Keccak-256, (3) recovering the public key from the signature using the hash and the v, r, s components, and (4) deriving the Ethereum address from the public key. This recovered address is then compared against the expected address to determine validity. The entire process is performed locally in the browser using ethers.js, requiring no network calls or gas fees.
WHAT IT CANNOT SEE
This tool cannot verify signatures generated by non-standard signing methods (e.g., EIP-712 typed data, eth_sign with no prefix). It does not support verification of signatures with custom recovery parameters beyond the standard v value (27 or 28). The tool cannot verify that the message was signed with the correct purpose or context beyond the signature itself—a valid signature only proves that the wallet signed the exact message, not that the message content is truthful or intended for a specific purpose. It does not automatically fetch the signer address from the signature; you must provide the expected address. The tool cannot verify signatures for messages that have been modified after signing—even a single character change will produce a different hash and fail verification. It does not support verification of signatures from non-EVM wallets or signatures produced by non-standard cryptographic libraries. The tool cannot guarantee that the signature was signed by a wallet the user intended to use; it only verifies mathematical validity. It does not support batch verification of multiple signatures in a single operation.
PLEASE NOTE
This tool works with signatures produced by the personal_sign method, which is the standard signing method used by MetaMask and most Ethereum wallets. The message must be entered exactly as it was signed—case, spaces, and line breaks matter. For hex messages, the hex string must contain only valid hex characters (0-9, a-f, A-F) and have an even length. The signature must be a valid ECDSA signature with the correct v, r, s components, typically 65 bytes (132 hex characters including the 0x prefix). The expected signer address must be a valid Ethereum address (0x followed by 40 hex characters). Verification is performed entirely in the browser using the ethers.js library and does not require any network connection or gas fees. A successful verification proves that the wallet address signed the exact message, but it does not verify that the message content is accurate or that the signing was authorized—you must independently assess the context and trustworthiness of the message content.