ISO to ZIP
Nothing you choose here leaves your browser, and nothing is downloaded to make it work — not a library, not a compression module, nothing. Your browser already knows how to deflate and gzip; this page writes the ZIP around it.
The files off the disc, in something you can actually open.
An ISO is not compressed and not packed: it is a picture of a CD, and the files are sitting inside it exactly as they were burned. Windows will mount one and let you copy things out; it will not give you an archive, and it will not do it at all on a phone. The awkward part is that the files have TWO sets of names. The 1988 standard allows eight characters, a dot and three more, in capitals, with a version number stamped on the end — so any disc written this century carries a second directory using Microsoft's Joliet extension, holding the real names. A reader that walks the first one hands you LONGFILE.TXT;1 where the file is called a rather long file name.txt. This reads the Joliet tree when there is one and tells you which it used.
How this works, and why nothing is fetched
An ISO is not compressed, so there is nothing to decompress: the files sit inside the image and this reads the directory that says where. What it writes afterwards uses your browser's own deflate through CompressionStream. Nothing is fetched and nothing is installed.
The files on a disc have two sets of names
ISO 9660 was published in 1988 and allows eight
characters, a dot, three more, capitals only, with a version number
stamped on the end. README.TXT;1 is a file called
README.TXT; the ;1 is the version, and it is
always 1.
Which is why any disc written this century carries a second directory tree, in a supplementary volume descriptor, using Microsoft's Joliet extension — the same files, at the same blocks, under their real names. Read from a disc built for this page, the two trees say:
| The 1988 tree | LONGFILE.TXT;1 |
|---|---|
| The Joliet tree | a rather long file name.txt |
Same file, same bytes, same place on the disc. A converter that walks the first tree — the one the standard describes first, and the one every example starts with — gives you back every file, complete and correct, under the wrong name. This one uses Joliet when the disc has it, and says on screen which tree it read.
And every number is stored twice
A disc had to be readable by a drive of either endianness without byte-swapping, so ISO 9660 writes each value little-endian and then big-endian, one after the other. Read the wrong half and a block number of 33 comes out as 553,648,128 — a perfectly plausible number pointing at nothing.
What it will not do
It will not open a RAR, and nothing ever writes one: RARLAB's licence forbids using their code to re-create the RAR algorithm, which is proprietary. That is a legal restriction and not a difficulty. It will not open a 7z, bzip2 or xz either — those need compressors your browser does not have, so supporting them would mean shipping one, which is the thing this page avoids. It says which of these it is looking at rather than just refusing.
It does not open password-protected archives, and it says so per file rather than failing silently. It reads plain ZIPs rather than ZIP64, so an archive over 4 GB or with more than 65,535 files is refused with that reason given.
Where to go next
- ISO to TAR — uncompressed, and it keeps Unix permissions
- ISO to TAR.GZ — the Unix default, small and lossless
- JSON to CSV — for the data inside them