ComfyUI Node Runs on cloud

Image Save

The save node with formats, paths, and filename tokens

By WASasquatch·Created 3 years ago·Updated a day ago· 1,839
Image Save
  • images
  • profile
  • images
  • files
root
filename_prefixComfyUI
filename_delimiter_
filename_number_padding4
filename_number_startfalse
extension
dpi300
quality100
optimize_imagetrue
lossless_webpfalse
overwrite_modefalse
show_historyfalse
show_history_by_prefixtrue
embed_workflowtrue
show_previewstrue
bit_depth

The built-in Save Image node is deliberately bare: it drops PNGs into ComfyUI/output/ with a numbered prefix and that's it. Image Save from WAS is the upgrade you install once you start caring where files go and what they're called. Custom output path, choice of format, quality control, and - the real reason people switch - filename tokens.

If you generate at volume, the tokens alone justify it. You can bake the date, time, hostname, or CUDA device straight into the filename, so a folder of outputs is self-documenting instead of ComfyUI_00042_.png.

How it works

You feed it images and it writes them to disk in the format and location you specify. The README spells out the useful bits:

  • Format support - PNG, JPEG, and WebP among them. WebP needs your system to actually have WebP support (a package install on Linux, a precompiled library on Windows), which is the one format that isn't guaranteed to just work.
  • Path support - point it at any output directory, not just the default output/ folder. (Note the flip side: the node's show_history preview only displays images saved inside ComfyUI/output/ - files written elsewhere save fine but won't show in the history strip.)
  • Text tokens - this is the killer feature. In the filename you can use tokens like [time], [time(%Y-%m-%d__%I-%M%p)], [hostname], [cuda_device], and [cuda_name]. So a prefix of [hostname]_[time(%Y-%m-%d)] writes files already stamped with machine and date. You can even register your own tokens with the pack's Text Add Tokens node.

Inputs and outputs that matter

The images input is obvious. The three settings you'll actually touch: the output path (where), the filename prefix (what it's called, tokens allowed), and the format/extension (PNG for lossless and workflow embedding, JPEG/WebP when you want smaller files). There's a quality control for the lossy formats and a show_history toggle that displays previously-saved WAS images in the node.

This is a terminal node - it saves to disk and doesn't pass an image onward to chain further. It's the end of the line.

How to install it

ComfyUI Manager: search was-node-suite-comfyui, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui

then run the pack's requirements.txt in your ComfyUI venv and restart. For WebP output specifically you'll also want WebP available to your OS - apt-get install webp on Linux, or the precompiled libwebp on Windows.

Common issues & troubleshooting

WebP saves fail or the option does nothing. WebP isn't bundled - your system needs it. Install libwebp (Linux: apt-get install webp; Windows: grab the precompiled binary from the WebP project). Until then, stick to PNG or JPEG.

Files saved to a custom path don't show in the node's history. By design - show_history only previews images written under ComfyUI/output/. The files are on disk where you told them to go; they just don't appear in the strip. And ComfyUI resizes history thumbnails to a uniform size, so a mixed-resolution history looks squished.

PNG vs JPEG for sharing workflows. ComfyUI embeds the workflow graph into PNG metadata, and that's how the "drag the image back in to rebuild the graph" culture works. Save JPEG or WebP and you usually lose that embedded workflow. If you want the image and the reproducible graph, keep it PNG.

"Import Failed" for the whole suite after a ComfyUI update. Classic WAS Node Suite: it downgrades some packages for older modules, so a ComfyUI upgrade can break the import at startup. Re-install the pack's requirements against the activated venv (or run install.bat). The suite's been maintenance-only since late 2023, so this reinstall is a known, recurring step.

CategoryWAS Suite/IO

Inputs (18)

NameTypeDefaultDescription
imagesIMAGEThe images to write. Every image in the batch gets its own file, each with the next number in the sequence.
rootCOMBOWhich folder the files land in: ComfyUI's own 'output' or 'temp', or any folder added under paths.allow_write in config.yaml, listed by its own name. filename_prefix names the part below it.
filename_prefixSTRINGComfyUIThe name part of each file, before the number. Tokens are expanded here too, so '[time(%H-%M)]' or a custom token can go in the name rather than the folder. Cleared, the file is just the delimiter and the number.
filename_delimiterSTRING_What sits between the name and the number: 'ComfyUI_00001.png' with the default, 'ComfyUI-00001.png' with '-'.
filename_number_paddingINT41–9How many digits the number is padded to with leading zeros. 4 gives '_0001', 1 gives '_1'. The count keeps rising past the padding, so too few digits sorts the files oddly rather than failing.
filename_number_startBOOLEANfalseWhere the number goes. Off = last, 'ComfyUI_0001.png'; on = first, '0001_ComfyUI.png', which sorts the files by number rather than by name.
extensionCOMBOThe file format. `png` is lossless, carries the workflow and takes 16 bits a channel; `exr` holds unclipped linear light at 16 or 32 bit; `jpg` and `jpeg` are small and lossy; `webp` is small and can be either; `tiff` and `bmp` are large and lossless; `gif` is limited to 256 colours.
dpiINT3001–2400Print resolution recorded in the file, in dots per inch. It does not resize anything, it only tells a printer or a layout program how large to place the image. Written for png, jpg and jpeg only.
qualityINT1001–100How much detail is kept when the format throws some away: 100 is the best the format offers, 80 is a common balance, 1 is heavily degraded. Applies to jpg, jpeg, webp and tiff; png, bmp and gif ignore it.
optimize_imageBOOLEANtrueWhether to spend extra time packing the file smaller without changing how it looks. Every format except webp and bmp uses it.
lossless_webpBOOLEANfalseFor the webp format only. `on` keeps every pixel exactly and makes a much larger file; `off` compresses it at the quality set above.
overwrite_modeBOOLEANfalse`off` numbers every file, so nothing is ever replaced. `on` drops the number and writes the prefix alone, overwriting the same file on every run, which suits a fixed path an external tool watches.
show_historyBOOLEANfalse`off` previews the images this run wrote; `on` previews the files this node has written before instead, newest first, up to the limit in the pack's config.
show_history_by_prefixBOOLEANtrueNarrows the history preview to files in the same folder whose names start with the same prefix. Only has an effect when show_history is on.
embed_workflowBOOLEANtrueWhether to store the workflow inside the file, so dragging the image back into ComfyUI rebuilds the graph. Only png and webp can carry it, and nothing is stored if ComfyUI was started with --disable-metadata.
show_previewsBOOLEANtrueWhether the saved images appear on the node. `off` still writes the files and keeps the node small, which suits a long batch.
bit_depthCOMBOHow finely each channel is stored. `8-bit` is 256 levels and is what every format takes; `16-bit` is 65536 and needs `png`, which keeps a gradient banding-free through further grading; `32-bit float` needs `exr` and stores light above 1.0 rather than clipping it. A depth the chosen format cannot hold fails the prompt.
profileoptWAS_COLOUR_PROFILEA colour profile from Image Load. The images are converted from sRGB into that space and the file is written carrying it, so a photograph goes out tagged the way it came in. Left unconnected, the file is written in sRGB and carries no profile.

Outputs (2)

NameTypeDescription
imagesIMAGEThe same images that came in, unchanged, so the node can sit in the middle of a chain instead of ending it.
filesSTRINGFull path of every file written this run, in batch order. A file that could not be written is left out of the list.