UUDeview Home Page

The Nice and Friendly Decoder

Version 0.5.20

Version 0.5.20 fixes a buffer overflow problem that existed in versions up to and including 0.5.19.
All users are encouraged to upgrade.

UUDeview is a program that helps you transmit and receive binary files over the Internet, using electronic mail or newsgroups The UUDeview package includes both an encoder and a decoder. The decoder automatically detects the type of encoding used, offering MIME's Base64 and BinHex as well as the popular uuencoding and the less frequently used xxencoding methods. Recently, support for the popular yEnc encoding was also added. The encoder runs the other way around and encodes a binary file for sending it by mail or news.

If you have no idea what this is all about, and why encoding and decoding of files is necessary, you should read my primer Introduction to Decoding, which details the history and the present state of sending files by electronic mail.

To clear up the most common misunderstandings right away, you do not need UUDeview when downloading files from the World Wide Web, but only when using E-Mail and/or Usenet newsgroups. UUDeview does not offer file compression or encryption.

UUDeview is a particularly powerful decoder. It was designed to fit the needs of news readers. To be precise, it is a smart multi-part multi-file decoder. You simply save a bunch of articles from your email software or your newsreader into a single or into multiple files, and then fire up UUDeview. Normally, it can take the job from there and decode all files within these messages and/or articles.

The UUDeview package also includes UUEnview, a similarly powerful tool for encoding.

Both are built on top of the UUDeview library. If you are developing mail or news software, you can integrate it into your own software to add encoding and decoding facilities.

The Latest Version

If you are already using an older version of UUDeview, you might wonder whether it makes sense to upgrade. You can see a full revision history of UUDeview here.

Here are some of the highlights. Note that new options apply primarily to the Unix version of UUDeview.

New Features in UUDeview

yEnc support
Upon popular request, I have added some support for the yEnc encoding. Note that the yEnc encoding is incompatible with MIME. Personally, I discourage using yEnc and suggest to use Base64/MIME instead. Thanks to Matthew Mueller for his contribution of code to do CRC checking.

This is one of the most requested features that I never wanted to add. The '-c' option on UUDeview causes all files to be deleted if anything was decoded from them, leaving only files with no encoded (or broken) data. Be careful with this option, as UUDeview does not discriminate whether these files did have any other undecodable data within them. If any output data was written as a result of reading an input file, it goes.

With autorename (-a) on, UUDeview will rename output files if they already exist (so foo.gif would become foo.gif.1). Alternatively, '+a' inserts a unique sequential number before the last dot in the filename, keeping the extension intact (i.e. foo.gif would become foo.1.gif).

More strict MIME compatibility
With the "more mime" option (-z), UUDeview will not try as desperately as before to find encoded data in MIME messages (which caused some false readings before).

Lots of bugfixes as usual. The crash that could be seen on long input lines should be gone, as is another buffer overrun.

Support for Tcl/Tk 8.x in xdeview.

New Features in UUEnview

Plain Text and Quoted Printable
UUEnview can now also "encode" input files as plain text (-t) or as quoted-printable (-q). This is most useful in conjunction with the attachment feature (-a), because you can thus use UUEnview to compose mails with text attachments.

From and Reply-To headers
Two new options allow setting the From: (-f) and Reply-To: (-r) headers when sending E-Mails or posting news from UUEnview.

Environment variable
You can now set options for UUEnview in the $UUENVIEW environment variable (just as UUDeview reads $UUDEVIEW).


UUDeview has been ported to a number of operating systems. Please select your operating system.

UUDeview 0.5pl20 for Unix
The Unix version is the most powerful of all. By downloading and installing the distribution package, you get the two command-line tools, uudeview and uuenview. If you have Tcl/Tk installed, the graphical frontend xdeview is also installed.

UUDeview 1.1 for Windows
Michael Newcomb has written a nice graphical frontend for Windows. It runs under all versions of Microsoft Windows. The 32bit version runs under Win 95, 98 and ME as well as under NT and 2000. There is even an old 16 bit version for those still running Windows 3.1.

Please go to Michael's Web page for more information.

UUDeview 0.5.20 for Windows (Console)
This is a console mode version of UUDeview for the Windows console. This is a straight port of the Unix command line version using MinGW. It should run under all versions of Windows since '95. The file (.zip, 100kB) includes executables of UUDeview and UUEnview. Any attempts to run these from within the Windows Explorer are futile - they must be run from a console.

UUDeview 0.5d for DOS
There is also a DOS version still available. Note, however, that this version is quite old; it is based on UUDeview 0.5pl13. I do not have a DOS compiler, so I cannot update it any more. Download the DOS version as uudvd05d.zip (110 kB).

UUDeview for Macintosh
UUDeview works just fine in the MacOS X console. Please follow the download and installation instructions for Unix above. There is no GUI for UUDeview on the Macintosh.

Other Ports
There are probably UUDeview ports for your operating system on your favorite shareware archive. However, all other than the above are unofficial ports, which I am not responsible for.

I am aware of ports for OS/2 (get it from Hobbes or from William Herrera) and for QNX.

The UUDeview Library

This section is only interesting if you are a developer and are interested in writing applications with decoding support. The documents and files are not required reading material to operate the software. They are intended for users with some programming skills.

