The History of the ZIP File — A Lawsuit, a Format, and a Tragedy

Open almost any ZIP file in a hex editor and the first two bytes read PK. They are a man's initials. The format exists because he was sued, and the way he responded to that lawsuit is the reason ZIP is now inside every Word document, every Android app and every ebook on the planet.

The short version

Phil Katz wrote a faster clone of a popular archiver, was sued by its owner, and responded by designing a new format that owed nothing to theirs and publishing the specification for anyone to implement. The competitor tried to control its format and vanished. Katz gave his away and it became universal.

Before ZIP

In the mid-1980s, home computers connected over modems at a few hundred bits per second, and bulletin board systems charged by connection time. Compression was not a convenience; it was the difference between a download taking twenty minutes and taking an hour.

The dominant tool was ARC, from System Enhancement Associates, released in 1985. It did two things at once — bundling several files into one and compressing them — and it became the standard format for software distribution on BBSes.

ARC was shareware. The format was not documented for others to implement, and SEA treated it as proprietary.

Phil Katz

Katz was a programmer in Milwaukee, and in 1986 he wrote PKARC — a tool that read and wrote ARC files considerably faster than ARC itself, with the compression routines hand-written in assembly language.

It was, by all accounts, dramatically better. On the hardware of the day the speed difference was not marginal; PKARC displaced ARC across the BBS world within months. Katz founded PKWARE to sell it.

The lawsuit

In 1988, SEA sued Katz for copyright and trademark infringement over PKARC.

The case settled. Katz paid damages, agreed to stop distributing ARC-compatible tools, and the matter closed — but not before becoming one of the first genuinely public disputes in the shareware community about who owns a file format. Opinion divided sharply, and SEA's reputation among BBS users suffered badly for pursuing a developer whose product was simply better.

What matters is what Katz did next.

✅ The decision that made ZIP universal

Rather than fighting on, Katz designed a new format from scratch — one that owed nothing to ARC and could not be litigated over. He released it in 1989 as ZIP, and did something SEA had not: he published the complete specification as a document called APPNOTE.TXT, and stated it could be implemented by anyone, free of charge.

He kept his implementation commercial. He gave away the format. That distinction is why ZIP is in everything and ARC is a historical footnote.

The reasoning is straightforward in hindsight. A format that anyone can implement gets implemented by everyone, and a format everyone implements becomes the one users expect. Katz sold the best tool for a format that had become the standard — a better position than owning a format nobody else could support.

SEA continued to treat ARC as proprietary and faded from relevance within a few years.

The design

ZIP's technical structure reflects the constraints of its era and has aged remarkably well.

[ local header + compressed data ] ← file 1 [ local header + compressed data ] ← file 2 [ local header + compressed data ] ← file 3 [ central directory ] ← index of everything [ end of central directory record ] ← the last bytes

Why the index is at the end

This is the design's most consequential choice, and it buys three things:

  • Append-only updates. Adding a file means writing it and rewriting only the directory — not the whole archive. On a floppy disk in 1989 that mattered enormously.
  • Self-extracting archives. Because readers seek to the end to find the index, a ZIP can be appended to an executable and both remain valid. The program runs; the archive is still readable.
  • Streaming creation. Files can be compressed and written one at a time without knowing the total size in advance.

The cost is the failure mode anyone who has downloaded a large archive has met: lose the last few bytes and the entire file is unreadable, even though nearly all the data is present. A truncated ZIP is not partially recoverable by default — the map is gone.

Compression

ZIP separates the container from the compression method, which is why it has outlasted its original algorithms. Early versions used methods called Shrink and Implode; DEFLATE, introduced in 1993, became the standard and still is.

DEFLATE combines LZ77 — replacing repeated sequences with a reference to their earlier occurrence — with Huffman coding, which gives shorter bit patterns to more frequent values. It is not the most efficient algorithm available, and it is fast, well understood, patent-free and implemented everywhere. It is also used by gzip, PNG and HTTP compression.

💡 The specification is still maintained

APPNOTE.TXT is still published by PKWARE and still the authoritative reference. It has been extended over three decades to add ZIP64 for archives above 4GB, AES encryption, Unicode filenames, and newer compression methods including bzip2, LZMA and Zstandard.

A 1989 format that has absorbed all of that without breaking compatibility is unusually good engineering. Files written by PKZIP in 1990 still open today.

How ZIP ended up inside everything

The open specification produced a second-order effect Katz cannot have anticipated. Because every platform already had a ZIP implementation, it became the obvious choice whenever anyone needed a container for structured files.

FormatReally a ZIP containing
.docx .xlsx .pptxXML documents, images, relationship files
.odt .ods .odpOpenDocument XML
.epubHTML, CSS, images, a manifest
.jar .warJava class files and a manifest
.apk .aabAndroid bytecode and resources
.xpiFirefox extensions
.3mf3D printing models
.sketchJSON design documents
.whlPython packages
.crxChrome extensions

