ComfyUI Node

Save Anything (SG11)

Save Anything (SG11) really means 'save an image, and only the first one'

By SongGuo11·Created 2 years ago·Updated about a year ago· 0
Save Anything (SG11)
  • image
    filenameoutput
    save_diroutputs
    formatPNG

    Let's be honest about the name up front: "Save Anything" saves images. That's it. No video, no JSON, no API calls, no keys. What it does do - and what the built-in SaveImage doesn't - is let you pick the exact filename, folder, and one of five formats, then write a file there. That's a small niche, but it's a real one, and it's the whole pack: a single node from a one-repo author who publishes in Chinese and lists a WeChat contact in the README. No community reputation to lean on, no drama. Just a utility.

    What it actually does

    The node (SG11_SaveAnything) takes an IMAGE tensor, clamps it to 0–1, scales to 0–255, converts to uint8, and hands it to Pillow to write. The save settings are actually thought-out: JPEG at quality 95 with 4:4:4 subsampling (no chroma smear), WebP at quality 90, PNG at compress level 6 with optimize on. For a node whose README is four bullet points, the quality choices are the most surprising thing in it - JPEG output genuinely looks good.

    Here's the first trap, straight from the source: if len(image.shape) == 4: image = image[0]. Feed it a batch of four frames and it saves the first one and silently drops the other three. No batch loop, no error. If you're saving animated output or a batch of variations, this node is wrong for the job.

    The second trap is that it never auto-increments. The filename is whatever string you type, every run overwrites whatever was there before. Core SaveImage appends a counter and embeds your workflow JSON into the PNG so "workflow included" culture survives the round-trip. This node writes a bare pixel file with no metadata. If you're sharing results, drag-and-drop reconstruction won't work on them.

    The inputs that matter

    All four inputs are required, and they're all plain widgets on the node - no wiring beyond the image itself:

    • image - the only real input. Wire anything that outputs an IMAGE: a VAE decode, an upscaler, a Load Image.
    • filename - string, default output. Whatever you type, including no padding or counter.
    • save_dir - string, default outputs. This is relative to ComfyUI's working directory, so outputs lands in ComfyUI/outputs. Note it does not respect ComfyUI's output-directory setting or its auto-subfolder logic - it's a raw os.path.join. Start ComfyUI from a different folder and your files go somewhere else. Absolute paths work fine.
    • format - PNG, JPEG, WEBP, BMP, TIFF. The niche. Core ComfyUI gives you PNG and JPEG; WebP (much smaller files for photos), BMP and TIFF need a pack like this.

    Installing it

    ComfyUI Manager: search "Save Anything (SG11)" or "ComfyUI-SaveAnything-SG11" and install. Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11
    

    Then restart ComfyUI. The requirements.txt lists only torch, Pillow, and numpy - every one of those is already in any working ComfyUI environment, so there's no dependency install to babysit. That's about as painless as custom nodes get.

    When to reach for it

    Honestly, for most people the answer is "never": SaveImage is better for everyday saving because it auto-names, dedupes, and preserves your workflow. But this node earns its spot in two scenarios. First, when you need a file at a known, fixed path - a game pipeline, an API that watches a folder, a script that re-reads the same filename every run. Deterministic output paths are a feature there, not a bug. Second, when WebP or TIFF is the deliverable and you don't want to install a bigger suite like WAS for one format. That's the whole pitch: five formats, one predictable file, no surprises except the batch thing. Don't feed it a batch, and it won't bite.

    Categorysave

    Inputs (4)

    NameTypeDefaultDescription
    filenameSTRINGoutput
    imageIMAGE
    save_dirSTRINGoutputs
    formatCOMBOPNG5 options: PNG, JPEG, WEBP, BMP, TIFF

    Outputs (0)

    No outputs