Bitcoin address case rules: Base58, Bech32 and Bech32m
Bitcoin Base58Check addresses are case-sensitive. Bech32 and Bech32m allow all-lowercase or all-uppercase representations but reject mixed case.
Worked example
| Encoding | Case rule | Action |
|---|---|---|
| Base58Check | Preserve exact upper/lowercase | Never normalize characters |
| Bech32 | All lower or all upper, not mixed | Preserve wallet output |
| Bech32m | Same case rule as Bech32 | Use version-appropriate validation |
A display transformation can break an address
Uppercasing a Base58 address changes encoded symbols. Capitalizing just the first letter of a bc1 address creates a mixed-case string and invalidates Bech32 rules. Treat address text as structured data, not prose.
Checksums are encoding-specific
SegWit version 0 uses Bech32, while version 1 and later use Bech32m under BIP-350. Merely matching bc1 does not validate the checksum or witness program. This page explains rules; it does not implement Bitcoin address validation.
Common pitfalls
- The EVM checker does not validate Bitcoin addresses.
- Do not manually repair a checksum by changing characters.
Related references
Primary sources
Examples explain identifiers. They are not investment recommendations.