ComfyUI Node

Save Images

The Saver That Embeds A1111 Metadata and Names Files for You

By r-vage·Created 10 months ago·Updated a day ago· 31
Save Images
  • images
  • pipe_opt
  • images
  • files
featuressave,embed_workflow,save_gen_data,output,filename
optimize_imagefalse
lossless_webpfalse
embed_workflowtrue
save_generation_datatrue
remove_promptsfalse
save_workflow_as_jsonfalse
add_loras_to_promptfalse
show_previewstrue
save_to_disktrue
use_qualityfalse
use_dpifalse
use_outputtrue
use_filenametrue
output_path%Y-%M-%D\%basemodel
filename_prefix%basemodel, %seed, %sampler_name, %scheduler, %steps_steps
filename_delimiter_
filename_number_padding4
filename_number_startfalse
extension
quality100
dpi300

What it is

Save Images is ComfyUI's stock Save Image on steroids: everything it does, plus quality control, DPI, smart filenames, and - the headline - A1111-compatible generation data written alongside the embedded workflow. It's the "swap in a real saver" node that the image-I/O lore keeps telling you to get if you post to CivitAI, because stock SaveImage writes the node graph but not the flat parameters block CivitAI's auto-detection keys on. This one writes both.

Think of it as the saver you graduate to. Stock Save Image is fine while you're learning; once you're running batches, keeping metadata, or uploading results, you want the version that names the file with the seed and sampler and writes the generation data a model page can read.

How it works

The combo-chip feature system drives it: save, embed_workflow, save_gen_data, output, filename are the chips you toggle to show or hide each capability. Under the hood it does the usual save mechanics - writes the image (PNG, WebP, JPEG, and more via the extension dropdown), embeds the ComfyUI workflow into the PNG text chunks so the image drags back onto a canvas as a graph, and additionally writes an A1111-style generation-data block with resource info. There's a pipe_opt input for feeding it metadata from an Eclipse pipe, which is how it knows your sampler, scheduler, steps, and CFG for the filenames and metadata.

The filename system is the part that pays for itself. Both output_path and filename_prefix support placeholders - %basemodel, %model, %seed, %sampler_name, %scheduler, %steps, %cfg, %denoise, %clip_skip, plus date/time tokens like %Y, %m, %d, %H, %S, %today, %time. The default prefix is "%basemodel, %seed, %sampler_name, %scheduler, %steps_steps" - so your files come out named like realvisxlV40, 1234567890, euler, normal, 30 instead of ComfyUI_00042. Add the number padding and you've got a findable archive without renaming anything by hand.

The inputs that matter

  • images (optional) - the batch to save. (Required in practice; the schema marks it optional to allow pipe-driven saving.)
  • pipe_opt (optional) - a pipe carrying generation metadata for placeholders and metadata.
  • features - the chip toggles (save, embed_workflow, save_gen_data, output, filename).
  • extension - file format.
  • use_quality / quality - custom quality, default 100.
  • use_dpi / dpi - DPI, default 300.
  • output_path / filename_prefix - the placeholder templates.
  • save_to_disk - off means preview-only mode (saves nothing).

Outputs: images (the saved batch, as a list) and files (the written file paths as strings).

When you'd use it

When you're done iterating and want results that survive contact with the real world: batches you'll actually organize, files you'll upload (the A1111 generation data makes CivitAI auto-link the model and LoRAs), or archives where the filename itself should tell you what's inside. And if you need the workflow saved as a separate JSON too, there's a save_workflow_as_json toggle for that.

Installing it

Part of ComfyUI_Eclipse:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt

then restart, or use Manager and search "Eclipse". As everywhere in this pack (formerly RvTools_v2), pre-v4.0.0 workflows may need the bundled migration tool.

Common issues

Two things get people. First, the placeholder soup: a placeholder that isn't filled (no pipe connected) resolves to its name without the %, so you get filenames with literal %model in them - connect pipe_opt or accept the fallback. Second, save_to_disk off doesn't save anything; it's a preview mode, and forgetting you left it off means a "saved" run that wrote no files. And remember the metadata you embed is the workflow - if you'd rather not broadcast your full prompt and settings, flip embed_workflow and save_gen_data off before you post anything.

Category🌒 Eclipse/ Image/Save & Preview

Inputs (24)

NameTypeDefaultDescription
featuresSTRINGsave,embed_workflow,save_gen_data,output,filenameComma-separated feature list. JS combo-chip replaces this widget.
optimize_imageBOOLEANfalseOptimize image output
lossless_webpBOOLEANfalseUse lossless compression for WebP
embed_workflowBOOLEANtrueEmbed workflow in image metadata
save_generation_dataBOOLEANtrueSave A1111-compatible generation data
remove_promptsBOOLEANfalseRemove prompts from metadata
save_workflow_as_jsonBOOLEANfalseSave workflow as separate JSON file
add_loras_to_promptBOOLEANfalseAdd LoRA tags to prompt metadata
show_previewsBOOLEANtrueShow image previews in UI
save_to_diskBOOLEANtrueSave images to disk (disable for preview-only mode)
use_qualityBOOLEANfalseEnable custom quality (default: 100)
use_dpiBOOLEANfalseEnable custom DPI (default: 300)
use_outputBOOLEANtrueEnable custom output path (default: ComfyUI output folder)
use_filenameBOOLEANtrueEnable custom filename (default: ComfyUI prefix)
output_pathSTRING%Y-%M-%D\%basemodelOutput path. Placeholders: %today, %date, %time, %Y, %m/%M, %d/%D, %H, %S, %basemodel, %model, %seed, %sampler_name, %scheduler, %steps, %cfg, %denoise, %clip_skip
filename_prefixSTRING%basemodel, %seed, %sampler_name, %scheduler, %steps_stepsFilename prefix. Placeholders: %today, %date, %time, %Y, %m/%M, %d/%D, %H, %S, %basemodel, %model, %seed, %sampler_name, %scheduler, %steps, %cfg, %denoise, %clip_skip
filename_delimiterSTRING_Filename delimiter
filename_number_paddingINT41–9Number of digits for counter padding
filename_number_startBOOLEANfalseNumber at start of filename
extensionCOMBOImage file format
qualityINT1001–100Image quality (1-100)
dpiINT3001–2400Image DPI
imagesoptIMAGE
pipe_optoptPIPE

Outputs (2)

NameTypeDescription
imagesIMAGE
filesSTRING