Source Code
You can download source code for the UUDeview library by simply downloading the Unix distribution above, either as tar.gz archive, or as ZIP archive. The library itself is in the uulib subdirectory; this is all you'll need in your programs. You can find sample frontends for the library in the form of uuenview.c and uudeview.c in the unix subdirectory.

Download the extensive (30+ pages) documentation here (PDF file, 180kB) requires Acrobat Reader). If you are interested in descriptions of the encoding formats only, you can also download its appendix (PDF file, 65kB).

ActiveX Control and DLL
Michael Newcomb has produced an ActiveX control and DLLs of the UUDeview library. Please visit his Windows Developer Page for more information.


UUDeview is free. There is no need to register or to pay anything. You're welcome to share it with your friends or to distribute it using other channels.

According to the license file:

UUDeview is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

UUDeview is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

If you believe that UUDeview is too good to be free, I will of course not reject any donations. Better yet, send me a postcard! I already have a good two dozen postcards from happy UUDeview users all over the world (including Tasmania, Kenya, Singapore, Sweden) and would like to expand this collection some more. But remember that Michael Newcomb <uud@miken.com> deserves just as much credit for all his work on the Windows versions.

The usage of GPL instead of the LGPL has certain impact if you intend to use the UUDeview library in your own software. The essence is that you can only include the UUDeview library in software that is released under a GPL-compatible license.


Support for UUDeview is not available unless you give me a really good reason for it.

Before 2001, UUDeview has been dormant for four years. Only then did I finally manage to look into the remaining bug reports and to brew up a new version.

Therefore I cannot make any promises about new versions or other updates to these pages. I will probably make a few bugfix versions if necessary, but on the feature side, it's pretty feature-complete.


UUDeview is already pretty ancient. In those days, it was not easy to decode attachments received by email or from newsgroups. Some files were split over multiple mails/articles, and you usually had to concatenate them by hand before you could run them through the standard uudecode utility.

In 1993, a friend gave me the source code for a uunconc program that could be fed with multiple parts without having to edit them out of their mail envelope. That was much better already, and worked for me for a while. However, uunconc could not handle multiple files, and it could not handle parts that were out of order. With larger files (and more parts), it became cumbersome.

So I started programming UUDeview around uunconc. My code looked at the subject headers and determined their correct order before feeding them to the decoding stage.

The first version of UUDeview 0.1 was released on my Web pages around June 15, 1994, announced through the comp.unix.programmer newsgroup. Thanks to Google's usenet archive, I was recently able to retrieve the orignal announcement.

Progress was very fast for a while; I must have been on steroids back then. Part of that was because of the encouraging e-mails that I received from all over the world. Well, an "encouraging" e-mail usually started with "thank you very much," but then quickly switched topics to some problem with UUDeview. I got litereally flooded with mails containing mails and articles that UUDeview refused to deal with. I usually felt obliged to include a fix in the next version, with the result that UUDeview became smarter with each new special case that was added. In turn, this made the software more popular, causing more people to find problems with it. It was a feedback loop, really. For me, it was a once in a lifetime experience in the Open Source community.

There were more or less regular releases of UUDeview for about three years. In the meantime, UUEnview was added, and all the decoding and encoding routines were moved into their own library, which I did so that other users could include the UUDeview library into their own software. The most prominent examples of this are KMail (part of KDE) and WinZip.

UUDeview is also part of all major Linux distributions, and is found on many freeware archives all around the world. It has appeared in a couple of magazines, for example Linux Magazine. I am especially proud of a mention in a Japanese magazine, were I can barely make out my latin name amont a lot of hieroglyphs. Some people have even been nice enough to send me postcards from all over the world (see above).

UUDeview 0.5.13 was released on January 9, 1997, and this turned out to be the last official release for more than four years.

At that time, however, I had well-meant intentions for a complete rewrite of UUDeview. I wanted to clean up the library, which had become somewhat messy over time, and to change its prime intention from a decoding library to a MIME handling library. I wanted the library to handle MIME first of all, allowing to access and compose MIME documents using a simple library interface. But when given non-MIME data, or upon request within MIME data, the new library was to use the old, proven, UUDeview heuristics to extract even the most hopelessly mangled attachments, as before.

This new library was to be done in C++, and I also had the goal that data could be fed into it from anywhere: from files, from memory, directly from sockets (one intention was to decode directly from an NNTP feed without the need to store articles on disk). Users would have been able to overload abstract C++ classes to provide new input/output schemes themselves.

This was to be a classic case of second-system effect (even though it was the third system in this case). I continued to hack away towards these goals for a while, but eventually my enthusiasm disappeared, and I turned my interest to other projects.

In the meantime, however, problem reports and feature requests continued to pour in, and I thought that my new library would easily dispose of them all.

Finally, years after giving up on the new library project, acting on bad conscience, I finally pulled myself together and waded through three years of bug reports and feature requests, resulting in version 0.5.15 on June 8, 2001. This was in the wake of moving my Web pages from the university account to my private domain. I had to touch the pages anyway, so I thought I should at least update them, so that I could display them on the new site without bad conscience.

Frank Pilhofer <fp -AT- fpx.de> Back to the Homepage
Last modified: Mon Mar 1 18:44:46 2004