bc1 addresses use Bech32 (SegWit v0) or Bech32m (Taproot and later). They are lowercase, QR-friendly and catch typos. Learn how they are built.
Anatomy of a bc1 address
- bc: human-readable part for mainnet (tb on testnet).
- 1: separator.
- Witness version:
q= version 0 (SegWit),p= version 1 (Taproot). - Program: the key hash, script hash, or Taproot key.
- Checksum: 6 characters.
Why it's better than Base58
- 32 characters only, all lowercase: easier to read aloud and to fit in QR codes.
- Guaranteed to detect up to 4 character errors, and good at catching more.
- No ambiguous characters like 1/l or 0/o.
Why Bech32m?
A small weakness was found in Bech32: in certain cases inserting or removing q characters before a final p might go undetected. That doesn't matter for v0 addresses, which have fixed lengths, but it could for future versions. Bech32m (BIP 350) changes one constant to fix it, and is used for v1 (Taproot) and later.
| Version | Letter | Encoding | Example prefix |
|---|---|---|---|
| 0 | q | Bech32 | bc1q… |
| 1 | p | Bech32m | bc1p… |
Why bc1 addresses suit QR codes
QR codes have a compact alphanumeric mode that only supports uppercase letters. Writing a bc1 address in uppercase (BC1Q…) lets wallets make smaller, easier-to-scan QR codes, and it's still a valid address.
Testnet and signet prefixes
| Network | Prefix |
|---|---|
| Mainnet | bc1 |
| Testnet and signet | tb1 |
| Regtest | bcrt1 |
Key takeaways
- bc1 addresses are Bech32 (v0) or Bech32m (v1+).
- The character after bc1 gives the witness version.
- The checksum detects up to 4 errors.
Common questions
Why are some bc1q addresses longer?
P2WPKH has a 20-byte program (42 characters); P2WSH has a 32-byte program (62 characters).
Can I type a bc1 address in capitals?
Yes, all-uppercase is valid and makes QR codes smaller. Mixed case is invalid.
Can old wallets send to bc1 addresses?
Almost all modern wallets and exchanges can. Very old software may not.
Why is a Taproot address longer than a SegWit one?
A P2TR address holds a 32-byte key, while P2WPKH holds a 20-byte hash.