SaveImageWithOptions
SaveImageWithOptions stamps the checkpoint name on your files
- images
This is a save-image node with exactly one "option," and the name is the whole pitch: tick a checkbox and your output files come out named after the checkpoint that made them. So instead of ComfyUI_00001_.png piled into one folder, you get ComfyUIdreamshaperXL_00001_.png sitting next to ComfyUIdreamshaperXL_00002_.png. When you're A/B-testing four checkpoints on the same prompt and hunting through your output folder afterward, that's genuinely useful - you can tell at a glance which model produced which image, no metadata spelunking required.
Honestly, that's the entire feature. Don't read "WithOptions" and expect a settings drawer. There's no format selector, no quality slider, no resizing. It's a thin fork of ComfyUI's built-in SaveImage with one checkbox bolted on, and it was published to the Comfy registry by lordgasmic - the same author behind comfyui_wildcards - in mid-2024. It's been untouched since, which is fine, because the underlying save machinery it calls hasn't needed to change either.
How the checkbox works
When includeCkptName is on, the node digs through your workflow's prompt JSON and looks for any node whose class_type contains the string CheckpointLoader. The first match wins: it takes the ckpt_name input, strips the file extension, replaces backslashes with underscores, and appends it straight onto filename_prefix. Then it hands off to folder_paths.get_save_image_path - the exact same path-computation and counter logic the core node uses - so numbering, subfolders, and your existing files all behave like you're used to.
There's one wrinkle worth knowing: it matches CheckpointLoaderSimple and CheckpointLoader by string, so it won't find newer loading styles like UnetLoader, GGUF loaders, or Diffusers loaders. Those silently do nothing - no error, just no name appended. And it grabs the first checkpoint loader in the graph, not necessarily the one feeding your image. If a workflow has two, the name might surprise you.
The inputs
Three inputs, and you'll mostly ignore two of them:
images- the IMAGE batch from your VAE decode.filename_prefix- base name, defaultComfyUI. The checkpoint name gets glued onto this with no separator, so it'll readComfyUI<model>_00001_.png. If the missing underscore bothers you, type a trailing_yourself.includeCkptName- the checkbox.falsebehaves exactly like stock SaveImage.
It's an output node (OUTPUT_NODE = True) with no output sockets - the images go to disk and show up in the frontend's image grid like any save node. The PNG still gets full metadata embedded (the prompt and extra_pnginfo), so "workflow included" culture survives: drag the file back into ComfyUI and the graph reconstructs. That embedding only gets skipped if you launch ComfyUI with --disable-metadata.
Install
No dependencies beyond what ComfyUI already ships - the code imports numpy, PIL, and ComfyUI's own folder_paths, and there's no requirements.txt at all. Via ComfyUI Manager, search "SaveImageWithOptions"; or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/lordgasmic/comfyui_save_image_with_options
Restart ComfyUI, done. The node appears under the image category.
The catches
The honest assessment: this is a one-commit, unmaintained hobby node, and the ckpt-name feature is the kind of thing bigger packs (WAS, rgthree, and friends) fold into their saver nodes. But if you want just this one trick without installing a suite you don't need, it works fine and will keep working - the save pipeline it calls is core ComfyUI. Just don't expect updates, and don't trust it with workflows that use anything other than a CheckpointLoader-style loader. For everyone else, it's a 20-second install that makes checkpoint comparisons dramatically less annoying.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyUI | — |
| includeCkptName | BOOLEAN | false | — |
Outputs (0)
No outputs