Definition
Bech32m, specified in BIP350, is a small but important revision of the Bech32 address encoding. It is mandatory for Segregated Witness version 1 and above, which is why every Pay-to-Taproot address begins with bc1p rather than the bc1q of SegWit v0. To users the two encodings look identical; the difference lives entirely in the checksum.
What changed and why
The original Bech32 checksum had a known weakness: when the final data character was p, inserting or deleting any number of q characters immediately before it left the checksum valid, allowing a malformed address to slip through. Bech32m replaces the checksum's final XOR constant of 1 with 0x2bc830a3, which eliminates that insertion/deletion vulnerability while preserving the strong substitution-error detection of the original.
How wallets choose
The rule is clean: SegWit v0 outputs (P2WPKH, P2WSH) keep using Bech32, while every witness version from 1 through 16 uses Bech32m. Wallets pick the encoding from the witness version, so sending software must support both. For operators, the takeaway is that a bc1p address is a Taproot output validated by the hardened checksum, protecting against transcription mutation when funds are at stake.
The base scheme is Bech32, and the output type Bech32m encodes is P2TR (Pay to Taproot).
In Simple Terms
Bech32m, specified in BIP350, is a small but important revision of the Bech32 address encoding. It is mandatory for Segregated Witness version 1 and above,…
