EmptyOutputNode
EmptyOutputNode – ComfyUI Node
- any
What it is
EmptyOutputNode is a node that does nothing, on purpose, and that's the entire feature. It accepts one input and produces no outputs - but critically, ComfyUI's info_schema flags it as an output node, meaning the execution engine treats it as a terminal point of the graph that must run, not a dead-end branch it's free to skip.
That distinction matters a lot more than it sounds like once you're working with loop patterns. ComfyUI's execution engine only runs the parts of a graph that lead to something marked as an output - a SaveImage, a PreviewImage, anything flagged is_output_node: true. If you're batch-processing images inside a for-each style loop and you genuinely don't want to save or preview anything on a given branch (you're writing to disk yourself, or the useful work already happened as a side effect), a plain dangling wire won't force that branch to execute at all. Point it at EmptyOutputNode instead, and ComfyUI runs it every time because it's a recognized output, even though nothing visibly comes out the other side.
A community quote from a broader thread on ComfyUI's execution model puts the underlying problem plainly: loops and conditionals in ComfyUI are still fundamentally a workaround grafted onto a graph that wasn't originally built for them. Nodes like this one are part of how the community papers over that gap.
How it works
There's no processing logic to speak of. The node exists to be a valid, recognized termination point for a branch of the graph - a stub whose only job is satisfying the execution engine's "this leads to an output" rule. The README's own note on it is direct: pairs well with a for-loop, wired after the loop closes, when you have nothing left to actually output.
Inputs and outputs
One input, any (type *, required) - whatever you want to force execution of. No outputs at all - that's the point, not an oversight.
Installing it
Comes with comfyui-easyapi-nodes. Through ComfyUI Manager: search "comfyui-easyapi-nodes", install, restart ComfyUI. Manual install:
cd ComfyUI/custom_nodes
git clone https://github.com/lldacing/comfyui-easyapi-nodes.git
cd comfyui-easyapi-nodes
pip install -r requirements.txt
Nothing this node needs beyond the base pack, but run the requirements install regardless so the rest of the pack (which does have real dependencies) loads cleanly. git pull in the same folder to upgrade.
Common issues
"My loop branch just isn't executing at all, even though nothing's obviously wrong with it." This is the exact symptom EmptyOutputNode fixes. If a branch of your graph doesn't terminate in something ComfyUI recognizes as an output, the engine may not bother running it. Cap the branch with this node and it will.
"Can I use PreviewImage instead, just to force execution?" You can, but it'll pointlessly render a preview thumbnail for every iteration of a loop you're running purely for side effects, which is wasted work and clutter in the UI's history. EmptyOutputNode gets you the same forced-execution behavior with none of that overhead - no thumbnail, no history entry to speak of.
"I don't understand why I'd want a node that outputs nothing." It only makes sense in the context of loops and batch pipelines where you're processing images for their side effects (saving to a directory via this pack's SaveImagesWithoutOutput, for instance) rather than for a value that flows further down the graph. Outside that context, you probably don't need it - this is a specialist tool for a specific structural problem, not a general-purpose node.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| any | * | — |
Outputs (0)
No outputs