Save Images
The Saver That Embeds A1111 Metadata and Names Files for You
- images
- pipe_opt
- images
- files
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.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| features | STRING | save,embed_workflow,save_gen_data,output,filename | Comma-separated feature list. JS combo-chip replaces this widget. |
| optimize_image | BOOLEAN | false | Optimize image output |
| lossless_webp | BOOLEAN | false | Use lossless compression for WebP |
| embed_workflow | BOOLEAN | true | Embed workflow in image metadata |
| save_generation_data | BOOLEAN | true | Save A1111-compatible generation data |
| remove_prompts | BOOLEAN | false | Remove prompts from metadata |
| save_workflow_as_json | BOOLEAN | false | Save workflow as separate JSON file |
| add_loras_to_prompt | BOOLEAN | false | Add LoRA tags to prompt metadata |
| show_previews | BOOLEAN | true | Show image previews in UI |
| save_to_disk | BOOLEAN | true | Save images to disk (disable for preview-only mode) |
| use_quality | BOOLEAN | false | Enable custom quality (default: 100) |
| use_dpi | BOOLEAN | false | Enable custom DPI (default: 300) |
| use_output | BOOLEAN | true | Enable custom output path (default: ComfyUI output folder) |
| use_filename | BOOLEAN | true | Enable custom filename (default: ComfyUI prefix) |
| output_path | STRING | %Y-%M-%D\%basemodel | Output path. Placeholders: %today, %date, %time, %Y, %m/%M, %d/%D, %H, %S, %basemodel, %model, %seed, %sampler_name, %scheduler, %steps, %cfg, %denoise, %clip_skip |
| filename_prefix | STRING | %basemodel, %seed, %sampler_name, %scheduler, %steps_steps | Filename prefix. Placeholders: %today, %date, %time, %Y, %m/%M, %d/%D, %H, %S, %basemodel, %model, %seed, %sampler_name, %scheduler, %steps, %cfg, %denoise, %clip_skip |
| filename_delimiter | STRING | _ | Filename delimiter |
| filename_number_padding | INT | 41–9 | Number of digits for counter padding |
| filename_number_start | BOOLEAN | false | Number at start of filename |
| extension | COMBO | Image file format | |
| quality | INT | 1001–100 | Image quality (1-100) |
| dpi | INT | 3001–2400 | Image DPI |
| imagesopt | IMAGE | — | |
| pipe_optopt | PIPE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| files | STRING | — |