π Array From Text
Your separator is literal, not a regex
- Array
- Count
Why this node exists at all
Somebody has to make the list. Every other node in the π Array group takes a newline-separated string and assumes it already exists - and the pack deliberately never gave it an editable widget (the Array socket is force_input, socket-only). Array From Text is the entry point: the one node in the group where you can type.
That's genuinely useful in a way that's easy to undersell. Prompt banks, tag lists, a column of filenames copied out of a spreadsheet, a caption file you want to sample from - all of that arrives as text with some separator in it, and this turns it into the "a\nb\nc" form everything downstream expects.
Small bit of context: the pack added all nine of these array nodes in v1.1.0 on 2026-10-06, so as of this writing there is essentially no tutorial traffic around them. You're not missing a well-hidden guide; there isn't one.
The mechanism, exactly
It calls Python's str.split(separator) - a literal substring split, not a regex, not a glob. So:
,splits on commas.,(comma space) splits on comma-space only, and leaves items that have a newline before them unsplit.|is a pipe, not "or".\ntyped into the box is a backslash and an n, not a newline. There's no escape processing here.- Leave the separator blank and the node falls back to a comma, because the source does
separator = separator or ",". That fallback is friendly, but it means "I left it empty to split on whitespace" doesn't work the way you hoped.
After splitting it trims each item (strip leading/trailing whitespace) and, if Remove Empty is on, drops empties. Those two defaults are why a CSV-ish blob pasted out of a spreadsheet usually just works: the ragged trailing spaces and the blank line at the end don't end up as ghost entries.
Inputs and outputs that matter
Text is the only field you must think about - multiline, paste-friendly.
Separator is the one people get wrong. Default is ,. For a copied column of names, one item per line, use \nβ¦ which you can't type. In that case, leave the text as-is and note that "one item per line" is already an array in this pack's format - you don't need this node at all, you need a producer that emits newlines. If you're copying from a file, π Read File hands you the raw text and the array nodes will split it on newlines downstream.
Outputs are Array (the newline-joined string) and Count (how many items you ended up with). Wire Array into π Array Filter to clean it, π Array Slice to batch it, or π Array Get Item to pull one. Wire Count into anything that needs to know how many - though note most of the array nodes emit their own Count, so you don't need to carry it far.
Practical pattern for prompt banks: text node with 20 prompts β Array From Text β Array Get Item with an index β your CLIP Text Encode. Change the index instead of retyping the prompt. It's a poor man's wildcard system, and it fills the same niche as A1111's old {this|that} bracket syntax that most people who arrived after 2024 never learned.
Install
Manager: Extensions β Node Pack β search "Honda Nodes" β Install β restart. Or manually:
cd ComfyUI/custom_nodes
git clone --depth 1 https://github.com/Avaray/honda-nodes.git
cd honda-nodes && python install.py # ComfyUI's python; portable Windows: ..\..\..\python_embeded\python.exe install.py
Array nodes need nothing from that installer - the install.py step is there for the JSON and metadata nodes, which shell out to jq and ime. But the pack does require ComfyUI 0.38.0 or newer, since it uses the V3 schema and ships no NODE_CLASS_MAPPINGS at all. If the nodes simply aren't there after a restart on an older frontend, that's the reason, not a bad clone.
Common issues
"My output has one giant item." Your separator isn't in the text. Check for smart quotes, ; versus ,, or a comma followed by a non-breaking space you pasted in from a web page.
"My output is empty." Either the text field is empty, or the separator only appears at the ends and Remove Empty ate everything. Turn Remove Empty off to see what's really in there - Count will usually tell you the story faster than eyeballing the string.
"Nothing runs." Same trap as every non-output node in this pack: these nodes are executed only if an output node needs them. Put a text preview or a save node at the end of the chain, or the graph will happily skip the whole branch.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | The text to split into array items. | |
| separator | STRING | , | Separator character(s) used to split the text. |
| trim_items | BOOLEAN | true | Strip leading and trailing whitespace from each item. |
| remove_empty | BOOLEAN | true | Drop empty items after splitting. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| Array | STRING | β |
| Count | INT | β |