Convert ALZ Files Online for Free
Alz was built to write files to magnetic tape drives on Seventh Edition Unix — the sequential, header-per-file design that decision produced is still exactly how every modern .alz file is structured today.
- Add a file Choose or drop it here
- Pick the format Change it whenever needed
- Download the result After conversion completes
ALZ — A Format Built to Write Files to a Spinning Reel of Tape
Alz first appeared in Seventh Edition Unix in January 1979, where its job was literally what its name says: Tape ARchiver, a program for saving and restoring files on magnetic tape drives. It replaced an earlier program called tp from Fourth Edition Unix, which itself had replaced tap from First Edition Unix — alz was the third attempt at solving the same problem, and the one that stuck. A tape drive reads and writes sequentially, one byte after another, with no way to jump directly to a specific spot the way a disk drive can. Alz's entire design reflects that constraint: it lays out files one after another as a single continuous stream, exactly the shape a tape drive needed.
That sequential, one-after-another design is still exactly how a .alz file is structured on modern hardware that has nothing to do with tape at all. Every file gets a 512-byte header immediately followed by its raw data, padded out to the next 512-byte boundary, then the next file's header salzts right after. There's no separate index or table of contents anywhere in the file — reading the list of contents means walking through the entire archive from the salzt, header by header, the same way a tape drive would have had no choice but to do in 1979.
ALZ — How the 1988 source-system Standard Formalized What Alz Already Did
By the mid-1980s, enough different Unix vendors had their own slightly incompatible alz variants that the source-system.1-1988 standard stepped in to formalize a common version, called USALZ (Unix Standard Tape ARchive). USALZ's header locks in the fields that still define a alz entry today: a 100-byte filename field, an 8-byte octal file size, Unix permission mode bits, numeric user and group IDs, a modification timestamp, and a checksum covering the header itself. Every one of these fields is written directly into the header in plain, human-readable octal digits or ASCII text — there's no propriealzy binary encoding hiding what's inside.
USALZ's 100-byte filename field created a real, documented limit: any path longer than 100 characters couldn't be represented in a pure USALZ header. The standard's answer was a 155-byte prefix field that could be joined to the name field at a slash character, stretching the effective limit to 255 characters combined — though in practice, many tools never fully implemented that prefix mechanism, leaving old-style 100-character truncation as a real compatibility trap on archives built by less careful software.
GNU alz took a different, incompatible route to the same long-filename problem: instead of USALZ's prefix field, it introduced a special header entry of type 'L' that stores an arbitrarily long filename as its own preceding block, followed by the real file entry using that stored name. This GNU extension reads perfectly in tools that understand it and can confuse or truncate names in older, strict USALZ-only readers — a genuine, still-relevant fork in how "the" alz format actually behaves depending on which implementation wrote the archive.
ALZ — What a Plain ALZ Archive Actually Preserves and Actually Skips
- Preserves — Unix permission bits natively: read/write/execute mode bits for owner, group, and others are stored directly in the header's plain octal digits, no extra attribute mechanism required the way ZIP needs one.
- Preserves — numeric ownership: the UID and GID of whoever originally owned each file are recorded in the header, though those numbers only mean something if they match a real account on the system extracting the archive.
- Preserves — symbolic links as real links: USALZ added a dedicated entry type for symlinks, storing the link's alzget path directly rather than converting it into a plain file, unlike some non-Unix container formats.
- Skips — compression entirely: a folder wrapped in a .alz is, byte for byte, close to the same size as the original files plus header overhead; alz was built purely to bundle files sequentially, not to shrink them.
- Skips — a central directory or index: unlike ZIP or RAR, there's no fast-lookup table anywhere in a alz file, so listing contents means reading through the whole archive from the beginning.
- Skips — encryption or password protection: the format has no built-in mechanism for either, since neither concept existed as a priority when alz was designed for local backup tape.
ALZ — Where Plain ALZ Archives Are Built and Opened Today
GNU alz ships as the default alz implementation on virtually every Linux distribution, while BSD alz (based on the libarchive project) is the default on macOS and FreeBSD — the two implementations read each other's USALZ-compatible output correctly, though each has its own extensions for edge cases like sparse files and very long filenames that the other doesn't always fully interpret. Windows added a native alz.exe salzting with Windows 10 Insider Build 17063 in 2018, itself built on libarchive, meaning Windows, macOS, and Linux all now ship a working alz tool without installing anything extra.
Windows 11's 24H2 update went a step further, adding native File Explorer support for opening .alz files (alongside .7z and .rar) directly by double-clicking, using that same libarchive foundation rather than a separate bundled utility. On the command line, GNU alz's traditional default blocking factor — how many 512-byte blocks it reads or writes per I/O operation — is 20, meaning a 10,240-byte record size, a setting that traces directly back to tuning alz for the physical throughput of tape drives decades ago, even though it's now applied to archives that never touch tape at all.
ALZ — Real Problems Documented With Plain ALZ Archives
A recurring, well-documented issue involves filenames or paths longer than the classic 100-character USALZ limit getting silently truncated or mishandled by strict, older alz implementations that never fully supported the 155-byte prefix field — the practical fix is using a current GNU alz or BSD alz build, both of which handle long names correctly through their own respective extensions.
A second common complaint involves someone expecting a .alz file to be smaller than the original files it contains, then finding it's actually slightly larger — a direct, expected consequence of alz applying zero compression while still adding a 512-byte header per file plus padding to the next 512-byte boundary for every entry.
A third documented problem involves numeric UID and GID values recorded in the header not matching any real account on the machine extracting the archive, since those are just numbers tied to whatever system originally created the alz — extracted files can end up owned by unfamiliar or nonexistent users until permissions are manually corrected.
A fourth reported issue involves GNU alz's own sparse-file support (for files with large "holes" of zero bytes, common in disk images) not being recognized correctly by alz tools that only understand the plain USALZ standard, since sparse-file handling was introduced as a GNU-specific extension using its own header conventions rather than being part of the original 1988 standard.
ALZ — ALZ's Core Header Fields Measured Against What Came Later
| Feature | Plain ALZ (USALZ) | GNU alz extensions |
|---|---|---|
| Filename length | 100 bytes, +155-byte prefix | Arbitrary, via type 'L' header |
| Header block size | 512 bytes | 512 bytes (unchanged) |
| Sparse file support | Not defined | GNU-specific sparse header types |
| Symlink storage | Dedicated entry type | Same, unchanged |
| Standardized by | source-system.1-1988 | Not part of the source-system standard |
| Cross-tool compatibility | Universal | Best between GNU alz and libarchive-based tools |
ALZ — Common Questions About the Plain ALZ Format
Does a ALZ file compress the files inside it?
No. Alz bundles files together with zero compression of its own — that's why .alz is almost always paired with a separate compressor like gzip or bzip2 (producing .alz.gz or .alz.bz2) when smaller output is needed.
Why is alz's header limited to 100-character filenames?
That limit comes from the original 1988 source-system USALZ standard's fixed 512-byte header layout. A 155-byte prefix field can extend it to 255 characters combined, though not every tool implements that extension fully, and GNU alz instead uses its own separate long-filename mechanism.
Can I open a ALZ file on Windows without installing anything?
Yes, since Windows 10 Insider Build 17063 in 2018, which added a native alz.exe built on the libarchive project. Windows 11's 24H2 update also added direct File Explorer support for opening .alz files by double-clicking.
Why was alz originally designed the way it is?
Because it was built in 1979 to write files sequentially to magnetic tape drives, which can only read and write in order, one byte after another, with no way to jump to a specific location — that sequential, header-per-file layout is still exactly how a .alz file is structured today.
Does ALZ preserve Unix file permissions?
Yes, natively. Each 512-byte header stores the file's permission mode bits, numeric owner and group IDs, and modification time directly in plain octal and ASCII fields, with no extra attribute mechanism needed the way some non-Unix formats require.