CLIP Text Encode (Multiple)
Many prompts, one encode node — the boring workhorse for batch and tile workflows
- clip
- CONDITIONING
The standard CLIP Text Encode node does one prompt. This one from Pirog's Nodes does a whole list. That sounds trivial until you're doing the classic ComfyUI move of processing an image in sections - each region with its own prompt - and you realize you'd otherwise need to duplicate an encode node per region and then manually zip the results together. It's not a flashy node. It's the one you grab when your graph is turning into spaghetti.
How it works
You hand it a clip and a texts input, where "texts" can be a Python list literal like ["portrait of a woman", "portrait of a man", "portrait of a cat"]. The node loops over every entry, tokenizes it with the CLIP model, and encodes each one into its own CONDITIONING embedding. The output is a list of conditionings, one per input string, in the same order. Internally it's just the ComfyUI encode path (clip.tokenize → encode_from_tokens_scheduled) called repeatedly - no magic, which is exactly what you want from a node like this.
If you paste a plain string instead of a list, it tries ast.literal_eval first and falls back to treating the whole thing as one prompt, so it's forgiving about input format.
The inputs and output that matter
- clip - your text encoder (from a checkpoint, or a CLIPLoader for SDXL/Illustrious setups).
- texts - the list of prompts to encode, one line or one list element per prompt.
- Output: CONDITIONING - a list you can feed directly into the positive input of a sampler.
If the clip is None - say you grabbed a model that has no text encoder bundled - it raises a clear error naming the cause rather than failing silently.
Why it exists
This node and its Flux sibling exist to feed samplers that process multiple regions or latents at once. In this pack, the obvious pairing is with KSampler (Multi-Seed+): when you split an image into tiles, each tile can be rendered against its own conditioning, and a list-typed CONDITIONING output is exactly what the tiled sampler wants. For SD1.5 and SDXL users doing regional prompting, it also beats stacking a pile of CLIP Text Encode nodes and hoping the batch alignment works out.
One honest caveat: for a single prompt it's a strictly worse version of the built-in node - no point using it. It earns its place only when the list gets real.
Installing it
Part of Pirog's Nodes, so one install gets you the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Pirog17000/Pirogs-Nodes
pip install -r Pirogs-Nodes/requirements.txt
Or find "Pirog's Nodes" in ComfyUI Manager and restart ComfyUI. No extra models, no downloads - it reuses whatever CLIP you're already loading.
Gotchas
Order matters - conditionings come back in list order, and if your sampler assumes a specific arrangement, mismatched prompt-to-tile pairings are on you. Also remember this is the SD/SDXL flavor; Flux users should reach for CLIP Text Encode Flux (Multiple), which handles the two-encoder pair format instead.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | The CLIP model used for encoding the text. | |
| texts | STRING | List of text prompts to encode. Each text will be encoded separately. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | List of conditioning embeddings, one for each input text. |