Nodes/comfyui-darkil-nodes/Save Image (no metadata) [darkilNodes]
ComfyUI Node

Save Image (no metadata) [darkilNodes]

A stock save node that stops leaking your prompt into every PNG

By pytraveler·Created 8 months ago·Updated a day ago· 9
Save Image (no metadata) [darkilNodes]
  • images
  • images
filename_prefixComfyUI
formatpng
quality92

By default, every PNG that comes out of ComfyUI's stock Save Image carries the entire workflow that made it - node graph, prompt, seed, every model and LoRA by name and hash - stuffed into tEXt/iTXt chunks inside the file. Drag that PNG back onto the canvas and the whole pipeline rebuilds. That's genuinely great for sharing workflows... and it's also why a PNG you post publicly can hand strangers your exact prompt, your private style notes, an NSFW pipeline you'd rather not broadcast, or a wildcard file path that leaks your username.

Save Image (no metadata) is the dial for turning that off per workflow, instead of per server. Where Erase Metadata (same pack) fights the architecture and loses in front of a save node, this node simply refuses to participate: the stock save node asks the engine for the hidden PROMPT and EXTRA_PNGINFO inputs and writes them into the file; this one never asks for them, so there's nothing to write even by accident.

What you get, and what you give up

Inputs are exactly what you'd expect from the stock node:

  • images - the tensor(s) to save.
  • filename_prefix - same template language as stock: %date:yyyy-MM-dd%, subfolders via portraits/run_a, and the usual auto-incrementing counter (ComfyUI_00001_.png). The %batch_num% token works too.
  • format - png, jpeg, or webp. PNG and WEBP keep an alpha channel; JPEG drops it.
  • quality (1–100, default 92) - JPEG and WEBP only, ignored for PNG. The nice trick: 100 makes WEBP lossless, which keeps alpha exactly and often still beats PNG on file size.

The encoded bytes then pass through the same chunk-stripper Erase Metadata uses, catching anything the encoder added on its own - when that happens it's logged to the console, because it means the encoder did something the node didn't expect. JPEG keeps its APP0/JFIF segment (that's pixel-density info, not origin metadata, and dropping it can shift colors on some viewers).

The one real difference from stock you should care about: no round-trip. A file saved this way will not drag back onto your canvas to reconstruct the workflow. That's the point, but it means this is a final-output node, not your archive save. Keep a regular Save Image in the loop if you want a master copy you can re-load, and let this one produce the shareable/clean files. It also outputs the same images it received, so it can sit in the middle of a chain rather than only at the end - unusual for an output node and handy for branching a clean save off while the main line continues.

When you'd reach for it

Privacy is the obvious case: you're posting to a platform that re-serves your original bytes (some hosts recompress and strip chunks themselves - see the KB's image-io-metadata essay - but a host that doesn't will happily serve your workflow to anyone who opens the file). Same if you're sharing a machine, or you generated with a checkpoint or wildcard path you don't want embedded. It also pairs with the pack's Load Image (Temp) and Load Image (Encrypted Vault) if you're running a deliberately low-footprint image pipeline.

The alternative is ComfyUI's built-in --disable-metadata launch flag, which switches the workflow off for every save node at once and costs nothing. But that's global - you can't run one clean workflow and one metadata-carrying workflow side by side without this kind of per-node option.

Installing and using it

It ships in the comfyui-darkil-nodes pack by pytraveler. No dependencies, no model downloads - requirements.txt is empty. Install once for all its nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/pytraveler/comfyui-darkil-nodes.git

Restart ComfyUI (or via Manager, search comfyui-darkil-nodes). The node appears as Save Image (no metadata) [darkilNodes] under darkilNodes/images - it's an output node, so ComfyUI runs it last and nothing downstream caches it. You're taking the whole pack to get it, which is a lot of nodes for one save, but the implementation here is genuinely careful - clean encoding code, honest console reporting, real documentation. For the "I don't want my prompt in the file" crowd this is one of the better single-purpose tools around.

CategorydarkilNodes/images

Inputs (4)

NameTypeDefaultDescription
imagesIMAGEThe images to save.
filename_prefixSTRINGComfyUIThe prefix for the file to save. Takes the same formatting as the stock node, for example %date:yyyy-MM-dd% or a subfolder/name.
formatCOMBOpngPNG and WEBP keep an alpha channel; JPEG drops it.
qualityINT921–100JPEG and WEBP only, ignored for PNG. 100 makes WEBP lossless.

Outputs (1)

NameTypeDescription
imagesIMAGE