Open ZIP
Peek inside a zip without unpacking a thing
- zip
- names
- entry_names
- entry_count
- listing
- zip_path
Most of ComfyUI's archive handling happens in your file manager: unzip, load, delete. Open ZIP is the version that happens on the graph - it opens a zip and tells you what's inside - and it's the front door for the whole WAS archive family, because the things it hands out are exactly what the other archive nodes eat.
What makes it worth having is that it reports without unpacking. You get a listing on the node: a line per file, with its kind and size. Nothing is extracted, so a 2 GB dataset zip costs the same to inspect as a 200 KB one. You drop an archive, see at a glance what's in it, and decide from there.
The file menu
The file input is a dropdown that lists every .zip it can reach: ComfyUI's input, output and temp folders, plus anything you've added under paths.allow_read in your config - each entry tagged with where it sits ([input], [output], [temp]). It reaches three folders deep and picks up a dropped file within a few seconds. One warning the tooltip gives you: temp is emptied on restart, so don't leave the archive you care about there.
What it hands out
zip- the opened archive as aZIPvalue, for ZIP Add, ZIP Manage, Zip Extract, or Save ZIP.names- every readable entry name on one ARRAY wire (folders inside the archive included) for the text-list nodes to slice and search.entry_names- the same names, but one per run. Wire this onward and the downstream nodes execute once per entry in the archive. Empty archives are handled gracefully: the nodes reading this output stop with a message while the rest of the outputs keep working.entry_count- how many readable files it holds (folder entries don't count, and two entries under one name count once).listing- the report shown on the node, as text. Pipe it to Text to Console or Save Text File if you want a record of what an archive held.zip_path- the archive's full path, which is the input the Load Images from ZIP, Load Text Files from ZIP and Load Documents from ZIP nodes take. That's the pattern for "browse here, read there": pick the file once in Open ZIP, wirezip_pathover.
Safety, actually handled
Zips are the classic malware delivery format, and this node has opinions about that. An entry that would land outside its folder (path traversal), a symbolic link, a name holding a null byte, or one claiming to unpack past a quarter of a gigabyte - each is named and skipped, and the rest are still read. The refusal reasons show up in the listing so you know what got left out and why. A file that isn't a zip, or is genuinely damaged, stops the run and says which file it was. That refusal logic carries through to Zip Extract, so an archive that clears Open ZIP is one the whole family agrees to trust.
Install
In WAS Node Suite v3: ComfyUI Manager → search "WAS Node Suite v3", or cd ComfyUI/custom_nodes && git clone https://github.com/WASasquatch/was-node-suite-comfyui, then restart. Requires ComfyUI 0.14.0+ and Python 3.10+; archive nodes need no feature flag and no extra packages. For a beginner this node is mostly "look before you unzip" - and a tidy way to route one archive into the rest of the WAS archive pipeline.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| file | COMBO | Which archive to open. The menu lists every .zip in ComfyUI's input, output and temp folders and in any folder added under paths.allow_read, each tagged with where it sits. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| zip | ZIP | The opened archive: its entry list, each entry's size and where the file sits, for a node that reads files out of one. |
| names | ARRAY | Every readable entry name on one wire, folders inside the archive included, for Text List Slice, Text List Get, Text List Length and Text List to Strings. Empty for an archive holding nothing readable, which is a list the list nodes handle. Refused entries are absent. |
| entry_names | STRING | The same names, one per run, so the nodes after this one run once for each entry in the archive. An archive holding nothing readable stops the nodes reading this output with a message, and leaves the other four outputs working. |
| entry_count | INT | How many readable files the archive holds. Folder entries are not counted, and two entries under one name count once, which is how many files a reader can get out. |
| listing | STRING | The report shown on the node, as text: what the archive holds, a line per file with its kind and size, and a line per refused entry saying why it was refused. Wire it into Text to Console or Save Text File to keep a record of what an archive held. |
| zip_path | STRING | The full path of the archive that was opened, which is what the Load Images from ZIP, Load Text Files from ZIP and Load Documents from ZIP nodes take. Wire this into their zip_path input to pick an archive from the menu here and read it there. |