Toggle String Join (10)
A prompt console for unattended batches — Toggle String Join (10)
- text
Ten toggle-able string inputs, each with an ON/OFF button, all feeding one clean prompt. Toggle String Join (10) is the biggest member of the snapshot-toggle family in ruminar's String Join Tools pack, and it's the one that turns prompt composition into clicking. You can have ten branches - wildcard picks, LoRA triggers, style blocks, per-slot subjects - and assemble the final prompt by flipping buttons instead of untangling wires.
The design target is stated right in the pack: this variant suits unattended batch generation after the desired prompt composition is chosen. The node displays QUEUE SNAPSHOT in its status area, which is the honest description of how it behaves. The toggle state and mode are captured when the prompt is queued. Later UI changes do not affect jobs already waiting in the queue. That's not a bug report waiting to happen - it's the feature. You compose, you queue, you leave, and job 100 gets exactly the same composition as job 1.
The controls
mode-multiplelets every input toggle independently;singlerestricts you to zero or one enabled input, so it doubles as a big either/or selector across up to ten options.- Per-row buttons (and left-click on the row) - the whole point of the node. On state is visible at a glance.
separator- default", ", with\n,\r\n,\t,\\escapes.
The enabled_mask and selected_index widgets that back the buttons are managed for you by the node's UI. You're not expected to hand-edit a ten-bit mask, and you won't need to.
What comes out
One text STRING. Only inputs that are connected, toggled on, and non-empty survive; empty strings and unconnected sockets are dropped, and the separator appears only between survivors. Everything off or empty returns "". Wire the output into your CLIP Text Encode and you have a ten-way prompt console in front of you - handy when you're testing which of several style blocks actually moves the needle, because toggling one on and re-running is a single click.
Installing it
ComfyUI Manager: search "String Join Tools" or "ComfyUI-StringJoinTools". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ruminar/ComfyUI-StringJoinTools
Restart and refresh. No Python dependencies, no model downloads. Under String Join Tools.
The honest tradeoff
Ten buttons is power, and power needs a mental model. Remember this is the snapshot family: your toggles freeze at queue time, deliberately. If you're running long batches and want the freedom to change the composition between queued jobs - flip a toggle, and the next job picks it up - this is the wrong node. The pack's Runtime Toggle String Join (10) reads the latest live state at execution time and exists precisely for that. The two are siblings that share sockets and differ in philosophy: lock it down before you queue, or keep it live while the queue drains. Pick the one that matches how much you trust your composition.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| separator | STRING | , | Supports \n, \r\n, \t, and \\. |
| mode | COMBO | multiple | 2 options: multiple, single |
| enabled_mask | INT | 10230–1023 | — |
| selected_index | INT | 0-1–9 | — |
| text_1opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_2opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_3opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_4opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_5opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_6opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_7opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_8opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_9opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. | |
| text_10opt | STRING | Optional queued STRING input. Whether it is included is captured when the prompt is queued. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |