CryptoQR Maker

Bitcoin QR code generator

Turn any Bitcoin address into a BIP21 payment QR, with the amount in BTC, a label and a message that wallets display before the payer confirms.

  • BIP21 links
  • bech32/m checksums
  • Base58Check checksums
Coin
QR contents
BTC
Leave empty to let the payer choose the amount.
Style
Modules
Colors

How a Bitcoin payment QR works

Bitcoin payment links follow BIP21. The link starts with bitcoin:, then the address, then optional parameters:

bitcoin:bc1q…f3t4?amount=0.0015&label=Corner%20Cafe&message=Order%2042

The amount is always in BTC (not satoshis) and uses a dot as the decimal separator. Label and message are percent-encoded, so spaces become %20. CryptoQR Maker handles both.

Every address type is checked

Starts withTypeChecksum
1Legacy (P2PKH)Base58Check
3Script (P2SH), often multisig or wrapped SegWitBase58Check
bc1qNative SegWitbech32
bc1pTaprootbech32m

For privacy, many Bitcoin wallets give you a fresh address for each payment. A printed QR reuses one address, so everyone who pays it can see its history. For a shop sign that's usually fine; for invoices, make a new code per invoice.

Questions

Should the amount be in BTC or sats?

BTC. BIP21 defines the amount in BTC, so 1,000 sats is written as 0.00001. Up to 8 decimal places are allowed.

Does it work with Lightning?

These are on-chain links. Some wallets add a Lightning invoice to a BIP21 link with a lightning= parameter; that needs an invoice from your Lightning wallet, which CryptoQR Maker doesn't create.

Can I use uppercase bc1 addresses?

Yes. bech32 addresses are case-insensitive as long as they're entirely upper or entirely lower case. Mixed case is invalid, and the checker will flag it.

Which wallets read BIP21 QR codes?

Practically every Bitcoin wallet, including BlueWallet, Sparrow, Electrum, Ledger Live and exchange apps. Some exchange withdrawal screens prefer the bare address; switch to Address only if one complains.