String Concat Multi 🔤
Ten fixed string slots instead of a fiddly dynamic input widget
- string_list
This is the one node in the pack with an actual author-written description, so it's worth quoting directly: "Gộp tối đa 10 STRING input lại, sau đó tách mỗi dòng thành 1 phần tử trong danh sách (LIST). Hoàn toàn dùng Python, không lỗi giao diện." - combine up to 10 string inputs, then split the combined result by line into a list. Entirely done in Python, no interface bugs.
That closing line reads like a jab at a real, common failure mode elsewhere in the ecosystem: nodes with dynamic input sockets (ones that add or remove input slots as you wire things up) that glitch out visually when you connect and disconnect them. This node sidesteps that entirely by just giving you 10 fixed optional slots up front - nothing clever, nothing dynamic, and per the author, nothing that breaks.
The inputs and outputs that matter
Ten optional STRING inputs - string_1 through string_10. Leave any unused ones disconnected.
One output: string_list - STRING, but genuinely list-typed (is_list: true). The combined text from your connected inputs gets split line by line into separate list entries, so anything downstream consuming this output runs once per line, the same fan-out behavior you'd get from SplitMP3V2's file_paths output.
Where it fits
Use it whenever you've got several separately-produced bits of text - a handful of captions, prompt fragments, filenames, tags - and you want them collapsed into one iterable list rather than daisy-chaining several two-input concat nodes together. Ten slots covers most practical cases without needing a dynamic-input node at all.
Installing it
ComfyUI Manager: search comfyui-huyl2-nodes, install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/huyl3-cpu/comfyui-sortlist
restart. Not covered in the pack's README, but there's nothing to it dependency-wise - plain string handling, no external libraries beyond what ComfyUI already ships with.
Common issues & troubleshooting
If your resulting list has more entries than you expect - including blank ones - check whether any of your string_N inputs are connected-but-empty. The node's description doesn't spell out how it handles that case, and it's plausible a connected empty string still contributes a blank line to the split result. Test with a couple of slots first if your downstream count looks off, and prefer leaving a slot fully disconnected over wiring in an empty string if you want to be sure it's skipped.
Also worth remembering: because string_list is genuinely list-typed, feeding it into a node that expects a single string (rather than one built to iterate a list) will process it once per line automatically, not once for the whole combined block. If you actually wanted one big joined string instead of a list, this isn't the right node - its whole point, per the author, is the split into a LIST.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| string_1opt | STRING | — | |
| string_2opt | STRING | — | |
| string_3opt | STRING | — | |
| string_4opt | STRING | — | |
| string_5opt | STRING | — | |
| string_6opt | STRING | — | |
| string_7opt | STRING | — | |
| string_8opt | STRING | — | |
| string_9opt | STRING | — | |
| string_10opt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| string_list | STRING | — |