Extended Save
PNG is fine, but webp/jpeg/avif that still carries your workflow is better
- images
Stock ComfyUI Save Image does exactly one thing well: PNG with the workflow embedded, drag it back in and the whole graph rebuilds. That embedded-metadata trick is practically ComfyUI culture - "workflow included" became a community norm precisely because a single image file carries everything needed to reproduce it. This node is what you want when PNG's file sizes start annoying you. It's the same save, but for jpeg, webp, avif and jxl - and it stuffs the prompt plus workflow JSON into the EXIF UserComment tag (0x9286) so drag-to-restore keeps working.
So: generate a nice batch, save as webp, post it, and anyone who drags your file back into ComfyUI gets the full pipeline. The image is smaller and the graph survives. That's the pitch, and it works.
How it works
The node subclasses ComfyUI's own SaveImage, so the PNG path is stock behavior with the normal compression level. For jpeg/webp/avif, the prompt and workflow JSON get written into the image's EXIF UserComment field. The pack also ships a frontend extension in web/ that reads that tag back (via exifr) when you drag a file into the browser, reconstructing the workflow exactly like a PNG would. The metadata format matches what the README documents: {"prompt": ..., "workflow": ..., ...extra fields}.
Two honest caveats from the source. JXL saves the image only - the author prints "JXL export doesn't have metadata/import support yet!", and the README says the same. And there's a dds option in the format list, but it's a bare imageio write with no compression or mipmap controls - if you actually want game-ready DDS, use the pack's other node, Save DDS for games.
The inputs that matter
- images - the IMAGE tensor from your VAE decode (or whatever's feeding it).
- filename_prefix - same as stock Save Image; files land in
ComfyUI/output/. - format -
png,jpeg,webp,ddsare always in the list.avifandjxlonly appear once the plugins import successfully (see below).
No outputs - it's an output node. Results show up in the side panel like any save node.
How to install it
Install the Extended Image Formats pack once; this node comes with it. Through ComfyUI Manager: search "Extended Image Formats" and install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kaanyalova/ComfyUI_ExtendedImageFormats
Then the optional formats need their Python deps:
source ./venv/bin/activate
pip install pillow-avif-plugin jxlpy
Restart ComfyUI. The pack's requirements.txt lists both packages, so a Manager install usually grabs them for you.
Where people get burned
- No avif or jxl in the dropdown? The format list is built at load time and only appends avif/jxl when
pillow-avif-pluginandjxlpyactually import. If you don't see them, the deps aren't installed - install and restart. - JXL files won't drag-restore. No metadata, by design. Don't expect workflow recovery from
.jxl. - Image hosts strip EXIF. Local jpeg/webp files restore fine, but the moment you upload one to a hosting service, the UserComment tag is gone and so is the workflow. Same problem every embedded-metadata scheme has.
- Headless runs can trip over the metadata path. The non-PNG branches assume
extra_pnginfowith a workflow key exists; save jpeg/webp/avif via the raw API withoutextra_pnginfoand it can throw. PNG stays safe.
A word of perspective: this space has bigger, busier competitors - Save Image Extended is the pack most people already have. This one's angle is avif/jxl support plus the DDS node in the same repo. If you're only ever saving PNG, the built-in Save Image is right there and this adds nothing. It earns its place when file size or format matters and you still want your workflow to travel with the image.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyUI | — |
| format | COMBO | 6 options: png, jpeg, webp, dds, avif, jxl |
Outputs (0)
No outputs