…
Base91 decoding is a process that converts text or binary data encoded in Base91 notation back to its original form. Unlike Base64 or Base32, Base91 offers a more efficient encoding scheme by using a wider range of ASCII characters, thereby reducing the overall data size. This efficiency makes Base91 a convenient choice for applications that require compact representations, such as email attachments, URL query parameters, and specialized data transmission systems.
Use this tool to quickly decode base-91 text-printable characters to a readable string. The online utility decodes a string so that it conforms to the Base91 Data Encodings specification.
Using the Base91 Decode tool is straightforward:
This user-friendly process saves time for developers and non-technical users who need to handle encoded data without hassle.
Base 91 is not for encryption purposes and is not secure. It is an encoding mechanism only.
An advanced technique for converting binary data into ASCII letters is base 91. It is comparable to base64 or UUencode but more effective. Base91 generates overhead depending on the input data. It can go as low as 14 percent, which often happens on 0-byte blocks, and reaches a maximum of 23 percent (as opposed to 33 percent for base64). Because of this, base 91 can be highly helpful for sending big data over unreliable binary connections, such as terminal lines or email.
Four of the 95 readable ASCII characters—the space (0x20), apostrophe (0x27), hyphen (0x2d), and backslash—are left out (0x5c).
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuz0123456789!#$%&()*+,./:;<=>?@[]^_`{|}~"
(and notably no -' \)
Base64 decoding schemes are commonly used when there is a need to decode binary data that was stored and needs to be transferred over media that are designed to deal with textual data. Base64 encoding and decoding function creates a base-64 encoded ASCII string from a "string" of binary data.
Base91 relies on a larger character set—91 printable ASCII characters—to represent data. Each character can hold more bits of information compared to common schemes like Base64. As a result, data encoded in Base91 tends to be shorter. When you decode Base91, the process reverses this encoding logic, converting the compact character sequences back into their original binary or text format. This step is crucial for applications needing to accurately consume the original data, such as software parsing image files, encrypted tokens, or serialized objects.
While Base64 is widely recognized and used in many applications, Base91 can be more space-efficient, offering a higher compression rate. However, the trade-off can be slightly longer processing times and less built-in support in common libraries.
Base32 is often used when cases are sensitive, or for systems that restrict the character set (e.g., domain names). But when you want a higher compression ratio and have no restrictions on symbols, Base91 stands out as a better alternative.
URL encoding focuses on ensuring that all characters are valid within URLs. While Base91 can be URL-safe if implemented carefully, it’s not designed explicitly for URL constraints. Therefore, URL encoding or Base64-URL variants might be more suitable for web-based scenarios.
Because Base91 produces shorter encoded strings, it’s an excellent option for storing or transmitting large amounts of data where every byte counts. Developers often leverage Base91 for embedding data in environments with limited space, such as QR codes or tiny text fields.
Although Base91 isn’t a compression algorithm, it pairs well with compressed data. By encoding already compressed data (e.g., using GZIP or ZIP) in Base91, you can maintain its compact form during storage or transit and easily decode it on the receiving end.
Base91 can be used alongside cryptography tools for securely transmitting information. After encrypting data, encoding it in Base91 ensures that the output remains in a predictable format, making it safe to store or share without corruption or mismatch issues.
Explore related online encoding and decoding tools:
Consider using a JSON formatter, XML formatter, or similar tools alongside your Base91 decoding. This helps when handling complex data formats that might also require readability improvements once decoded.
let source = "This is a random binary string";
let encode_as_vec: Vec<u8> = base91::slice_encode(source.as_bytes());
let decode_as_vec: Vec<u8> = base91::slice_decode(&encode_as_vec);
Joachim Henke created the base91 binary-to-text encoding technique, often known as basE91. The binary data stream is split into 13-bit packets, which are subsequently encoded as two ASCII characters[2]. In general, the size of the encoded data will be 316 times bigger than the original, assuming eight bits per ASCII character. This is more effective than base85's 14 increase and base64's 13 increase (which utilizes four characters to represent three bytes of data) (which uses five characters to represent four bytes of data).
$
and "
in the digit alphabet.Looking at code you wrote more than two weeks ago is like looking at code you are seeing for the first time.
…