ZIP Compressor
Create ZIP archives from multiple files in the browser — pure JavaScript ZIP writer (STORE method, no compression). Add files via drag-drop, reorder, rename archive, view per-file sizes + compression ratio, download .zip. 100% client-side.
About ZIP Compressor
Create ZIP archives from multiple files in the browser — pure JavaScript ZIP writer (STORE method, no compression). Add files via drag-drop, reorder, rename archive, view per-file sizes + compression ratio, download .zip. 100% client-side. Everything runs locally in your browser — your data never leaves your device.
How to use
- Enter your input in the tool above.
- Adjust any options to your preference.
- Use the Copy or Download buttons to save the result.
- Everything happens locally — your data never leaves your browser.
FAQ
What does this tool do?
It creates a ZIP archive from multiple files entirely in your browser using a pure-JavaScript ZIP writer (no WASM, no native dependencies). You can drag-drop files in any order, reorder them, remove unwanted files, set a custom archive name, and download the resulting .zip file. The archive uses the STORE method (no compression), which means files are stored verbatim — perfect for already-compressed data like images, videos, and PDFs where re-compressing would just waste CPU without saving space.
Why STORE (no compression) instead of DEFLATE?
Two reasons: (1) The browser's native CompressionStream('deflate-raw') is available, but mixing STORE + DEFLATE entries with proper per-entry CRC32 calculation adds significant complexity; STORE-only keeps things deterministic and verifiable. (2) Most data users ZIP today (images, videos, audio, PDFs, Office documents) is already compressed — running DEFLATE on it would barely shrink the result, but would consume 5-10x more CPU. For text files where DEFLATE would actually help, consider GZIP Compressor instead.
Does it support password protection?
No — the STORE method we use does not include password protection. ZIP password protection (ZipCrypto or AES) requires either an external WASM library (~3MB) or significant custom crypto code. For sensitive files, encrypt them with a tool like Veracrypt or GPG first, then ZIP the encrypted output. The FAQ documents this as an intentionally-omitted feature to keep the tool's bundle size under 50KB gzipped.
Is there a file size limit?
There's no hard limit, but the practical limit is your browser's per-tab memory (~2-4 GB). Files are loaded into memory as Uint8Array, then assembled into the ZIP structure in memory. For very large files (>500MB), consider compressing them one at a time. ZIP64 (for archives >4GB or files >4GB) is documented but not currently enabled — the format is supported by the ZIP spec, but our writer uses 32-bit size fields for compatibility with older extractors.
What extra features does this tool have compared to others?
10 extras: (1) Drag-drop multiple files at once. (2) Reorder files (move up/down) before archiving. (3) Remove individual files from the list. (4) Stats — total uncompressed size, archive size, compression ratio. (5) Per-file size display with human-readable formatting. (6) Custom archive name (defaults to 'archive.zip'). (7) ZIP64 support note — documented behavior for files >4GB. (8) Preview file list before downloading. (9) History of recently created archives (localStorage — last 10). (10) Shareable URL with archive name preset.
Is my data uploaded anywhere?
No. All file reading, ZIP assembly, and download happen entirely in your browser using pure JavaScript. File contents never leave your device. Only archive summaries (name + file count + total size) are saved to local history for convenience.
Can I add folders?
Not directly — folder structure must be encoded in the file name (e.g. 'subfolder/file.txt'). Most modern ZIP extractors honor this convention. We preserve whatever filename you supply, including any path separators. For a flat archive, just upload files normally.
Related tools
7Z Extractor
Inspect and extract files from 7z archives. Detects the 7z signature (0x37 0x7A 0xBC 0xAF 0x27 0x1C), parses the SignatureHeader and StartHeader, lists files from the archive metadata, and extracts STORE-method files when possible. Honest about LZMA compression limitations. 100% client-side.
APK Extractor
Extract and inspect Android APK files in the browser — pure JavaScript APK (ZIP) parser. View AndroidManifest.xml (binary XML detection), list DEX files, resources, and assets, extract individual files, detect app info (package name, version) from manifest. 100% client-side.
ARJ Extractor
Inspect ARJ archives. Detects the ARJ magic (0x60 0xEA), parses header structures, lists file entries with sizes and CRCs, and extracts STORE-method files when possible. Honest about ARJ compression limitations. 100% client-side.