Encodings
| Options | Standard | ||||
|---|---|---|---|---|---|
| Binarybinary | 2 chars | overhead +700% | checksum no | separate? | Base2, most significant bit first |
| Hex (Base16)hex | 16 chars | overhead +100% | checksum no | upper? | RFC 4648 §8 |
| Base32base32 | 32 chars | overhead +60% | checksum no | no options | RFC 4648 §6 |
| Base32hexbase32hex | 32 chars | overhead +60% | checksum no | no options | RFC 4648 §7 |
| Crockford's Base32base32-crockford | 32 chars | overhead +60% | checksum no | no options | Douglas Crockford, Base32 (crockford.com/base32.html) |
| z-base-32z-base-32 | 32 chars | overhead +60% | checksum no | no options | Zooko O'Whielacronx, human-oriented base-32 encoding (2002) |
| Base45base45 | 45 chars | overhead +48% | checksum no | no options | RFC 9285 |
| Base58base58 | 58 chars | overhead +37% | checksum no | no options | Bitcoin Core base58.cpp |
| Base58Checkbase58check | 58 chars | overhead +37% | checksum yes | no options | Bitcoin Core base58.cpp (EncodeBase58Check) |
| Base58 (Flickr)base58-flickr | 58 chars | overhead +37% | checksum no | no options | Flickr short URLs (flic.kr) |
| Base58 (Ripple)base58-ripple | 58 chars | overhead +37% | checksum no | no options | XRP Ledger address encoding |
| Base64base64 | 64 chars | overhead +33% | checksum no | no options | RFC 4648 §4 |
| Base64urlbase64url | 64 chars | overhead +33% | checksum no | no options | RFC 4648 §5 |
| Ascii85ascii85 | 85 chars | overhead +25% | checksum no | delimiters? | Adobe PostScript Language Reference, ASCII85Decode |
| Z85z85 | 85 chars | overhead +25% | checksum no | no options | ZeroMQ RFC 32/Z85 |
| basE91base91 | 91 chars | overhead +23% | checksum no | no options | Joachim Henke, basE91 reference implementation (base91.sourceforge.net) |
| Bech32bech32 | 32 chars | overhead +62% | checksum yes | prefix, limit? | BIP173 |
| Bech32mbech32m | 32 chars | overhead +62% | checksum yes | prefix, limit? | BIP350 |
| uuencodeuuencode | 64 chars | overhead +38% | checksum no | name?, mode? | POSIX uuencode(1) and uudecode(1) |
| Quoted-Printablequoted-printable | 96 chars | overhead +125% | checksum no | no options | RFC 2045 §6.7 |
Every row is create(name).info(), computed in your browser from the registry the CLI and the agent tools read. Sort by overhead and watch binary sit at the bottom with +700%. Sort by alphabet and basE91 wins the size contest, Quoted-Printable cheats.
Picking one
Need it to survive a URL? base64url. An email body? base64, which MIME already speaks. A person reading it aloud over a bad phone line? Crockford's Base32 or z-base-32.
Something money gets sent to? Anything with a checksum. Base58Check catches most typos, bech32 and bech32m catch any four. Plain base58 catches none, and that's why it never travels alone in Bitcoin.
Matching what somebody else wrote? Their spec wins, every time. A QR code wants base45. A PDF stream wants Ascii85. ZeroMQ wants Z85. They look alike and they're not interchangeable.
Squeezing bytes into the fewest printable characters? basE91, at about 23% overhead. Nobody else will read it, so make sure you're the only reader.