Nodes/ComfyUI_SaveImageWithoutMetadata/Save Image Without Metadata
ComfyUI Node

Save Image Without Metadata

Strip the Workflow Blob Out of Every PNG You Save

By duldduld·Created 9 months ago·Updated 8 months ago· 8
Save Image Without Metadata
  • images
  • images
filename_prefixComfyUI

Every ComfyUI PNG you save carries your whole workflow inside it. Open one in a text editor and you'll find the full graph as JSON - model names, prompts, seeds, the lot - sitting in the file's metadata. That's a feature when you want to drag an image back into ComfyUI and rebuild the pipeline, which is why "workflow included" became the community norm in the first place. It's a liability when you're shipping images to a client, posting to a competition, or just trying to keep your exact recipe private. This node is the blunt instrument for that problem: it saves exactly like the built-in Save Image node, but writes the file clean.

The name is accurate, which is rarer than it should be. It calls no API, needs no key, and downloads no models.

How it works

Under the hood it's barely a node at all. The whole pack is one class that subclasses ComfyUI's native SaveImage, then calls the parent with prompt=None and extra_pnginfo=None. Those two values are what the core node normally stuffs into the PNG as text chunks - the full prompt graph and the UI workflow JSON. Null them out and you get a plain image file. No dependencies, no requirements.txt, no weights; the pack's pyproject.toml is empty of deps. That's the whole trick, and it's exactly the right size for it.

The one genuinely clever bit is the filename_prefix field. It supports variables like %date:yyyy-MM-dd% and %KSampler.seed%, so you can bake the date or another node's current value into the filename. Date tokens are the usual yyyy/MM/dd/hh/mm/ss; %NodeTitle.widget% pulls any widget value off any node, matched by title or numeric id. Note where the expansion happens: it runs in your browser, in the node's JavaScript, the moment you hit Queue. Click Queue from the ComfyUI UI and it just works. Drive the API directly from a script and the literal %date:yyyy-MM-dd% lands in your filename instead - keep that in mind if you run headless.

The inputs that matter

There are only two, and one of them is the whole point:

  • images - the IMAGE tensor you'd feed the normal save node. The thing you saved.
  • filename_prefix - default "ComfyUI". Set it to something meaningful, throw a %date% in there so reruns don't overwrite each other, and forget about it.

It's flagged as an output node, so nothing downstream has to consume it. There's a passthrough images output if you ever want to wire the tensor onward anyway.

Installing

Easiest path: ComfyUI Manager → search "Save Image Without Metadata" → install → restart. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/duldduld/ComfyUI_SaveImageWithoutMetadata
# restart ComfyUI

No models, no pip step, no dependency conflicts to babysit. It's a single commit from a personal GitHub account, so don't expect a changelog culture - expect a tiny tool that does one thing and does it by inheriting it.

Gotchas worth knowing

The big one is implied above: once a file leaves this node, the workflow is gone with it. Drag it back into ComfyUI and nothing reconstructs. If you think you'll ever want the graph back, keep a copy of the workflow JSON saved separately. And it only strips ComfyUI's own chunks - if an upstream node already planted other metadata in the file, that survives.

You're also not locked into this node for the job. --disable-metadata on ComfyUI's startup line kills all metadata globally, but you can't toggle it per save; "Save Image Plus" has a checkbox for the same thing. This one's appeal is that it's a drop-in swap that only affects the files routed through it - and it's the answer people actually point to in Manager when this exact question comes up.

Why you'd reach for it

File size first: workflow blobs are kilobytes of JSON per PNG, and they add up fast when you're saving batches. Privacy second: there are good reasons not to ship a file that tells anyone who inspects it your exact model, seed, and prompt. If you share generation images at all, decide consciously which files carry your recipe. This is the node for the ones that shouldn't.

Categoryimage

Inputs (2)

NameTypeDefaultDescription
imagesIMAGEThe images to save.
filename_prefixSTRINGComfyUIThe prefix for the file to save. This may include formatting information such as %date:yyyy-MM-dd% or %Empty Latent Image.width% to include values from nodes.

Outputs (1)

NameTypeDescription
imagesIMAGE