Nodes/ComfyUI-ELLA/ELLA Text Encode
ComfyUI Node

ELLA Text Encode

ELLA Text Encode — the all-in-one that wires CLIP back in

By TencentQQGYLab·Created 2 years ago·Updated 2 years ago· 382
ELLA Text Encode
  • ella
  • text_encoder
  • clip
  • CONDITIONING
  • CLIP CONDITIONING
text
text_clip

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 EncodeELLA 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 ELLA object, again requiring Set ELLA Timesteps first (same error as ELLA Encode if you skip it).
  • text_encoder - the T5_TEXT_ENCODER from the loader.
  • text - your prompt, multiline, dynamic prompts supported. This is what T5 reads.
  • clip (optional) - a CLIP object. 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_clip without a clip and you get text_clip needs a clip to encode - there's no CLIP to run it through. A clip with an empty text_clip won't error, it'll just encode an empty string.

Outputs

Two, and people trip on this:

  • CONDITIONING - the combined conditioning. If clip is 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's conditioning input, with the ELLA side in conditioning_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.

Categoryella/conditioning

Inputs (5)

NameTypeDefaultDescription
ellaELLA
text_encoderT5_TEXT_ENCODER
textSTRING
clipoptCLIP
text_clipoptSTRING

Outputs (2)

NameTypeDescription
CONDITIONINGCONDITIONING
CLIP CONDITIONINGCONDITIONING