Skip to content

Instantly share code, notes, and snippets.

@patrickfav
Last active February 26, 2023 18:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patrickfav/00ba65af3a0ba059fbf24a437d21a104 to your computer and use it in GitHub Desktop.
Save patrickfav/00ba65af3a0ba059fbf24a437d21a104 to your computer and use it in GitHub Desktop.
Overview of Many Popular Binary-to-Text Encodings and their properties.
## Binary
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 12.5 % (1 bit/char), 1 bit segments β”‚
β”‚ 32/64/128 bit β”‚ 1-32/1-64/1-128 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ false β”‚
β”‚ Suited for β”‚ number encoding, debugging β”‚
β”‚ Alphabet β”‚ 01 β”‚
β”‚ Known Usages β”‚ none β”‚
β”‚ Standardization β”‚ none β”‚
β”‚ Example β”‚ 11010011 01111000 01101100 10010011 01111110 01111111 00111000 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Octal
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 37.5 % (3 bit/char), 24 bit segments β”‚
β”‚ 32/64/128 bit β”‚ 1-11/1-22/1-43 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ false β”‚
β”‚ Suited for β”‚ number encoding β”‚
β”‚ Alphabet β”‚ 01234567 β”‚
β”‚ Known Usages β”‚ chmod β”‚
β”‚ Standardization β”‚ none β”‚
β”‚ Example β”‚ 703767722333074323 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Dec
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 41.5 % (3.32 bit/char) β”‚
β”‚ 32/64/128 bit β”‚ 1-10/1-20/1-39 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ false β”‚
β”‚ Suited for β”‚ number encoding β”‚
β”‚ Alphabet β”‚ 0123456789 β”‚
β”‚ Known Usages β”‚ single byte representations β”‚
β”‚ Standardization β”‚ none β”‚
β”‚ Example β”‚ 15902780311763155 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Hex
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 50 % (4 bit/char), 8 bit segments β”‚
β”‚ 32/64/128 bit β”‚ 8/16/32 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ true β”‚
β”‚ Suited for β”‚ number & byte-string encoding β”‚
β”‚ Alphabet β”‚ 0123456789abcdef β”‚
β”‚ Known Usages β”‚ widely used, e.g. UUIDs, cryptographic keys, ... β”‚
β”‚ Standardization β”‚ RFC 4648 β”‚
β”‚ Example β”‚ 387f7e936c78d3 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Base26
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 58.8 % (4.70 bit/char) β”‚
β”‚ 32/64/128 bit β”‚ 7/14/28 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ true β”‚
β”‚ Suited for β”‚ byte-string encoding β”‚
β”‚ Alphabet β”‚ ABCDEFGHIJKLMNOPQRSTUVWXYZ β”‚
β”‚ Known Usages β”‚ none β”‚
β”‚ Standardization β”‚ none β”‚
β”‚ Example β”‚ EIQYWQEAJRFF β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Base32
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 62.5 % (5 bit/char), 40 bit segments β”‚
β”‚ 32/64/128 bit β”‚ 7+1/13+3/26+6 chars (+padding) β”‚
β”‚ Padding β”‚ true β”‚
β”‚ Const. Out. Len.β”‚ true β”‚
β”‚ Suited for β”‚ byte-string encoding β”‚
β”‚ Alphabet β”‚ ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 β”‚
β”‚ Known Usages β”‚ none β”‚
β”‚ Standardization β”‚ RFC 4648 β”‚
β”‚ Variations β”‚ z-base-32, Crockford's Base32, base32hex, Geohash β”‚
β”‚ Example β”‚ HB7X5E3MPDJQ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Base36
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 64.6 % (5.17 bit/char) β”‚
β”‚ 32/64/128 bit β”‚ 1-7/1-13/1-25 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ false β”‚
β”‚ Suited for β”‚ big integer encoding β”‚
β”‚ Alphabet β”‚ 0123456789abcdefghijklmnopqrstuvwxyz β”‚
β”‚ Known Usages β”‚ Reddit Url Slugs β”‚
β”‚ Standardization β”‚ none β”‚
β”‚ Example β”‚ 4cl2cf404wj β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Base58
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 73.2 % (5.86 bit/char) β”‚
β”‚ 32/64/128 bit β”‚ 6/11/22 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ false β”‚
β”‚ Suited for β”‚ big integer encoding β”‚
β”‚ Alphabet β”‚ 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz β”‚
β”‚ Known Usages β”‚ Bitcoin, IFPS β”‚
β”‚ Standardization β”‚ none β”‚
β”‚ Variations β”‚ flicker short-urls β”‚
β”‚ Example β”‚ 39BQ5CdzFL β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Base64
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 75 % (6 bit/char), 24 bit segments β”‚
β”‚ 32/64/128 bit β”‚ 6+2/11+1/22+2 chars (+padding) β”‚
β”‚ Padding β”‚ true β”‚
β”‚ Const. Out. Len.β”‚ true β”‚
β”‚ Suited for β”‚ byte-string encoding β”‚
β”‚ Alphabet β”‚ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ β”‚
β”‚ (url-safe) β”‚ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_ β”‚
β”‚ Known Usages β”‚ practically everywhere β”‚
β”‚ Standardization β”‚ RFC 4648 (previously RFC 3548) β”‚
β”‚ Variations β”‚ RFC 4880, RFC 1421, RFC 2152, RFC 3501, bcrypt radix64 β”‚
β”‚ Example β”‚ OH9-k2x40w β”‚
β”‚ β”‚ OH9+k2x40w (url-safe) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Ascii85
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 80.1 % (6.41 bit/char) β”‚
| 32/64/128 bit β”‚ 1-5/2-10/4-20 chars β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ false β”‚
β”‚ Suited for β”‚ byte-string encoding β”‚
β”‚ Alphabet β”‚ 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz β”‚
β”‚ Known Usages β”‚ Git, Adobe PDF and PostScript β”‚
β”‚ Variations β”‚ ZeroMQ, ZMODEM, btoa, Adobe, RFC 1924 β”‚
β”‚ Example β”‚ 3.HC@Cj=D β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
## Base122
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Efficiency β”‚ 86.6 % (6.93 bit/char) β”‚
| 32/64/128 bit β”‚ ? β”‚
β”‚ Padding β”‚ false β”‚
β”‚ Const. Out. Len.β”‚ false β”‚
β”‚ Suited for β”‚ embedding blobs in HTML (experimental) β”‚
β”‚ Alphabet β”‚ full 7bit minus some reserved chars (UTF-8 compatible) β”‚
β”‚ Known Usages β”‚ none β”‚
β”‚ Example β”‚ οΏ½οΏ½vοΏ½~οΏ½ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment