Keys & Addresses

Bech32

Bech32 is the address encoding format for native SegWit Bitcoin addresses, producing addresses that start with bc1. It offers better error detection, lower transaction fees, and improved QR code compatibility compared to legacy address formats.

How It Works

Bech32 was introduced with BIP173 as the native encoding for SegWit addresses. Unlike legacy Base58Check addresses, bech32 uses a character set of 32 lowercase alphanumeric characters (excluding 1, b, i, o) specifically chosen to minimize visual confusion. The format starts with a human-readable prefix (bc for Bitcoin mainnet), followed by a separator (1), and then the data with an error-correcting checksum.

The error detection in bech32 is substantially more powerful than legacy formats. It can detect any single character error and most transposition errors. For Taproot addresses, an updated version called bech32m (BIP350) was introduced to fix a minor edge case in the original specification. Taproot addresses (bc1p...) use bech32m while SegWit v0 addresses (bc1q...) use the original bech32.

From a practical standpoint, bech32 addresses reduce transaction fees because SegWit transactions take up less block weight. They are also entirely lowercase, making them easier to type manually and more compact in QR codes. If a service or exchange cannot send to bech32 addresses, they are running outdated software and you should push them to upgrade.

Key Points

  • Native encoding for SegWit addresses, starting with bc1q (v0) or bc1p (Taproot)
  • Superior error detection catches typos before funds are sent to wrong addresses
  • Lower transaction fees due to SegWit discount on witness data
  • Entirely lowercase format improves readability and QR code efficiency
  • Bech32m variant (BIP350) used for Taproot and future SegWit versions