Nodes/APW_Nodes/Image Saver
ComfyUI Node

Image Saver

Save images with EXIF notes and workflow metadata baked in

By alessandroperilli·Created about a year ago·Updated 12 months ago· 4
Image Saver
  • images
  • FILENAME
  • FILE_PATH
filename%seed_%date_%time_final_apw
path%date/
seed0
image_format
lossless_webptrue
jpg_webp_quality100
date_format%Y-%m-%d
time_format%H%M%S
EXIF_UserComment
embed_workflowtrue

Every ComfyUI install has a "Save Image" node, and almost everyone eventually outgrows it. Image Saver is the grown-up version: it writes PNG, JPG/JPEG, or WebP; stuffs your own note into the EXIF UserComment tag; embeds the full workflow into PNG/WebP metadata; and names files with tokens like %seed% and %date%. It's part of APW_Nodes, the utility suite Alessandro Perilli extracted from his "AP Workflows for ComfyUI" - and it's the node in the pack most people keep after they've left everything else behind.

How it works

It's a proper output node (it shows up in the UI as a save/result). Under the hood it leans on ComfyUI's folder_paths.get_save_image_path, so images land in your standard ComfyUI/output/ directory, and then:

  • Formats: png, jpg, jpeg, webp. WebP can be lossless (the lossless_webp toggle, on by default) or lossy with jpg_webp_quality (1-100, default 100) - that quality slider covers JPG too.
  • EXIF UserComment: anything you type into EXIF_UserComment gets written into the UserComment EXIF tag (ID 0x9286), readable in any EXIF-aware viewer. Think seed, model, prompt, or a "final v3" note you don't want to lose in the filename.
  • Workflow embedding: embed_workflow (on by default) bakes the entire workflow JSON into the file, so you can drag the PNG back into ComfyUI and reconstruct everything. The author's own tooltip is worth quoting: it only works with PNG and WebP. Pick JPG and you're flying without the flight plan.
  • Filename tokens: %seed%, %date%, %time%, plus %counter% and %image_format% in the code. The path field takes the same tokens, so the default %date/ drops each day's output into its own subfolder.

The code is based on receyuki's SD Prompt Saver and willmiao's Save Image (LoraManager) - the README credits both - which is why it feels more "thought through" than a from-scratch saver.

Inputs that matter

  • filename - default %seed_%date_%time_final_apw.
  • path - default %date/, meaning output/2026-08-16/....
  • seed - feed your actual seed here or %seed% will just write 0s.
  • image_format, lossless_webp, jpg_webp_quality - the format knobs.
  • EXIF_UserComment - your free-text metadata, multiline.
  • embed_workflow - workflow JSON into PNG/WebP.

Wiring it up

The two outputs - FILENAME and FILE_PATH - are strings, and they're the reason to pick this over the stock saver. For a single image they come back as plain strings; for a batch, as a list. Wire FILE_PATH into a captioning node, an uploader, or a "copy path to clipboard" utility and you've got a tidy output-management chain.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/alessandroperilli/apw_nodes

Restart ComfyUI, or search "APW Nodes" in ComfyUI Manager. No extra pip packages and no models to download - it uses torch, Pillow, and piexif, all of which ComfyUI ships with. One heads-up: the repo is archived and the author now points to OCS_Nodes, but the code installs and runs unchanged.

Where people get burned

Three things, in order of frequency. The embed_workflow-doesn't-apply-to-JPG thing, because people assume it's universal. The seed input, because if you never wire it, %seed% in your filenames is silently 0. And the EXIF write failing silently on some formats - the node catches its own exceptions and just prints an error to the console, so if your UserComment never appears in a viewer, check the terminal before assuming the file was written.

CategoryAPW Nodes

Inputs (11)

NameTypeDefaultDescription
imagesIMAGE
filenameoptSTRING%seed_%date_%time_final_apw
pathoptSTRING%date/
seedoptINT00–18446744073709550000
image_formatoptCOMBO4 options: png, jpg, jpeg, webp
lossless_webpoptBOOLEANtrue
jpg_webp_qualityoptINT1001–100
date_formatoptSTRING%Y-%m-%d
time_formatoptSTRING%H%M%S
EXIF_UserCommentoptSTRING
embed_workflowoptBOOLEANtrueEmbeds the complete workflow data into the image metadata. Only works with PNG and WebP formats.

Outputs (2)

NameTypeDescription
FILENAMESTRING
FILE_PATHSTRING