Native List Creater
Turn a comma-separated prompt list into loop iterations
- STRING
The moment you want to run the same graph across eight prompt variations, you stop needing a text box and start needing a list. ComfyUI's answer to that is its native loop nodes - StartLoop / EndLoop - and those nodes don't take a comma-separated string. They take a list. This node is the bridge.
Yes, "Creater" is spelled that way in the source. No, you can't fix it, and it won't affect your workflow.
What it does
You paste text into a multiline field, give it a separator, and it hands back a list of strings - one item per piece - which the loop then consumes one at a time.
It's a subclass, which is the interesting part. The pack already had ListCreaterNode, which returns a LIST container for nodes that speak the pack's own list type. NativeListCreaterNode overrides exactly two things:
RETURN_TYPES = ("STRING",)
OUTPUT_IS_LIST = (True,)
That's it - the splitting logic is inherited unchanged, and only the output contract changes. One STRING socket that the engine treats as a list of strings, rather than a container object. That's precisely what the native loop nodes understand, and it's why this node exists next to a version that already did the same job. If you're wiring into the pack's older XYZ machinery, use the old one; if you're wiring into core loops, use this one.
The three inputs
Text - multiline, the thing you're splitting. Every line or comma-separated fragment becomes one loop iteration, so be deliberate about it.
Separator - a string, default ,. The one magic value is the two characters \n, which the node converts into an actual newline before splitting; that's the author's own tooltip, and it's the only escape it handles. Type \t expecting a tab and you'll get a literal backslash-t match, which finds nothing and leaves you with one giant item. Multi-line text plus a \n separator is the sane combination.
RemoveEmptyValues - boolean, default off. Turn it on. Trailing separators, double commas and blank lines all produce empty strings, and an empty string is not skipped by a loop - it's a full generation with an empty prompt. On a 30-step SDXL graph that's maybe forty seconds of your life per stray comma. The cleanup is worth the click.
Two behaviours worth knowing
Every item gets strip()ed, and then any newlines inside the item are replaced with spaces:
cleaned = [p.strip().replace('\n', ' ') for p in parts]
So if you split on , while your text contains line breaks, those breaks become spaces and your carefully formatted multi-line prompt collapses into one line. Which is fine - prompts are one line to the model - but it means the visual layout of your text box isn't preserved in any way that matters.
And the order of the output list is the order of the text. That's the loop's iteration order, which becomes row order in any grid you render later. If you want Z-planes of three prompts each, group them accordingly here.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/DemonAlone/DemonAlone-nodes-ComfyUI
cd DemonAlone-nodes-ComfyUI
pip install -r requirements.txt
Or search DemonAlone-nodes-ComfyUI in ComfyUI Manager, install, restart. No models to download; piexif is the pack's only pip dependency and this node doesn't use it. It lives under utility/text/native as Native List Creater - the separate subcategory exists specifically so you don't confuse it with the non-native List Creater.
Things that go wrong
No nodes at all after a manual install. The familiar one: image_utilites.py imports piexif at module scope, so a missing requirement fails the entire package and nothing from this pack registers. Run the pip line, restart.
The loop ran one more time than you had prompts. Almost certainly a trailing separator or a blank last line, with RemoveEmptyValues off. Count the items, not the commas.
The output won't connect to the loop. Make sure you're using the native variant. A LIST-typed socket from the ordinary List Creater will not satisfy an input expecting a string list, and ComfyUI greys out the connection rather than explaining itself.
Substituted prompts look mangled. Check that you're not relying on a separator character that appears inside your text - a comma separator over prose prompts splits mid-sentence, and the node is doing exactly what you asked.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| Separator | STRING | , | \n → newline |
| RemoveEmptyValues | BOOLEAN | false | — |
| Text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |