ComfyUI Node

Image Saver

Save Images With the Recipe Attached So Future You Can Reproduce Them

By kinorax·Created 5 months ago·Updated about a month ago· 2
Image Saver
  • image
  • image_info
  • image
  • image_info
  • file_path
  • directory_path
filename_suffiximage
output_dir
output_subdirnone
quality100
write_captionfalse
output_formatwebp
file_stem
caption

Default Save Image writes the pixels and stops there. IPT-ImageSaver from the Info-Prompt-Toolkit pack writes the pixels and embeds the whole generation recipe as A1111-style infotext metadata - prompt, model, LoRA stack, sampler, scheduler, steps, CFG, seed, the works - so the file you save can be loaded back later by Image Reader and turned into a fresh generation. It's the "make my outputs reusable" node, and in this pack it's the anchor of the whole workflow philosophy.

This matters more than it sounds. The community's "workflow included" culture exists because a file that carries its own recipe is worth more than a bare PNG. Civitai's whole model-card system runs on this kind of metadata. If you iterate on prompts and lose track of which LoRA stack produced the good one, this node is the difference between "I wish I knew" and pulling the answer straight out of the file.

How it works

You hand it an image (or a batch), and optionally an image_info bundle. It saves the image as WebP (default), PNG, or JPEG and serializes the image_info into the file's metadata. The filename logic is where it gets opinionated: leave file_stem unconnected and it uses automatic serial naming with your filename_suffix; connect file_stem and it saves as <file_stem>.<format>, overwriting anything with that name. output_subdir organizes things by time - options are none, year, year_month, iso_week, year_month_day, and daily_run (which creates a YYYYMMDD-NNNN folder per execution). Turn on write_caption and a same-name .txt caption file lands next to each image, which is the standard pairing for training datasets.

Inputs that matter

  • image - the image or batch to save.
  • image_info - the settings bundle. This is the whole point - no image_info, no metadata.
  • file_stem / filename_suffix - your naming strategy. Serial by default, explicit stems when connected.
  • output_format and quality - webp/png/jpeg, with quality 0–100 (default 100). Lower the quality for smaller files.
  • write_caption - write the .txt companion file.
  • caption - the caption text to write.

Outputs are a pass-through image, the saved image_info (as a list), and file_path so a later step knows exactly where the file went.

Installing it

Standard for this pack:

cd ComfyUI/custom_nodes
git clone https://github.com/kinorax/comfyui-info-prompt-toolkit.git
cd comfyui-info-prompt-toolkit
pip install -r requirements.txt

Then restart, or grab "ComfyUI-Info-Prompt-Toolkit" via ComfyUI Manager. ComfyUI 0.17.0+ required. No extra model downloads - this node is pure Python-plus-Pillow.

Common issues

The obvious trap: if you don't connect image_info, you get a nicely organized image with no recipe in it, and you've quietly lost the whole benefit. Wire it. Second, the metadata you save is only as complete as the image_info you built - if your workflow never carried the model name or LoRA references into it, the saved file won't have them either. The pack has Remove Image Info Main Fields and Remove Image Info Extra Keys for when you deliberately want less in the metadata; use them consciously, not by accident. And WebP at quality 100 is genuinely lossless-ish in practice for these purposes, so don't feel pushed to PNG unless you want max portability.

If you save a file and later load it in the Image Reader and the model check comes back "Missing," that's not this node's fault - the metadata is honest about what it references; your local folders just don't have that file anymore. That's the metadata doing its job.

CategoryInfo-Prompt-Toolkit/ImageInfo

Inputs (10)

NameTypeDefaultDescription
imageIMAGEImage or image batch to save
filename_suffixSTRINGimageSuffix part of output filename
output_dirSTRINGBase output directory under ComfyUI output
output_subdirCOMBOnoneOutput subdirectory format; daily_run creates YYYYMMDD-NNNN per execution
qualityINT1000–100WebP/JPEG quality
write_captionBOOLEANfalseWrite caption txt file
output_formatCOMBOwebpOutput image file format
image_infooptIPT-IMAGEINFOImage info or image-info list for each image
file_stemoptSTRINGOptional output filename stem list; when connected, save as <file_stem>.<format>
captionoptSTRINGCaption text or caption list for each image

Outputs (4)

NameTypeDescription
imageIMAGE
image_infoIPT-IMAGEINFO
file_pathSTRING
directory_path*