CLIP Text Encode (Controlnet)
Give your ControlNet its own separate prompt
- clip
- conditioning
- CONDITIONING
ControlNets normally ride along on whatever text conditioning your main model gets. This node is the exception: it exists so a ControlNet can read a different prompt from the UNet. It's been in core since February 2024, and it's marked experimental - which tells you most of what you need to know about how often people actually use it.
What it does
clip- the text encoder.conditioning- your already-encoded main conditioning.text- the prompt for the ControlNet.
The node encodes text with the clip, then attaches it to your existing conditioning as cross_attn_controlnet plus a pooled_output_controlnet. The main conditioning's own embeddings are untouched. What you get out is your original conditioning, now carrying a parallel text channel that a ControlNet can pick up.
Why the feature exists at all
Most ControlNets are pure structure - they only care about edges, depth, or pose, and they ignore text completely. But some models (notably certain SDXL-era and union-style ControlNets) were trained to read their own cross-attention prompt, and for those a single global prompt is genuinely limiting. Classic use: the main prompt describes the whole scene while the ControlNet's prompt describes just the structure it's enforcing, so the two don't argue.
The honest caveats
This is a niche tool, and the "experimental" flag is the source's own admission. The first thing to check is whether your ControlNet even consumes text - if it doesn't, this node changes nothing, because the cross_attn_controlnet channel goes unread. When people grab this node expecting "ControlNet with a different prompt" and see no difference, that's almost always why.
The second thing: it was designed in the SD 1.5/SDXL era, when the ControlNet architecture that used the separate prompt existed. The modern union ControlNets on Flux/Qwen/Z-Image lineage mostly standardized on a single text channel, so the practical population of models this node helps has thinned out. It's not broken; it's a solution to a problem that mostly shipped with the older ecosystems.
Verdict
Worth knowing it exists, worth reaching for the moment you have a ControlNet that visibly responds to text changes but you want it to respond to different text. If you're not sure, run it with a deliberately absurd ControlNet prompt ("kittens" on a depth ControlNet) and see if the output shifts. If it doesn't, your ControlNet isn't reading text, and the node is just extra wires in your graph. It ships with core - no install, no model files to fetch, just one experimental node that may or may not be the thing your workflow needs.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| conditioning | CONDITIONING | — | |
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |