search

Found

info Overview

Encode and decode text as Base85 in two variants: PDF/PostScript Ascii85 and ZeroMQ Z85, with invalid characters flagged inline as you type or paste.

📘 How to Use

  1. Select encode or decode
  2. Choose the Ascii85 or Z85 variant
  3. Type text or paste a Base85 string into the input

Base85 Encoder / Decoder

Copied
Article

Base85 Encoder & Decoder | Ascii85 and Z85 in One Tool

Base85 packs four bytes into five printable characters, so it carries about 25% overhead instead of Base64's 33%. This tool flips between Adobe-style Ascii85 and ZeroMQ Z85 on one screen, turning your input into encoded or decoded output and naming any character that doesn't belong.

💡 About this tool

If you have ever cracked open a PDF or PostScript file, you have probably seen images and fonts stored as long strings wrapped in <~ ... ~>. That is Adobe's Ascii85. Work with ZeroMQ instead and you meet Z85, a different Base85 flavor used for CURVE keys and certificates. The classic "it says base85 but the output doesn't match" headache almost always comes down to mixing up these two variants.

This tool keeps direction (encode/decode) and variant (Ascii85/Z85) as separate switches, so reverse-engineering a PDF blob and round-tripping a ZeroMQ key both live in the same place. Input is converted to UTF-8 bytes in your browser before processing, and the Ascii85 decoder expands the z shorthand for four zero bytes. When a stray character sneaks in from a bad copy-paste, the tool calls it out by name instead of silently producing garbage.

🧐 Frequently Asked Questions

What is the difference between Base85, Ascii85, and Z85? Base85 is the umbrella term for "represent data using 85 characters." Ascii85 is Adobe's concrete implementation for PostScript and PDF; it uses <~...~> delimiters and shortens four zero bytes to a single z. Z85 is the ZeroMQ implementation, which picks a character set that avoids quotes and backslashes so the result drops cleanly into source code.

How much smaller is Base85 than Base64? Base85 turns 4 bytes into 5 characters, roughly a 25% increase. Base64 turns 3 bytes into 4 characters, roughly 33%. For the same binary, Base85 produces fewer characters.

Why does Z85 reject input that is not a multiple of five characters? Z85 decoding maps every five characters back to four bytes, so a length that isn't a multiple of five can't be reconstructed. On the encode side the data must be padded to a multiple of four bytes; this tool pads the remainder automatically before producing Z85.

Do I need the <~ ~> markers or the z to decode Ascii85? The <~ and ~> delimiters are optional for decoding here. The z is a shorthand for four zero bytes, so you can paste it as-is and it expands correctly.

📚 Where Ascii85 Quietly Shows Up

Beyond embedding images and fonts inside PDFs and PostScript, Adobe's Ascii85 is also how Git stores binary patches: run git diff --binary and the blob you see is Ascii85. It is a deliberately boring, decades-old way to move binary data through a text-only pipeline. So the next time a code review surfaces a wall of characters starting with <~, you'll know it isn't corruption, it's a binary file rendered as text.