ELLA Text Encode
ELLA Text Encode — the all-in-one that wires CLIP back in
- ella
- text_encoder
- clip
- CONDITIONING
- CLIP CONDITIONING
ELLA Text Encode is the pack's "just make it work" node - it folds three steps of the modern pipeline into one box. It takes your prompt, runs it through FLAN-T5, produces the time-aware conditioning, and (if you ask it to) mixes in the CLIP conditioning so your LoRA trigger words actually work. It landed in the April 2024 update specifically to simplify the workflow, and it's the node most example workflows use.
If you've built the manual chain (T5 Text Encode → ELLA Encode), this node produces the same CONDITIONING with less wiring. The difference is the optional clip input, which is the interesting part.
Inputs
- ella - the
ELLAobject, again requiringSet ELLA Timestepsfirst (same error asELLA Encodeif you skip it). - text_encoder - the
T5_TEXT_ENCODERfrom the loader. - text - your prompt, multiline, dynamic prompts supported. This is what T5 reads.
- clip (optional) - a
CLIPobject. The moment you wire this, the node also encodes with CLIP and concatenates the results. - text_clip (optional) - the prompt for the CLIP side. Give a
text_clipwithout aclipand you gettext_clip needs a clip to encode- there's no CLIP to run it through. Aclipwith an emptytext_clipwon't error, it'll just encode an empty string.
Outputs
Two, and people trip on this:
- CONDITIONING - the combined conditioning. If
clipis wired, this is ELLA's per-step conditioning concatenated with the CLIP conditioning on the token dimension - which is exactly how you get LoRA trigger words back, since those live in CLIP's vocabulary, not FLAN-T5's. If no CLIP is wired, it's just the ELLA conditioning. - CLIP CONDITIONING - the raw CLIP conditioning, so you can also use it elsewhere in the graph (for example feeding it through the
Conditioning (Concat)node'sconditioninginput, with the ELLA side inconditioning_to, per the README).
Why this matters in practice
Pure ELLA is a great prompt follower but a lousy LoRA citizen: trigger words mean nothing to a text encoder that never saw CLIP's vocabulary. The README's own note is blunt - for LoRA trigger words, ELLA conditioning needs the CLIP conditioning concatenated in, and when you do it via Conditioning (Concat), ELLA's output goes to conditioning_to. ELLA Text Encode automates that concat for you when you wire clip, which is the least fiddly path.
Honest caveats: prompt weighting (A1111-style (word:1.2)) still doesn't work here - T5 strips it. And there's no guarantee positive-only ELLA beats positive+negative; the README shows both as experiments. For most people this node + a wired CLIP is the best place to start, because it removes the most common source of "my LoRAs stopped working" confusion.
Install is the pack install - ComfyUI Manager or git clone https://github.com/TencentQQGYLab/ComfyUI-ELLA into custom_nodes and pip install -r requirements.txt - plus the ELLA model in models/ella and FLAN-T5 XL in models/ella_encoder.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| ella | ELLA | — | |
| text_encoder | T5_TEXT_ENCODER | — | |
| text | STRING | — | |
| clipopt | CLIP | — | |
| text_clipopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |
| CLIP CONDITIONING | CONDITIONING | — |