Encode bytes with Bitcoin-alphabet Base58 or Base58Check, or decode them back. Supports optional Base58Check version-byte validation.
Encode bytes with a human-readable prefix and Bech32 or Bech32m checksum, or validate and decode an existing string.
Runs in your browser — your input is processed on this device and never uploaded.
Enter text or upload a file to encode. To decode, enter the encoded text.
Used when encoding. Decoding detects and validates the supplied string.
Short tag before the 1, such as bc or addr. Encoding only.
Results appear here.
Bech32 is a checksummed string format: a human-readable prefix, the separator 1, data in a 32-character alphabet, and a six-character checksum. BIP-173 defined it for Bitcoin SegWit addresses, and BIP-350 added Bech32m, which changes one checksum constant to fix a flaw.
The data alphabet, qpzry9x8gf2tvdw0s3jn54khce6mua7l, leaves out 1, b, i and o, and a string is either all lowercase or all uppercase, never mixed. That makes it easier to read aloud, and an uppercase string fits the compact alphanumeric mode of a QR code.
The checksum is a BCH code that is guaranteed to detect any error affecting up to four characters, where a hash-based checksum only makes such misses unlikely.
Base58 and Base58Check is the older Bitcoin address format and still common for legacy addresses. Base32 is the RFC 4648 encoding, with a different alphabet and no checksum.
Bech32m exists because the original checksum has a weakness: when a string ends in p, inserting or deleting q characters just before it can go unnoticed. BIP-350 fixed that with a different constant. SegWit version 0 addresses (bc1q…) keep Bech32, and version 1 and later, starting with Taproot (bc1p…), use Bech32m.
Warning
A valid checksum detects transcription errors. It does not authenticate the data, and it does not prove an address belongs to the network or address type you expect.
Explore tools with similar capabilities.
Encode bytes with Bitcoin-alphabet Base58 or Base58Check, or decode them back. Supports optional Base58Check version-byte validation.
encoding
Encode bytes with a self-identifying multibase prefix, or detect the prefix and decode an existing multibase string.
encoding
Encode bytes as whole-value Base62, or decode Base62 text back to bytes. Choose either supported digit and letter ordering.
encoding
Encode text or uploaded files as Base32, or decode Base32 text and files back to binary. It all runs in your browser, so your input stays on the device.
encoding
Encode text or uploaded files as lowercase hexadecimal, or decode hex back to binary. It all runs in your browser, so your input stays on the device.
encoding
Encode text or uploaded files as Base64, or decode Base64 text and files back to binary. It all runs in your browser, so your input stays on the device.