Save Image (mtb)
The SaveImage node that actually runs inside a loop
- images
- IMAGE
The pack's own description for this node is refreshingly direct: it behaves exactly like native SaveImage, except it isn't an output node. That's the whole pitch, and it solves a real, specific ComfyUI quirk.
The problem it fixes
ComfyUI decides what to execute based on the graph reachable from output nodes - nodes flagged is_output_node = true. Native SaveImage is one of those. Drop it inside a loop construct (a For Loop pack, an iterative-upscale chain, anything that re-enters a subgraph) and it often won't fire on every pass the way you'd expect, because a loop's execution model doesn't always treat an inner output node the way a top-level one behaves. Save Image (mtb) sidesteps that entirely by not being an output node - it saves as a side effect, and because it's a regular passthrough node, the loop keeps executing it on every iteration like any other step in the chain.
Inputs and outputs
Two inputs, matching the native node almost exactly:
images- the batch to save.filename_prefix- defaultComfyUI.
The difference shows up in the output: this node emits an IMAGE back out - the same images you fed in, unchanged. That passthrough is the trick. Because it has an output, the graph can keep going past it (into more processing, into another save, into the next loop iteration), which a terminal output node can't do.
Where you'd actually use it
Anywhere you're saving inside something that repeats: frame-by-frame video processing, an iterative refinement loop, a batch runner built from mtb's own playlist/batch machinery. If your workflow is a single linear pass with one save at the very end, you don't need this - native SaveImage is simpler and does the same job when there's no loop to fight.
Installing it
ComfyUI Manager: search "MTB Nodes," install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/melMass/comfy_mtb
then restart. If the node doesn't show up after that, go into the comfy_mtb folder and run pip install -r requirements.txt by hand - Manager's automatic dependency install doesn't always catch everything this pack needs, and that's the standard fix reported by users who hit missing-node errors after installing through Manager alone.
Common issues
The pack logs a line on every startup along the lines of "Some nodes (N) could not be loaded - this can be ignored, check /mtb for details." That's about the optional extras (face swap, DeepBump), not core I/O nodes, so don't let it worry you here. The one thing worth double-checking with this specific node: because it isn't an output node, ComfyUI won't force its execution if nothing downstream depends on its output - so if you use it as a dead-end save with nothing wired after it, make sure something (even a trivial passthrough) keeps it inside the execution graph, or it can get pruned like any node whose output nobody uses.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The images to save. | |
| filename_prefix | STRING | ComfyUI | The 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)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |