yEnc Encoder/Decoder

Usenet binary encoding roughly twice as efficient as UUEncode

Ad placeholder (leaderboard)

yEnc is the encoding that made binary Usenet practical: it ships large attachments with almost no size penalty and a built-in integrity check. This tool encodes text into a single-part yEnc block and decodes yEnc articles back to their bytes, verifying the CRC, all in your browser.

How it works

yEnc maps each source byte with a simple offset: E = (byte + 42) mod 256, then writes E as a single character. Because the shift moves typical data away from control codes, almost every byte survives as-is. Only the critical bytes would break a newsgroup article: after the shift, null, line feed, carriage return and = are escaped by writing = followed by (E + 64) mod 256. A dot at the start of a line is also escaped to defeat SMTP dot-stuffing. The body is wrapped in a =ybegin line=... size=... name=... header and a =yend size=... crc32=... footer.

The trailer’s CRC32 is computed over the original bytes using the standard reflected polynomial 0xEDB88320. On decode, this tool reverses the offset and escaping, then recomputes the CRC32 and reports whether it matches, so you immediately know if the data arrived intact.

Tips and notes

Real multi-part yEnc posts add =ypart begin=... end=... lines and a pcrc32 per part; this tool handles single-part bodies and ignores =ypart lines if present. When decoding, paste from =ybegin through =yend so the CRC can be read. A CRC mismatch almost always means the article was truncated, so re-fetch the missing part before trusting the output.

Ad placeholder (rectangle)