Split Tags
Carve one tag list into two without losing any of it
- STRING
- STRING
When you're generating batches, you often want two different outputs from one tag list - first ten tags into the positive prompt, the rest set aside, or a fixed character description separated from a pool of variable style tags. Split Tags does exactly one thing: it cuts a comma-separated tag list at a count you choose and hands you both halves. First output gets the first N tags, second output gets everything after. Nothing is lost, nothing is reordered, and the output strings stay cleanly rejoinable.
It's the kind of node that looks trivial and then quietly unblocks a workflow. Combine it with the pack's other text nodes and you can build prompt pipelines that reshuffle, truncate, and remix tag sets without writing any Python.
How it works
The split is a simple index cut. It splits tag_field on tag_delimiter, keeps the first tag_amount_to_split tags for output one, and joins the remainder for output two.
Three inputs, and the first two are the ones that matter:
- tag_field - the tag string to split (wired in from a tagger, wildcard processor, or another text node).
- tag_amount_to_split - how many tags go into the first output. Default 1. This is the one people misread: it's "first N tags in output 1," not "split into N equal parts."
- tag_delimiter - the separator, default
,.
Outputs are two STRINGs - feed them to two CLIP encodes, or to positive and negative, or downstream into more splitting.
One behavior worth knowing: if the list has fewer tags than your split amount, output one gets the whole original string and output two gets an empty string. No error, no crash - which is usually what you want, but it's also silent, so a misconfigured amount can just quietly stop splitting.
Install
Same pack, same drill. ComfyUI Manager → search "Nader Tagging" → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/NMWave/ComfyUI-Nader-Tagging
No dependencies, no models, nothing to configure beyond the node itself.
The usual gotchas
The delimiter matching is exact. If your tag list uses , but you set the delimiter to ,, the split produces leading spaces and the "clean" halves carry stray whitespace into your prompt. Set the delimiter to match your source exactly.
Also remember the tags come through verbatim - no trimming, no dedupe, no normalization. If you need dedupe, run the result through the pack's Tag Duplicate Remover first; the two nodes chain naturally.
Where this shines: keeping a fixed character-tag block stable while the "action" tags vary between generations, or truncating a tagger's noisy long output down to the N most important tags before it hits your encoder. For a zero-config node, that's a lot of leverage.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| tag_field | STRING | — | |
| tag_amount_to_split | INT | 1 | — |
| tag_delimiter | STRING | , | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |
| STRING | STRING | — |