ZIP - ZIP64 in Local and Central Headers
Both the local file headers and the central directory carry a ZIP64 extended information extra field (0x0001), with the 32-bit size fields set to 0xFFFFFFFF as the spec requires. The payload is a few hundred bytes: ZIP64 is present because the writer could not seek, not because the data is large, which is precisely the case size-based heuristics miss.
- README.txt
- records.csv
Specifications
- Seed
- 20260807
- Zip64 Extra Field
- local + central
- Zip64 End Of Central Directory
- true
- Zip64 Locator
- true
- Members
- 2
- Version Needed To Extract
- 45
- Uncompressed Bytes
- 448
- Why
- small payload, wide fields - ZIP64 is a writer decision, not a size threshold
Testing contract
Expected to pass- Scenario
- Open the archive with a reader that honours the ZIP64 end-of-central-directory record and the 0x0001 extra field, and extract both members.
- Expected result
- Both members extract with matching CRCs and the reported sizes come from the 8-byte ZIP64 fields (local + central), not from the 0xFFFFFFFF placeholders in the 32-bit slots.
What is a .zip file?
ZIP is a widely supported archive format that bundles multiple files and directories into one container, typically with per-file DEFLATE compression and a central directory index. It supports random access to individual entries without decompressing the whole archive. It underlies many document formats such as DOCX and EPUB.
How to use this file
Use an example ZIP to test archive extraction, central-directory parsing, per-entry decompression, and protection against path-traversal (zip-slip) during unpacking.
How to use this file for testing
“ZIP - ZIP64 in Local and Central Headers” is a deterministic Novus Examples fixture for Conversion testing, Error handling. The same content exported across many formats and linked as a group, so you can convert one and diff against the expected twin.
Documented properties for this file: seed 20260807. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Archive fixtures are documented down to their member list (shown on this page) and are deliberately safe — no zip bombs, executables, or hidden payloads. Test extractors against nested, unicode, empty, and encrypted variants.
Code examples
unzip -l both.zip # list members
unzip both.zip -d out/ # extractRelated files
- arAR - Empty Archive (magic only)The smallest valid archive in this catalog: the 8-byte ar magic and nothing after it. ar has no trailer record, so end-of-file is the only end marker, and this is what an empty static library or an empty .deb control archive looks like on disk.

- cpioCPIO - Empty Archive (trailer only)An empty cpio archive is a single TRAILER!!! header record - a full 110-byte newc header with every numeric field zero - plus its alignment padding. Readers that look for member data before checking the name find none and must still report a valid, empty archive.

- tarTAR - Empty ArchiveAn empty tar is not a zero-byte file - it is exactly two 512-byte blocks of zeros, the end-of-archive marker with nothing in front of it. Writers that emit nothing at all produce a file most readers reject, which is the bug this 1024-byte file exists to distinguish.

- tarTAR - FIFO and Device Node RecordsA FIFO, a character device and a block device, each a header with no data blocks and with the device numbers in the devmajor/devminor fields. Unprivileged extraction cannot create the two device nodes, so the correct behaviour is to skip them with a warning rather than to abort the whole archive or to create empty regular files in their place.

- tarTAR - GNU Long Name RecordA 125-character path whose long component contains no slash at all, so the USTAR prefix field cannot store it. This archive uses a preceding 'L' (GNUTYPE_LONGNAME) record whose payload is the full path. Its group siblings encode the same class of path with the other two mechanisms.

- tarTAR - Large UID/GID (GNU base-256)The uid and gid fields hold 7 octal digits, so they top out at 2097151. This member is owned by uid 3000000, which needs GNU base-256 encoding: the field's high bit is set and the remaining bytes are a big-endian integer. Its group sibling encodes the same ownership the other way, so a reader can be checked against both without a second variable.

Generated by generation/archives_p7.py. Free for any use, no attribution required — license.