Nodes/DemonAlone-nodes-ComfyUI/Native List Creater
ComfyUI Node

Native List Creater

Turn a comma-separated prompt list into loop iterations

By DemonAlone·Created 9 months ago·Updated about 20 hours ago· 6
Native List Creater
    • STRING
    ◄Separator,►
    ◄RemoveEmptyValuesfalse►
    ◄Text—►

    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.

    Categoryutility/text/native

    Inputs (3)

    NameTypeDefaultDescription
    SeparatorSTRING,\n → newline
    RemoveEmptyValuesBOOLEANfalse—
    TextSTRING—

    Outputs (1)

    NameTypeDescription
    STRINGSTRING—