[Movie Tools] Save images
Save image batches into subfolders, with the workflow still in the file
- images
Core ComfyUI's SaveImage dumps everything into one flat output/ folder, and if you've ever run a 200-frame batch you know exactly what that looks like: ComfyUI_00042_.png, ComfyUI_00043_.png, all the way down, mixed in with every other run you've ever made. SaveImagesWithSubfolder from the ComfyUI-Movie-Tools pack is the fix for that specific annoyance - it's SaveImage plus an actual folder structure, aimed squarely at frame-sequence work where "I need this run's 150 frames somewhere I can find them" is a daily question.
It's a drop-in replacement in the same sense: an output node that takes your IMAGE tensor, writes PNGs to output/, and embeds the prompt and workflow into the files just like core SaveImage. The three inputs that matter:
- images - the tensor to save.
- filename_prefix - behaves exactly like core SaveImage's, including the
%date:yyyy-MM-dd%and%NodeName.widget%tokens, so you can bake the resolution or the seed into filenames. - subfolder_name - the new bit. Anything you type here becomes a folder under
ComfyUI/output/, and your files land inside it instead of the flat root.
How it works: it runs ComfyUI's own save-image path machinery under the hood, so the auto-incrementing counter behaves the same as stock - re-run a workflow and it picks up where the counter left off rather than overwriting. The genuinely nice touch is that PNG writes happen on a small thread pool (up to 8 cores). Because Pillow releases the GIL during PNG compression, that parallelization actually speeds up batch saves - a real win on long frame sequences, where single-threaded saving is often the slowest part of a run. There's a neat extra: if you put %subfolder_name% inside the prefix, the code swaps it for the folder name, so the subfolder shows up in every filename for free.
The metadata angle is the one worth knowing. Like default SaveImage, this node writes the prompt and workflow chunks into each PNG (unless you launched with --disable-metadata), so the drag-the-image-back-onto-the-canvas round trip works - and so re-encoding the image anywhere strips it, the usual rules from our image-I/O notes. Same CivitAI caveat as stock SaveImage too: it embeds the graph but not an A1111-style parameters string, so model auto-linking on upload isn't going to happen.
Where you'd reach for it: any pipeline that ends in "save a batch." Pair it with the pack's loader (LoadImagesFromSubdirsBatch) or its ffmpeg encoder (LoadImagesAndCreateVideo) and you have a tidy frame-sequence loop - generate frames into a folder, then read them back or encode them.
Install is trivial, and there are no models or heavy dependencies to chase:
cd ComfyUI/custom_nodes
git clone https://github.com/Big-Idea-Technology/ComfyUI-Movie-Tools
then restart ComfyUI - or just use Manager and search "Movie Tools"; the pack is registered in the Comfy Registry. It needs nothing beyond what ComfyUI already ships (torch, numpy, Pillow); the ffmpeg requirement only applies to the pack's video encoder, not this node. One honest caveat: this is a small, one-author, work-in-progress pack - a handful of commits and basically zero community footprint as of mid-2026, so don't expect a support forum. It works, but it's maintained at hobby speed.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The images to save. | |
| filename_prefix | STRING | ComfyUI | The prefix for the file to save. This may include formatting information such as %date:yyyy-MM-dd% or %Empty Latent Image.width% to include values from nodes. |
| subfolder_name | STRING | Create subfolder for this images. | |
| compress_levelopt | INT | 40–9 | PNG compression level. Lower is faster but produces larger files, higher is slower but smaller. 0-1 is recommended for large batches. |
Outputs (0)
No outputs