Encodings

basE91

Joachim Henke basE91 with 13 or 14 bits per two printable characters. About 23 percent overhead
IDbase9116 / 20base91 · 91 characters
Encoding / basE91

basE91

Squeezes printable ASCII hardest.

Overhead
+23% on random bytes
Padding
none
Standard
Joachim Henke, basE91 reference implementation (base91.sourceforge.net)
Family
1 in base91
family 1 / 20

Sample

Out
TPwJh>Io2Tv!8PE
Back
"hello world!"

Access

Importimport { base91 } from "@agntn/encodings/base91"
CLIencodings encode base91 'hello world!'
Tryplayground with the sample above

The squeeziest one here. 91 printable ASCII characters, every one except -, \ and ', and a variable 13 or 14 bits per pair. About 23% overhead, against 33% for base64.

ts
encode("base91", "Hello, World!");  // ">OwJh>}AQ;r@@Y?F"

There's no RFC. Joachim Henke's reference C code is the spec, and this follows it bit for bit. One difference. The reference skips characters outside the alphabet, this decoder throws. Why? Silently skipping input is how you lose a byte and never notice.