CLIPTextEncodeSDXL-Pipe
Keep your SDXL prompt bundle on one wire
- clip
- refiner_clip
- latent
- conditioning
- refiner conditioning
- CLIP
- refiner CLIP
- latent
The SDXL refiner era created a wiring problem: base CLIP conditioning, refiner conditioning, and both CLIPs all need to reach the sampler, and dragging each wire across a big canvas is how graphs turn into spaghetti. CLIPTextEncodeSDXL-Pipe bundles the whole thing - the encode plus the CLIPs plus your latent - so the encode half of the graph stays one node wide. It's the "pipe" pattern rgthree's pack made famous: carry a bundle of connections down one wire instead of rerouting them individually.
How it works
Same encode as the core node: text_g goes to the "g" token stream, text_l to the "l" stream, padded to equal length, encoded with pooled output and size info. If you feed refiner_clip, it encodes the same text with the refiner's CLIP too - there's no separate refiner prompt field. If you feed a latent, the conditioning is sized from it (latent ×8); otherwise it assumes 1024×1024.
Inputs: clip, text_g, text_l (multiline, defaults "CLIP_G"/"CLIP_L"), optional refiner_clip and latent.
Outputs, all from one side of the node:
conditioningandrefiner conditioning- the two CONDITIONING streamsCLIPandrefiner CLIP- the encoders, passed throughlatent- passed through
The honest take
The refiner is where the community checked out. Base-plus-refiner two-stage SDXL was the design, and most people ignored the refiner entirely - SDXL finetunes made it redundant. So if you're not actually running a refiner pass, the refiner conditioning and refiner CLIP outputs just duplicate the main ones, and this node is more plumbing than you need. The plain core encoder is simpler.
Where the Pipe earns its keep is tidiness at scale. After a few ConditioningCombine, Concat and Average nodes, having conditioning, CLIP and latent arrive on one node and leave on one node keeps the graph readable. If that's your problem, this is your node.
Gotchas
- The refiner shares the same prompt text. Want different wording for the refiner stage? Not possible here.
- SDXL-family only. The CLIP-G/CLIP-L pair doesn't exist on Flux-class models.
refiner CLIPandlatentoutputs can be left dangling - they're pass-throughs, not something the sampler needs wired twice.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/braintacles/braintacles-comfyui-nodes
or search braintacles-nodes in ComfyUI Manager and restart. No Python dependencies, no model downloads - it wraps ComfyUI's own CLIP encode APIs, so it keeps working across ComfyUI updates. The pack itself is dormant since mid-2024, but this node doesn't touch anything that's changed.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| text_g | STRING | CLIP_G | — |
| text_l | STRING | CLIP_L | — |
| refiner_clipopt | CLIP | — | |
| latentopt | LATENT | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |
| refiner conditioning | CONDITIONING | — |
| CLIP | CLIP | — |
| refiner CLIP | CLIP | — |
| latent | LATENT | — |