Whichever wallet you use, signing never sends a transaction and never costs a fee. You'll get a signature: a line of letters and numbers (base64) that proves the address's key signed your exact message.
Browser wallets: Xverse, Leather, UniSat
These sign when a website asks. On VerifiedWallet's Get certified page, click your wallet, pick the address and approve the message in the wallet's pop-up.
- Xverse has two addresses: a Payment address for your bitcoin and an Ordinals address (Taproot,
bc1p…) for Bitcoin NFTs and Runes. Most people certify the Payment address. - Leather offers a Native SegWit (
bc1q…) and a Taproot address. - UniSat signs with whichever address is currently selected in UniSat, so switch to the right one first.
Don't have one? The wallet guide links to each official Chrome extension.
Electrum
- Open your wallet and go to Tools → Sign/verify message. Or, on the Addresses tab, right-click the address and choose Sign/verify message, which fills the address in for you.
- Check the Address box shows the address you want to prove.
- Paste the message into Message exactly as given.
- Click Sign and enter your wallet password. The Signature box fills in.
- Copy the whole signature.
Sparrow
- Go to Tools → Sign/Verify Message (Ctrl+M or Cmd+M), or open it from the Addresses tab.
- Choose the address and paste the message.
- Leave Format on Standard (Electrum) unless you're signing with a Taproot address, which needs BIP322. VerifiedWallet accepts either.
- Click Sign Message. If the wallet is on a hardware device (Trezor, Ledger, Coldcard, BitBox and others), confirm on the device when asked.
- Copy the signature.
Sparrow is also the easiest way to sign with a Ledger: Ledger Live has no message-signing screen for Bitcoin, but a Ledger connected to Sparrow can sign.
Trezor Suite
- Open the Bitcoin account, click the three dots at the top and choose Sign & Verify.
- Paste the message and choose the address.
- Click Sign, then check the message on the Trezor's screen and confirm.
- Copy the signature from Suite.
Trezor Suite doesn't offer this for Taproot accounts. Use a SegWit account, or Sparrow with BIP-322.
Bitcoin Core
In the console or with bitcoin-cli: signmessage "address" "message". Bitcoin Core only signs messages for legacy addresses (starting 1), so for a bc1q or bc1p address use Sparrow instead.
Why a signature fails, and how to fix it
- The message changed. One extra space, a missing full stop or a line break makes it a different message. Copy and paste it, never retype it.
- The wrong address signed. Many wallets have dozens of addresses. Sign with the exact address you're proving.
- Part of the signature is missing. Copy all of it, including any
=at the end. - It's a multisig address. These can't sign a plain message. Use a single-key address.
- The checker only understands one format. Some tools only check classic signatures and reject BIP-322 ones (or the other way round). VerifiedWallet checks both. See BIP-137 vs BIP-322.
Sign once with your wallet: free, no transaction. We counter-sign it and give you a link anyone can verify. From $1.
More guides
How to prove you own a Bitcoin address
Sign a message with the address's key: free, instant, nothing on the blockchain.
BIP-322 vs BIP-137: Bitcoin message signing explained
Why there are two formats, which wallets use which, and why Taproot needs BIP-322.
How to prove you own an Ethereum wallet
One signed message, no gas, and it covers every EVM network at once.
How to prove you own a Tron (USDT) wallet
Sign a message in TronLink: no transaction, no TRX burned, works for USDT addresses.
Questions
Which format should I choose in Sparrow?
Standard (Electrum) for bc1q, 3 and 1 addresses; BIP322 for Taproot (bc1p) addresses. VerifiedWallet accepts both.
Can I sign with a Ledger?
Yes, through Sparrow (or Electrum) with the Ledger connected. Ledger Live itself has no message-signing screen for Bitcoin.
Does signing cost anything?
No. It isn't a transaction, so there is no network fee and nothing is broadcast.