π§ SD3 Attention Seeker T5
Dialing T5-XXL up or down, one layer at a time
- clip
- CLIP
This one's a research/tinkering node more than a daily-driver, and it's worth being upfront about that before you go looking for it in a normal workflow. SD3 and SD3.5 encode your prompt through three text encoders at once - CLIP-L, CLIP-G, and T5-XXL - and T5-XXL is doing something specific: Stability's own SD3 paper found that dropping it entirely cost almost nothing in general aesthetics, a bit in prompt adherence, and a lot in typography (rendering text inside the image). T5 is the encoder carrying the "read the words carefully" signal, especially for text rendering. SD3AttentionSeekerT5 is what you reach for when "on or off" isn't fine-grained enough and you want to explore which parts of T5 matter for your case.
How it works
T5-XXL is a 24-layer transformer, and this node gives you a scaling dial for every single one of those layers - t5xxl_0 through t5xxl_23, each a float from 0 to 5 (default 1, i.e. unchanged). Four boolean switches - apply_to_query, apply_to_key, apply_to_value, apply_to_out - decide which of the attention projections inside each layer the scaling actually touches. Leave everything at the defaults and it's a no-op: every layer at 1.0 passes T5's attention through unmodified.
The practical use is exploratory: push individual layers up or down and watch what changes in your output. Because T5's contribution skews toward text rendering and fine prompt adherence rather than overall composition, layer-by-layer scaling lets you hunt for (hence "seeker") which parts of the encoder are actually earning their keep for your prompt, instead of the all-or-nothing choice of using T5 or dropping it.
The inputs and outputs that matter
clip(CLIP) in - this has to be a CLIP object that actually has a T5-XXL component wired into it, i.e. an SD3 or SD3.5 loader. Feed it an SDXL or Flux CLIP and there's no T5-XXL layer for the node to touch.apply_to_query/apply_to_key/apply_to_value/apply_to_out- all defaulttrue; toggle these off if you want to scale, say, only the value projection and leave the rest alone.t5xxl_0β¦t5xxl_23- one scalar per T5-XXL layer, 0β5 range, defaults all at 1.0.
Output is a modified CLIP - you wire it into your normal CLIPTextEncode (or this pack's own text-encode nodes) exactly where you'd plug in the unmodified CLIP loader output. The scaling is baked into the CLIP object, not applied to the conditioning after the fact.
How to install it
Via ComfyUI Manager, search "ComfyUI Essentials" and install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_essentials
Restart ComfyUI. Same pack, same author (cubiq/Matteo Spinelli, of IPAdapter Plus fame) as every other node here - no separate dependency for this specific node beyond having an SD3/SD3.5 checkpoint and its T5-XXL text encoder loaded already.
Common issues
Nothing seems to change. Double-check you're feeding it a CLIP that includes T5-XXL - this only makes sense on SD3/SD3.5's triple-encoder setup. It's also a genuine no-op at every default (all layers = 1.0), so if you haven't moved any sliders yet, that's expected, not broken.
24 layers is a lot to tune by hand. There's no shortcut here - this is a hunt-and-check node by design, not a preset system. If you're not doing deliberate encoder experimentation, you probably don't need this node at all; a plain CLIPTextEncode covers the other 95% of SD3 workflows fine.
Heavy VRAM/CLIP-loading setups. T5-XXL is a genuinely large text encoder (multiple gigabytes on its own), so make sure your SD3/SD3.5 setup already loads and runs comfortably before adding an experimentation layer on top of it - this node doesn't add meaningful overhead itself, but it assumes the base T5 load already works.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | β | |
| apply_to_query | BOOLEAN | true | β |
| apply_to_key | BOOLEAN | true | β |
| apply_to_value | BOOLEAN | true | β |
| apply_to_out | BOOLEAN | true | β |
| t5xxl_0 | FLOAT | 1.000β5 | β |
| t5xxl_1 | FLOAT | 1.000β5 | β |
| t5xxl_2 | FLOAT | 1.000β5 | β |
| t5xxl_3 | FLOAT | 1.000β5 | β |
| t5xxl_4 | FLOAT | 1.000β5 | β |
| t5xxl_5 | FLOAT | 1.000β5 | β |
| t5xxl_6 | FLOAT | 1.000β5 | β |
| t5xxl_7 | FLOAT | 1.000β5 | β |
| t5xxl_8 | FLOAT | 1.000β5 | β |
| t5xxl_9 | FLOAT | 1.000β5 | β |
| t5xxl_10 | FLOAT | 1.000β5 | β |
| t5xxl_11 | FLOAT | 1.000β5 | β |
| t5xxl_12 | FLOAT | 1.000β5 | β |
| t5xxl_13 | FLOAT | 1.000β5 | β |
| t5xxl_14 | FLOAT | 1.000β5 | β |
| t5xxl_15 | FLOAT | 1.000β5 | β |
| t5xxl_16 | FLOAT | 1.000β5 | β |
| t5xxl_17 | FLOAT | 1.000β5 | β |
| t5xxl_18 | FLOAT | 1.000β5 | β |
| t5xxl_19 | FLOAT | 1.000β5 | β |
| t5xxl_20 | FLOAT | 1.000β5 | β |
| t5xxl_21 | FLOAT | 1.000β5 | β |
| t5xxl_22 | FLOAT | 1.000β5 | β |
| t5xxl_23 | FLOAT | 1.000β5 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP | CLIP | β |