Each of these teams faced the same problem — bundle several files, compress them, guarantee every platform can read the result — and reached the same conclusion. Designing a new container would mean writing readers for every language and operating system. Using ZIP meant it worked immediately, everywhere.

✅ A genuinely useful consequence

Because these are ordinary ZIP archives, you can open them. When Word declares a .docx corrupt, rename a copy to .zip and open it — word/media/ contains every image as a normal file, and word/document.xml holds the text. Documents that Word cannot repair frequently give up their content this way.

What happened to Phil Katz

The story does not end well, and it is worth telling honestly rather than as a footnote.

Katz struggled with alcoholism through the 1990s. PKWARE remained a successful business but he withdrew progressively from it, and the last years of his life involved repeated legal trouble and periods of homelessness despite considerable wealth. He died in a motel room in Milwaukee in April 2000, aged 37, of complications from chronic alcoholism.

He was 37 years old and had written a file format that, twenty-six years later, is in essentially every computing device in existence. Every Word document opens with his initials.

Zip bombs

One consequence of ZIP's design deserves a mention because it is still an active security concern.

Compression ratios have no upper bound. A file of a billion identical bytes compresses to almost nothing, so a small archive can expand to something enormous.

The classic example is 42.zip — roughly 42 kilobytes containing nested layers of archives that, fully expanded, produce about 4.5 petabytes. Any system that decompressed recursively without limits would fill its disk and fall over.

The countermeasure was to limit recursion depth, and more recent work defeats that too: by overlapping compressed streams so that a single layer of files shares the same compressed data, a modern zip bomb reaches ratios above 28 million to one without nesting at all.

🚨 If you accept uploaded archives

Enforce limits on the output, not the input. Cap total extracted size, cap the number of entries, cap recursion depth, and stream the extraction so you can abort mid-way rather than discovering the problem when the disk is full. Checking the uploaded file's size tells you nothing about what it expands to.

Also validate paths: an entry named ../../etc/passwd writes outside the extraction directory in any naive implementation. This is a real and repeatedly exploited class of vulnerability sometimes called Zip Slip.

The lesson in the story

ZIP is a case study in a pattern that has repeated many times since. Two parties had a format. One tried to control it and kept the value close. The other published the specification and competed on implementation.

The controlled format disappeared. The open one became infrastructure — so thoroughly that its inventor's initials are now in the first two bytes of billions of files created daily by people who have never heard of him.

Katz kept the commercial value where it was defensible: in a fast, well-engineered implementation. He gave away the part that only had value if everyone used it. That is a better bargain than it looks, and the same reasoning explains why PDF, HTML and UTF-8 succeeded where their proprietary contemporaries did not.

Need to look inside an archive?

Generate checksums, convert files and inspect formats — all in your browser, with nothing uploaded to a server.

Browse all tools →

Summary

  • PK is Phil Katz, and those bytes begin every ZIP file.
  • ZIP exists because of a 1988 lawsuit over an ARC-compatible tool.
  • Katz published the specification openly and sold the implementation — the decision that made ZIP universal.
  • The index sits at the end, which enables appending and self-extracting archives, and makes truncation fatal.
  • DEFLATE has been the standard method since 1993 and is also used by gzip, PNG and HTTP.
  • DOCX, APK, JAR, EPUB and more are ZIP archives — which makes them openable and often recoverable.
  • Zip bombs exploit unbounded compression ratios. Limit output, not input.
  • Katz died in 2000, aged 37. His initials open billions of files a day.

Frequently Asked Questions

Why does every ZIP file start with PK?

Those are the initials of Phil Katz, who created the format in 1989. The bytes 50 4B are the letters PK in ASCII and begin every local file header. They appear at the start of DOCX, XLSX, JAR, APK and EPUB files too, because all of them are ZIP archives underneath.

Why was the ZIP format given away for free?

Katz had been sued by System Enhancement Associates over his earlier ARC-compatible tools. He responded by creating a new format that owed nothing to theirs and publishing the specification openly, so no one could control it the way SEA had tried to control ARC. That decision is the main reason ZIP became universal.

Why is the ZIP index stored at the end of the file?

It allows an archive to be updated by appending rather than rewriting, and it lets a ZIP be attached to the end of an executable to make a self-extracting archive. The cost is that a truncated download loses the index and the whole archive becomes unreadable even though most of the data is intact.

Are DOCX and APK files really ZIP archives?

Yes. Office documents, Java JAR files, Android APKs, EPUB books and Firefox extensions are all ZIP archives with a specified internal layout. Rename a .docx to .zip and you can open it and read the XML and images inside — which is a genuinely useful recovery technique.

What is a zip bomb?

An archive crafted so that a small file expands to an enormous one, historically by nesting archives many layers deep. A famous example is 42 kilobytes that expands to 4.5 petabytes. Modern implementations achieve similar ratios in a single layer by overlapping compressed streams, which defeats naive recursion limits.

P

Written by Paras

We build free, browser-based file tools and write the reference material we wish existed when we were looking things up. Spotted an error? Tell us and we will fix it.