Home › Glossary › Bech32m

Bech32m

Also called: bech32m address, bc1p, Taproot address format, BIP350.

Bech32m is the modified Bech32 address format from BIP 350, used for SegWit version 1 and later, such as Taproot addresses starting with bc1p.

Bech32m is a small change to the Bech32 address format, defined in BIP 350 by Pieter Wuille. It is used for SegWit outputs of version 1 and higher, which today means Taproot addresses starting with bc1p.

What changed

Everything about Bech32 stays the same (the bc or tb prefix, the 1 separator, the 32-character alphabet and the 6-character checksum) except one constant. Bech32 XORs the checksum with 1; Bech32m uses 0x2bc830a3. That fixes a weakness found in Bech32: when the last character is p, inserting or deleting any number of q characters right before it leaves the checksum valid. No string can be valid under both encodings.

Which addresses use which

Witness version Encoding Prefix
0 (P2WPKH, P2WSH) Bech32 (BIP 173) bc1q
1 (P2TR) Bech32m bc1p
2 to 16 (not yet defined) Bech32m bc1z, bc1r, ...

A decoder must check that the encoding matches the version: a bc1p address with a Bech32 checksum is invalid.

A deliberate break

Making version 1+ addresses fail in old Bech32 validators was intentional. BIP 350 notes that testing found some software would have burned funds when sending to version 1 addresses, and a clean break makes such software reject the address instead. Wallets therefore need Bech32m support to pay Taproot users. BIP 350 also asks implementers to accept every version from 1 to 16, so future upgrades work without further changes.

Silent payment addresses (BIP 352) also use Bech32m. Compare the two formats in BIP 173 vs BIP 350.

BIPs that define Bech32m

  • BIP 350: Bech32m format for v1+ witness addresses: Deployed. Introduces Bech32m, a corrected version of the Bech32 address format used for SegWit addresses (those starting with 'bc1'). A subtle flaw in Bech32 could let certain typos go undetected, so Bech32m…
  • BIP 173 (Bech32): Base32 address format for native v0-16 witness outputs: Deployed. Introduces Bech32, an address format for native SegWit outputs, recognizable by addresses starting with "bc1". It uses only lowercase letters and numbers and a strong checksum that catches typing…
  • BIP 341: Taproot: SegWit version 1 spending rules: Deployed. Taproot introduces a new kind of Bitcoin output that can be spent either with a single signature or by revealing just one of many possible alternative spending conditions, kept hidden in a tree…
  • BIP 352: Silent Payments: Complete. Silent Payments let someone publish one static address that anyone can pay, while each payment lands at a different, unlinkable address on the blockchain. Unlike similar schemes, it needs no extra…

Related terms

  • Bech32: Bech32 is the checksummed base32 address format from BIP 173, used for native SegWit version 0 addresses that start with bc1q.
  • P2TR: P2TR (Pay to Taproot) is the SegWit version 1 output type from BIP 341: one 32-byte key with optional hidden scripts. Addresses start with bc1p.
  • Taproot: Taproot is the 2021 Bitcoin soft fork (BIPs 340, 341, 342) that added Schnorr signatures and P2TR outputs which hide unused spending conditions.
  • Silent payments: Silent payments (BIP 352) are reusable static addresses: each payer derives a fresh, unlinkable Taproot output, with no notification transaction.

Learn more

Guides