Nodes/ComfyUI Image Saver/Image Saver Simple
ComfyUI Node Runs on cloud

Image Saver Simple

The file-saving half, fed by a separate metadata node

By alexopus·Created 3 years ago·Updated 23 days ago· 190
Image Saver Simple
  • images
  • metadata
  • hashes
  • a1111_params
filename%time_%basemodelname_%seed
path
extension
lossless_webptrue
quality_jpeg_or_webp100
optimize_pngfalse
embed_workflowtrue
save_workflow_as_jsonfalse
counter0
time_format%Y-%m-%d-%H%M%S
show_previewtrue

Same job as the big Image Saver node - write your images with Civitai-compatible metadata - but split in two. Image Saver Simple only handles the file part: name, path, format, quality. The metadata (prompt, sampler, seed, hashes) comes in through a single metadata input, produced by the separate Image Saver Metadata node. If you've ever stared at the full Image Saver with its twenty-something widgets and wished the "how do I save the file" bit were untangled from the "what do I record about the run" bit, this is that.

It's the cleaner half of a two-node pattern, and it's the one a lot of people end up preferring once their graphs get busy.

How it works

Think of it as unpacking a package. Image Saver Metadata gathers all the generation details and emits a METADATA object; Image Saver Simple receives that object and writes it into the image alongside the actual file. Because the metadata is prepared elsewhere, this node stays small - you point it at a folder, pick a format, and go. Everything about what gets recorded lives upstream, which means you can build the metadata once and route it to several savers, or tweak the file settings without touching the generation info.

Like the rest of the pack it writes an A1111-style parameter string for Civitai's auto-detection, and for PNG it also embeds the full ComfyUI workflow so the image stays re-openable.

The inputs and outputs that matter

  • images - the batch to save.
  • filename - placeholder-aware (%basemodelname, %seed, %time, %counter, etc.); default %time_%basemodelname_%seed.
  • path - output subfolder, also placeholder-aware.
  • extension - png, jpeg, jpg, webp. PNG embeds the workflow; the others carry A1111 params only.
  • metadata (optional) - the METADATA object from Image Saver Metadata. Leave it disconnected and you get a plain save with no generation info, which defeats the point - wire it up.
  • embed_workflow / save_workflow_as_json - keep the graph inside the PNG, and optionally drop a sidecar .json.
  • quality_jpeg_or_webp / lossless_webp / optimize_png - the usual size-vs-quality knobs.

Outputs are hashes and a1111_params strings, same as the other savers.

Installing it

ComfyUI Manager: search ComfyUI Image Saver, install, restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/alexopus/ComfyUI-Image-Saver
cd ComfyUI-Image-Saver
pip install -r requirements.txt

Restart and hard-refresh. Small requirements.txt, no models to download.

Where people get tripped up

The main gotcha is treating this as a standalone saver. On its own it just writes a file with no generation metadata - the whole reason to use this pack. It's only half the tool; pair it with Image Saver Metadata feeding the metadata input, or use the single all-in-one Image Saver node instead. Pick one pattern per branch and don't half-wire it.

Second: JPG and WEBP don't carry the ComfyUI workflow, only the A1111 params. If you want to drag the image back into ComfyUI later, save PNG (with embed_workflow on) or tick save_workflow_as_json for a sidecar. And if Civitai isn't linking your model or LoRAs after upload, that's an upstream problem - fix it in the Metadata node, since this node only writes what it's handed.

CategoryImageSaver

Inputs (13)

NameTypeDefaultDescription
imagesIMAGEimage(s) to save
filenameSTRING%time_%basemodelname_%seedfilename (available variables: %date, %time, %time_format<format>, %model, %width, %height, %seed, %counter, %counter<padding>, %sampler_name, %steps, %cfg, %scheduler_name, %basemodelname, %denoise, %clip_skip)
pathSTRINGpath to save the images (under Comfy's save directory)
extensionCOMBOfile extension/type to save image as
lossless_webpBOOLEANtrueif True, saved WEBP files will be lossless
quality_jpeg_or_webpINT1001–100quality setting of JPEG/WEBP
optimize_pngBOOLEANfalseif True, saved PNG files will be optimized (can reduce file size but is slower)
embed_workflowBOOLEANtrueif True, embeds the workflow in the saved image files. Stable for PNG, experimental for WEBP. JPEG experimental and only if metadata size is below 65535 bytes
save_workflow_as_jsonBOOLEANfalseif True, also saves the workflow as a separate JSON file
metadataoptMETADATAmetadata to embed in the image
counteroptINT00–18446744073709550000counter
time_formatoptSTRING%Y-%m-%d-%H%M%Stimestamp format
show_previewoptBOOLEANtrueif True, displays saved images in the UI preview

Outputs (2)

NameTypeDescription
hashesSTRINGComma-separated list of the hashes to chain with other Image Saver additional_hashes
a1111_paramsSTRINGWritten parameters to the image metadata