Bitcoin Tools

Bitcoin message verifier

Did this signature really come from that address? Paste the address, the message and the signature — checked locally with BIP-137 / Electrum rules.

Runs entirely in your browser No tracking Never asks for your keys

🔒 Checked locally. Nothing is sent anywhere. This tool never asks for a private key.

What a signed Bitcoin message proves

A wallet can sign a short piece of text with the private key behind an address, and anyone can later verify that signature. If it checks out, the signer controls that address — the same key that can spend coins sent there. People use this to prove a tip jar is theirs, to authenticate a support ticket, or to show they still hold a cold-storage key, without moving any bitcoin.

This page only verifies. It never signs, and it never asks for a key or seed. Verification is ordinary public-key cryptography and runs entirely in your browser.

The format: BIP-137 / Electrum

Most wallets that offer “Sign message” follow BIP-137 (also called Electrum-style signing). The wallet hashes the message with a fixed Bitcoin prefix, signs the hash, and returns 65 bytes of base64. The first byte says which address type was claimed (legacy, wrapped SegWit or native SegWit) and carries the recovery information needed to reconstruct the public key. We recover that key, build the address, and compare it with the one you pasted.

What it does not cover

  • Taproot (bc1p…) — needs BIP-322. We refuse rather than guess.
  • Multisig / P2WSH — BIP-137 is for single-key addresses only.
  • Other coins’ message formats — a Dogecoin or BCH signature will not verify here.

A green result means: this signature was produced by the key for this address, over this exact message. It is not a payment, not a contract on its own, and not proof that the coins are still there.

Worked example

Using a well-known BIP-137 test vector: address 1PMycacnJaSqwwJqjawXBErnLsZ7RkXUAs, message vires is numeris, signature starting H8JawPtQ…. The verifier reports a match. Change one letter of the message, or swap the address for a different valid one, and it reports no match — and when the signature itself is valid for another address, it shows which address it recovered.

Frequently asked questions

Does this prove someone owns the coins at that address?

It proves they control the private key that corresponds to the address, for the exact message that was signed. That is the same key that can spend coins sent there. It does not prove they still hold the coins, that the key was not stolen, or that they agree to anything beyond the signed text.

Does anything leave my browser?

No. Verification is pure cryptography and runs entirely locally. Nothing is sent to mempool.space or anywhere else. We never ask for a private key or seed.

What signature format is this?

BIP-137, also called Electrum-style message signing. The signature is 65 bytes of base64. Most desktop wallets’ “Sign message” feature produces this for legacy (1…) and SegWit (bc1q… / 3…) addresses.

Why can’t it check a Taproot (bc1p…) address?

BIP-137 was never defined for Taproot. Modern Taproot message signing uses BIP-322, which this tool deliberately does not attempt to parse yet. Showing a green tick for the wrong scheme would be worse than refusing.

What about multisig or long bc1q script addresses?

BIP-137 only covers single-key addresses. A P2WSH (long bc1q…) address, or a multisig behind a 3… address that is not the common wrapped-SegWit form, cannot be checked here. For 3… addresses we only confirm the Electrum-style P2SH-P2WPKH case.

Does the message have to match exactly?

Yes — every character counts, including spaces and line breaks. The message is hashed as UTF-8. If verification fails, check for an extra space, a different line ending, or a truncated signature.

Can I sign a message here?

No. This page is verify-only. Signing needs a private key, and this site never asks for keys, seeds or xpubs. Use your wallet’s own “Sign message” feature, then paste the result here to check it.