Save Image Format Quality Properties-SG
Save in five formats, with quality knobs and the recipe on the label
- images
Save Image is the node everyone ends the workflow on, and it's also where a lot of people quietly hit its limits. You want a JPEG for uploading somewhere, a WebP for a web post, a TIFF for a print pipeline - and the stock Save Image only does PNG at one compression level, then hides everything it knows. This node is Save Image with a full format and quality panel, plus the property readout this pack is known for. It's the flagship node of ComfyUI-Image_Properties_SG, and the one with the most settings to fumble.
You reach for it when you need output format control without bolting on a separate save-and-convert subgraph. If you've ever worked around the stock node by saving PNG and batch-converting outside ComfyUI, this kills the detour. It also reads your prompt on the way out, so the label on the node shows model, seed, steps, CFG, sampler, and scheduler for that run - you get the recipe at the same spot you save the result.
How it works
Wire it where you'd put Save Image - typically off the VAE decode output. It takes the IMAGE tensor and, per your format choice, calls PIL's encoder for PNG, JPEG, WebP, BMP, or TIFF with the quality settings you've picked. The JavaScript half hides the irrelevant widgets: pick JPEG and the WebP knobs vanish; pick PNG and you get png_compress_level (0–9, default 9 for maximum compression).
The critical rule is spelled out in the tooltip and worth repeating: only PNG saves ComfyUI workflow and image metadata. The node embeds the full prompt and workflow JSON into PNG text chunks the same way the stock node does. JPEG, WebP, BMP, and TIFF get no metadata - the file is just pixels. If you need the workflow to survive, PNG is your only option here.
The settings that matter
format- the big one: PNG, JPEG, WEBP, BMP, or TIFF. The option names honestly describe the trade-off (PNG is "lossless, larger files", BMP is "uncompressed, largest").filename_prefix- the output prefix. Bonus: it supports%date%,%time%, and%timestamp%placeholders, plus formatted versions like%date:yyyy-MM-dd%, so you get date-stamped output without an extra filename node.Properties- what the label shows:None,Basic(resolution/aspect/size),Metadata(model/seed/steps/CFG/sampler/scheduler), orBoth.- Per-format quality:
jpeg_quality(default 95) andjpeg_subsampling(4:4:4 = no subsampling, best quality);webp_quality(90),webp_method(0–6),webp_lossless; andtiff_compression(lzw, deflate, jpeg, packbits).
There are no outputs - it's a terminal save node, exactly like the stock Save Image.
Installing and quirks
Install is the standard pack route: Manager → Custom Nodes Manager → search "ComfyUI-Image_Properties_SG" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ShammiG/ComfyUI-Image_Properties_SG
Restart and look for "Save Image Format Quality Properties-SG". No extra dependencies or models.
Two quirks worth knowing, both from reading the code. The "File Size" line it prints on the node always shows 0.00 MB - the code references a variable that doesn't exist in that scope and swallows the error, so don't trust that number. And BMP/TIFF files can't be previewed by the browser, so the node quietly saves a temporary PNG just for the thumbnail; your real file is still written to output with the extension you picked.
The standing pack gotcha applies here too: on ComfyUI 0.3.76+, Node 2.0 needs to be off or the display won't render. Saving still works - you just lose the label.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyUI | — |
| Properties | COMBO | Both | Display options: • None: Hides all information • Basic: Shows resolution, aspect ratio, and size • Metadata: Shows model, seed, steps, CFG, sampler, scheduler • Both: Shows all information |
| format | COMBO | PNG (lossless, larger files) | ❗WARNING❗ Only PNG saves comfyUI workflow and metadata |
| png_compress_levelopt | INT | 90–9 | — |
| jpeg_qualityopt | INT | 951–100 | — |
| jpeg_optimizeopt | BOOLEAN | true | — |
| jpeg_subsamplingopt | COMBO | Auto (based on quality) | 4 options: 4:4:4 (No subsampling, best quality), 4:2:2 (Moderate subsampling), 4:2:0 (Maximum subsampling, smaller files), Auto (based on quality) |
| webp_qualityopt | INT | 901–100 | — |
| webp_methodopt | INT | 40–6 | — |
| webp_losslessopt | BOOLEAN | false | — |
| tiff_compressionopt | COMBO | tiff_deflate (lossless, better compression) | 5 options: none (uncompressed, largest), lzw (lossless, good compression), tiff_deflate (lossless, better compression), jpeg (lossy, smallest), packbits (lossless, basic) |
| tiff_jpeg_qualityopt | INT | 901–100 | — |
Outputs (0)
No outputs