Ascii85 is the encoder you reach for when Base64's 33% overhead starts hurting and you need something tighter. It's what PDF and PostScript use internally, it's in Git's binary diff format, and if you've ever decoded a suspicious-looking email attachment you've seen it in the wild.
The math is clean: 4 bytes in, 5 characters out, exactly 25% overhead. That makes it the space-efficiency winner among the common binary-to-text schemes. Encode the same 4 MB file and Base85 saves you roughly 330 KB over Base64. Not nothing.
Here's where it gets annoying — there's no single Ascii85. There are at least four variants in common use, and they're not interchangeable. The original btoa/Ascii85 uses printable ASCII characters 33-117 with a special shortcut: four null bytes encode to a single z instead of !!!!!. Adobe's PostScript variant wraps everything in <~ and ~>. ZeroMQ's Z85 uses a completely different character set chosen to avoid things that break in shell scripts and config files. RFC 1924 uses yet another, for encoding IPv6 addresses.
If your output doesn't match what the consumer expects, check the variant first. This is almost always the bug — not your input, not the algorithm, just a character set mismatch.
The character set is the other thing that'll bite you. Original Ascii85 includes double-quote, single-quote, backslash, less-than, greater-than — all things that'll confuse a JSON parser, an XML attribute, or a shell. Put raw Ascii85 into a JSON string without escaping and you'll spend twenty minutes wondering why your payload arrives corrupted at the server. Use Z85 if you're embedding in source code or config files. It was designed for exactly this.
Paste the string 87cURD]jJBEbo7% into the decoder — that's Ascii85 for "hello world". The z null-byte shortcut shows up in sparse data: memory dumps, padded binary structures, certain image formats. If you see a z in your encoded output, don't panic, the decoder handles it fine.
For large files the 25% savings compounds meaningfully. But honestly, for most daily dev tasks the overhead difference between Base64 and Base85 isn't the bottleneck. Use Base85 when the spec dictates it (PostScript, PDF, Git packfiles, ZeroMQ) or when you're really bandwidth-constrained. Otherwise Base64 is simpler and everyone knows it.