Save Machine
Save images where you want, named how you want, with metadata
- images
- file_path
A save node that actually obeys you
ComfyUI's default Save Image node is fine until it isn't: every run lands in the same output folder with the same counter-style names, and finding "the good one" later means guessing. Save Machine is the pack's answer - a save node where the full path and filename are a template you control, with timestamp and prompt placeholders, automatic collision avoidance, and metadata embedded in the file. If you've ever run a batch job and then spent an hour matching outputs to prompts, this is the node that makes you wonder why the default doesn't do it.
How it works
The path_and_filename input is a template, not a fixed name. The %time default resolves to 2026-08-16-141530-style timestamps; %date resolves to the date alone. Beyond that, the node parses %...% placeholders against the workflow's prompt dictionary - so %KSampler/seed% in your filename becomes the seed that actually ran, and the same works for any node's input by title, type or ID. Missing folders in the path are created automatically, and if the filename already exists on disk it appends _0001, _0002, … rather than overwriting. Collision-safe by default is exactly what you want for unattended batch runs.
On the metadata side it's format-aware. PNGs get parameters, prompt and the workflow tEXt entries (via PngInfo); JPEG and WebP get an EXIF UserComment written with the piexif dependency. The result is that the file carries its own provenance - which is how ComfyUI's sharing culture works anyway, and why you can drag a saved PNG back in and have the workflow reconstruct.
The inputs that matter
- images - the IMAGE tensor to save.
- path_and_filename - the template. The tooltip is the author's own summary: "Supports %date, %time, and custom prompt %placeholders%". The default
%timeis a safe starting point. - extension -
png,jpeg(saved as .jpg), orwebp. PNG is the pick for metadata fidelity; jpeg/webp for smaller files.
It's an output node, so no IMAGE comes back out - but it does output a file_path STRING with the absolute path of the first saved file. That's a nice touch for piping into later steps or logging what you saved.
Gotchas
- Paths are relative to ComfyUI's
output/folder - the "absolute" path is absolute from there, not from your home directory. Backslashes are normalized to forward slashes, so Windows users are fine either way. - JPEG saves at quality 100 and WebP saves losslessly. Great for fidelity, wrong tool if you're archiving hundreds of jpgs for size.
- A placeholder that can't be resolved (say, a typo'd node name) is left in the filename literally rather than failing loudly -
%KSampler/sed%shows up in the name. Worth knowing when you spot a weird file. - It always writes files. There's no preview-only mode here - that's the pack's Preview Machine's job.
Install
Standard pack install - ComfyUI Manager search "SATA UtilityNode", or:
cd ComfyUI/custom_nodes
git clone https://github.com/SatadalAI/SATA_UtilityNode
then restart. The piexif and opencv-python dependencies come from the pack's requirements; Manager installs them for you.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| path_and_filename | STRING | %time | Supports %date, %time, and custom prompt %placeholders% |
| extension | COMBO | 3 options: png, jpeg, webp | |
| hide_preview | BOOLEAN | true | Hide image preview until mouse hovers over the node. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| file_path | STRING | — |