Make Image Saver Pipe
Bundle saver + metadata into one wire
- simple_saver_config
- metadata_config
- pipe
This is the glue node of the pipe system. It takes the two config halves - the file settings and the metadata settings - and fuses them into a single IMAGESAVER_PIPE connection you can drag around your graph as one wire instead of a dozen.
If your workflow is a straightforward text-to-image with one save at the end, you genuinely don't need this. The pack's own docs say so: for the common case, the standard all-in-one saver nodes are recommended and the features are identical. The pipe system earns its keep in big graphs - the ones orchestrating dozens of characters, multiple scenes, several samplers all feeding save nodes - where the wiring between KSamplers and metadata nodes turns into spaghetti. Bundle everything into a pipe and you carry it through the workflow on one clean line, branching where you need to.
How it works
There's a small but real payoff beyond tidiness: deferred execution. The expensive stuff - checkpoint hashing, CivitAI API lookups - doesn't fire when you build the pipe. It's held until the final save actually happens. That means you can pass the pipe through several stages, tweak metadata along the way with an Edit Image Saver Pipe, and nothing gets committed to disk (or to a network call) until the end. In a graph with a lot of branches, that saves you from redundant hashing on paths that never save.
The trade-off is that the pipe nodes and the standard nodes aren't interchangeable - they have different input/output shapes on purpose. Pick one style per branch and stick with it. The standard nodes trigger their side-effects (metadata lookups) the moment they run; the pipe nodes defer, which is the whole reason the pipe style exists.
The inputs and outputs
Dead simple, which is the point:
simple_saver_config(typeSIMPLE_SAVER_CONFIG) - fromMake Image Saver Simple Config. The filename, path and file-format half.metadata_config(typeMETADATA_CONFIG) - fromMake Image Saver Metadata Config. The prompt, model, sampler and hash half.
Both are required. The output is a single pipe (type IMAGESAVER_PIPE) that you route onward - to an Edit Image Saver Pipe to branch it, a Read Image Saver Pipe to inspect it, or straight to Image Saver (From Pipe) to write the file.
How to install it
ComfyUI Manager: search "ComfyUI Image Saver", install, restart.
Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/alexopus/ComfyUI-Image-Saver
cd ComfyUI-Image-Saver
pip install -r requirements.txt
then restart. No model downloads, no heavy dependencies - the pack is Python-only. It's a fork of the older comfy-image-saver, so grab the alexopus one.
Common issues & troubleshooting
"Do I even need this?" Honestly, if you're asking, probably not yet. Start with the standard saver. Reach for the pipe once your graph has multiple samplers and save nodes and the wires are fighting you. Using it in a simple workflow just adds two config nodes for no benefit.
Execution order surprises in huge graphs. The pack documents a real quirk: ComfyUI may run several KSamplers across the graph before it reaches the matching Image Saver (From Pipe) nodes, which builds up memory. The fix is wiring discipline - make sure the branch feeding an Image Saver (From Pipe) doesn't depend on resources from other active branches, so ComfyUI can finish each branch and free it before moving on. This node itself is cheap; the ordering issue is about the graph shape around it.
Mixing pipe and standard nodes. They don't share a type and don't convert. If you find yourself trying to feed a pipe into a standard saver or vice versa, that's the mismatch - keep each branch consistently one system.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| simple_saver_config | SIMPLE_SAVER_CONFIG | Required standalone Saver Configuration. | |
| metadata_config | METADATA_CONFIG | Required standalone Metadata Configuration. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | IMAGESAVER_PIPE | — |