Nodes/comfyui-moonpack/Clean Save Image
ComfyUI Node

Clean Save Image

Save images with zero metadata — the privacy switch ComfyUI should have built in

By moonwhaler·Created about a year ago·Updated 11 days ago· 16
Clean Save Image
  • images
    filename_prefixComfyUI
    formatpng
    quality90
    lossless_webpfalse

    ComfyUI has a culture where the workflow is the artifact: the stock SaveImage node embeds the entire graph, prompt, and settings into the PNG metadata, and "workflow included" is a community norm. That's great when you're sharing a workflow with someone who'll drag the image back into ComfyUI and reconstruct it. It's a liability when you're selling a print, posting to a platform that strips or reads EXIF, or just don't want your entire pipeline shipped inside every file you upload.

    Clean Save Image is the fix: a drop-in replacement for SaveImage that writes the pixels and nothing else. No EXIF, no PNG tEXt/iTXt/zTXt chunks, no embedded workflow, no AI-generation comments. The source is blunt about it - the node receives the prompt and extra_pnginfo in its hidden inputs and deliberately discards them. "That is the point," says the code comment.

    The inputs that matter

    • images - the image batch to save, straight from a VAE decode or an upscale.
    • filename_prefix - prefix for the saved files, default ComfyUI, written to the standard ComfyUI output folder with the usual name_00001_.ext counter pattern.
    • format - png, jpeg, or webp. The stock node is PNG-only, so this alone is a reason to reach for it.
    • quality - 1–100, default 90, used for JPEG/WEBP (ignored for PNG).
    • lossless_webp - WEBP only: flips on lossless encoding.

    No outputs - it's an output node, it terminates the graph, which is exactly where a save belongs.

    The trade-off nobody tells you about

    Stripping metadata cuts both ways, and it's worth being deliberate. The reason people can drag a PNG back into ComfyUI and get a working graph is precisely the metadata this node deletes. Once you save with Clean Save Image, that file is a dead end - the image is yours, but the recipe is gone. So the sensible split is: use this for anything leaving your machine (sales, galleries, profiles), and keep a stock SaveImage in the same workflow when you want a self-documenting copy for your own archive. Two save nodes, two purposes, no conflict.

    Installing it

    It's part of MoonPack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/moonwhaler/comfyui-moonpack.git
    

    or ComfyUI Manager → search MoonPack → install, then restart. Under MoonPack/image. No models, no extra Python dependencies.

    Bottom line

    A privacy scrubber and a format chooser in one tiny node, and it composes with the rest of the pack's "output what you want, not what the framework wants" ethos. If you've ever shipped a PNG that leaked your whole workflow, you'll get why this exists the first time you use it.

    CategoryMoonPack/image

    Inputs (5)

    NameTypeDefaultDescription
    imagesIMAGEImage batch to save (shape [B, H, W, C]).
    filename_prefixSTRINGComfyUIPrefix for saved files; saved under the ComfyUI output folder.
    formatCOMBOpngOutput file format.
    qualityINT901–100JPEG/WEBP quality. Ignored for PNG.
    lossless_webpBOOLEANfalseWEBP only: lossless encoding.

    Outputs (0)

    No outputs