6+1 Online UUEncoders and UUDecoders

Online UUEncoder and UUDecoder, what is that? uuencode is originally a Unix program used to encode binary data into text representation (see its Linux man page). Many Internet protocols were implemented in a way they expect only text command and data to be used. If binary data are about to be transferred, some kind of binary-to-text encoding must be used. UUEncoding is just one alternative, Wikipedia has a nice table of other alternatives.

Online UUEncoder is simply a web application that is able to transform an input message using UUEncoding. Where there is a UUEncoder available, there is likely to be a UUDecoder present too. Obviously, UUDecoder is something that is able to transform the UUEncoded data to their original form. At least that is what you would expect from it, right? You assume that if you encode something using UUEncoder and then use UUDecoder on the output you get the original data, right? Well, somehow this is not always the case as we are going to show you below.

Common Problems

Online tools are quite specific and different from desktop programs. You run online tools from within your browser. This means that you can be using Windows, Linux, Mac, and many other platforms and run Firefox, Chrome, Internet Explorer, Opera, Safari, and many other browsers. With a desktop program it is more clear what is the environment the tool is run in.

Online UUEncoding tool probably should support two types of input. For quick short inputs an option to type the input as a text might be a good idea. For larger inputs it comes handy when you can use a file as an input. If you want to encode large binary data it is only the file input that makes sense. At least today, when most browsers are not happy to work with megabytes on information on the page.

When you want to implement an online tool that works with UUEncoding you have to know that this encoding uses Unix style of line breaking, which is a single character called Line feed (LF, ASCII code 0x0A). The problem is that if a Windows user visits your online tool and fills in the text input of your tool and hit the form button, their browser will send you an input with Windows style of end-of-line, which consists of two characters Carriage return (CR, ASCII code 0x0D) and Line feed.

This is not a big deal when you are encoding. But it is a problem when you want to decode the data that your user typed in. If you forget to convert Windows style line breakers to Unix style and simply try to decode the input using some standard UUDecoding function, you will get trash, not the original message. This happens always when the input that the user wants to decode has more than one line, which is almost every time someone wants to use your tool seriously. So, although the UUEncoding itself supports only Unix end-of-line style, if you have a text input option in your online tool, you have to accept Windows end-of-lines too, otherwise Windows users will not be able to use it.

For text inputs the end-of-line conversion is a must. How about file inputs? One could argue that a UUEncoded file would always be created with UUEncoding tool or uuencode program and since they always produce correct outputs with Unix style of line breaks, it should be OK not to support anything else. However, although it is not very likely, it might happen that a user creates the file with encoded data manually for example by copy and pasting the output of some online UUEncoder to a file. In this case, if you simply support Windows end-of-line characters in file inputs, you will not break the functionality of your tool for other inputs. So, there is really no why not to support them.

Finally, web pages (and their forms you can type in) use a specific code page. Today, it is the UTF-8 encoding that is used mostly on the web because of its ability to encode a very large set of characters of different alphabets. If an online UUEncoder/UUDecoder pages use UTF-8 you might assume that if you encode a UTF-8 text with it and then decode the output back again you get the original UTF-8 text. Right? OK, so let’s see the results of the 6+1 online UUEncoders and UUDecoders.

Testing Online UUEncoding Tools

We have prepared following tests. All were performed from Firefox 18.0.1 running on Windows.

  1. A single line text input:

    A long text that will encode into more than one line on the output. This will cause problems to many online UUEncoders and UUDecoders on the web.

    This input was encoded, the encoded output was then decoded. The final output should have matched the original input.

  2. A file input with 5 lines using Windows end-of-line:

    This input was uploaded as a file and it was decoded. The output should have matched the test output of case 1.

  3. A single line text input:

    Some Chinese 中国话不, Russian Янег and Greek θανα characters.

    This input was encoded, the encoded output was then decoded. The final text output should have correctly displayed all UTF-8 characters. A tool could pass this test even if the output was corrupted due to end-of-line problem.

Here comes the results:

UUEncoder/UUDecoder Multiline Text Input Multiline File Input UTF-8 Output
Online Domain Tools
Free Usenet Tools
FYIcenter.com   Encoder / Decoder N/A
taskboy.com N/A
WebMaster online Tools N/A
DNSQueries.com N/A
Hard Answers N/A


Note that all tested online tools do use UTF-8. Except for our implementation, which works perfectly with all inputs and outputs, it should be noted that the only other tool that is somehow usable and actually works is provided by Free Usenet Tools. Its only problem is an inability to distinguish between UTF-8 text and binary data. FYIcenter.com is the third one that works but for serious use it misses the ability to work with files.

In case of UTF-8 output it tells you that the output is binary data and allows you to download it as a file. The encoding itself is correctly implemented and handles Windows line breaks correctly. Other tools are simply broken and do not even support working with files. WebMaster online Tools supports file inputs only for encoding.