EBU String Wait For Image
A string that refuses to move until an image exists
- wait_for_image
- output_string
EBU String Wait For Image looks like it does nothing - string in, identical string out. Which is exactly the point. It's a passthrough gate: the value travels through unchanged, but the node only completes if a specific image actually materializes. In ComfyUI's execution model, that's a scheduling tool dressed up as a string node.
It's part of the EBU Workflow pack (burnsbert/ComfyUI-EBU-Workflow), which ships a trio of these gates - for strings, images, and models. All three share one job: force an ordering guarantee in the graph.
Why "wait for an image" is even a thing
ComfyUI executes a node once all of its inputs are ready - the graph's dependency edges are the scheduler. Normally you get ordering for free. But when you have two independent branches that must not race - say, a text generation branch and an image branch that both feed a final save - you sometimes need an explicit edge to make the ordering visible and enforceable. This node creates that edge: by feeding wait_for_image in, you've told ComfyUI this node (and everything downstream of its string output) must run after that image exists.
There's also a guard-rail flavor. If wait_for_image comes up empty - a Load Image node with no file selected, or an upstream node that returned a zero-length batch - the node raises ValueError("Image not loaded. Cannot proceed.") and the run fails loudly. That's deliberate: better a clear crash than silently proceeding with a missing dependency.
Inputs and output
- input_string (STRING, multiline) - the text that passes through.
- wait_for_image (IMAGE) - the dependency. This is the input that does the actual work; it's not used as data.
- output_string (STRING) - the passthrough value, byte-for-byte.
Where it fits (and where it doesn't)
Honest take: for a single graph execution, ComfyUI's normal wiring already orders things, and this node is mostly redundant. Where it earns its keep:
- Multi-stage workflows where you want a prompt or filename held until an image is confirmed - e.g. a save node whose filename is derived from a string, but which must not fire before the image pass completes.
- Explicit dependencies that survive refactoring. When you collapse groups and reroute branches, an explicit wait edge survives edits that implicit ordering doesn't.
- Fail-fast setups where a missing image should stop the whole run instead of silently producing a half-baked output.
If you're a beginner, you likely don't need it - and you shouldn't reach for it to fix a bug without understanding which branch you're actually ordering.
Installing
Standard EBU Workflow install - no dependencies beyond Python's standard library, no model files. ComfyUI Manager (search "EBU Workflow"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/burnsbert/ComfyUI-EBU-Workflow
then restart ComfyUI.
Gotchas
- The error it raises is a hard abort of the run. If
wait_for_imagecan legitimately be empty in your flow, don't use this node as the gate - use a conditional switch instead. - It passes through whatever string it's given, including an empty one. The gate checks the image, not your text.
- It only checks that the image batch is non-empty; a 1-pixel image passes the gate as readily as a 4K one.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| input_string | STRING | — | |
| wait_for_image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_string | STRING | — |