Skip to content

Create a ZIP Archive from Files or a Folder

Add up to 1,000 files or a whole folder — 250 MB in total — and review every path and size before anything is packed. Choose the archive name, a DEFLATE level from Store to Maximum and whether folder paths are kept; two names that collide when flattening are renamed rather than dropped, and changing the files, the name, the level or the folder switch discards the previous archive so the download always matches what is on screen.

Runs locally in your browser
·
ZIP · DEFLATE

    How to create a ZIP from files or a folder

    Add files with the picker, drag them onto the zone, or choose a whole folder and let the page walk it: the list then shows every entry with its path and size, next to the number of source files and the combined size, before anything is packed. Selections accumulate — a second batch is added rather than replacing the first, the same file chosen twice counts once, and the list stays sorted by path so the same input gives the same archive.

    What comes out was measured file by file: four sample files (12 B to 4 KB, 5.65 KB together) produced a 4.44 KB ZIP at the default level; a folder with three levels of subfolders and two files both named dup.txt gave 10 entries with folder paths kept — folder rows included — and 5 entries with the paths flattened, the second dup.txt renamed to “dup (2).txt”; 1,000 one-byte files produced a 97 KB archive. Python’s zipfile reopened every archive in testing, all CRC-32 checks passed, and 中文 文件.txt survived the round trip with the ZIP UTF-8 flag set.

    1. Add what you want to pack: click the drop zone and pick several files at once, drag files onto it, or press “Choose folder” to take a whole directory tree — with folder paths kept, the folder name becomes the top-level folder of the archive.
    2. Read the manifest and the two counters (source files, total size). A selection over the 1,000-file or 250 MB limit is flagged in the status line straight away, before you press anything.
    3. Set the archive name (default voritools-archive), the compression level — 0 · Store, 3 · Fast, 6 · Balanced (the default) or 9 · Maximum — and whether folder paths are kept.
    4. Press Build ZIP. Packing runs in the tab: the progress bar follows it and the result panel reports the finished file name and size.
    5. Press Download ZIP to save it, or Clear to empty the list, the options and the panel. Changing the files, the name, the level or the folder-path switch discards the previous result, so the download button never offers an archive that no longer matches the settings.

    Compression levels, folder paths, duplicate names and the local limits

    Compression level and folder paths

    The level is handed to DEFLATE: 0 writes the file unchanged, so the archive grows only by its headers — a 1,680-byte file stayed 1,680 bytes inside a 1.75 KB archive — while 3, 6 and 9 trade processor time for size, and the same 1.64 KB Markdown file packed to 152 bytes at level 9. The level never changes file contents; it only changes how long the build takes and how large the download is.

    “Keep folder paths” decides the layout inside the archive. On, entries keep their relative path (tree/nested/deep/gamma.bin) and the directories that the selected files live in are written as folder entries; off, every file sits at the archive root under its file name. A ZIP cannot hold two entries at one path, so when flattening brings two equal file names together the later one is stored as “name (2).ext” instead of overwriting the first — in testing, dup.txt and dup (2).txt, from tree/a/dup.txt and tree/b/dup.txt.

    Limits, refused input and empty folders

    Both pickers enforce the same caps: up to 1,000 files and 250 MB (262,144,000 bytes) combined per archive. A 1,001-file folder and a single file of 262,144,001 bytes were refused with the limit message, exactly 1,000 files built normally, and a file of exactly 262,144,000 bytes passed the check.

    Empty folders do not reach the archive — the browser folder picker reports files, not directories, so only folders holding at least one selected file appear as entries. Password protection is not offered: the download is a plain ZIP. Very large selections also depend on the memory the tab has free, because the whole archive is assembled in the page.

    Privacy and the file you get

    The files are read with the File API, packed by JavaScript and saved as a blob download; nothing is uploaded, so the page keeps working offline after it has loaded and can be used on material you would not send to a server.

    The download is an ordinary ZIP that other tools open normally, and the archive name accepts letters from any script — конспект 2024.zip came out as typed. Path separators and characters a file system rejects are turned into dashes and trimmed, so an unusable name such as “..” falls back to voritools-archive.zip.

    Recent tools: