EGDualTextEncoderLoader
Two encoders, one conditioning, and a type that has to match
- CLIP
Flux wants CLIP-L and T5-XXL. SD3 can want CLIP-L plus T5. HiDream takes a T5 and a Llama. This node is the loader that glues two text encoders into the single CLIP object the rest of the graph expects.
If you've never run a dual-encoder model, the existence of it is the useful part: some architectures genuinely read two embedding streams, and combining them is not something you can fake by encoding twice and hoping.
What it does
EGDualTextEncoderLoader subclasses ComfyUI's DualCLIPLoader. Three required widgets and one optional, one CLIP out.
- clip_name1 / clip_name2 - files from
ComfyUI/models/text_encoders. - type - tells ComfyUI which pair it's looking at and how to fuse them. The list runs
sdxl,sd3,flux,hunyuan_video,hidream,hunyuan_image,hunyuan_video_15,kandinsky5,kandinsky5_image,ltxv,newbie,ace. - device (optional) -
defaultorcpu.
The author's own recipe notes are the authoritative mapping, and they're worth reading literally: sdxl is CLIP-L + CLIP-G; sd3 is CLIP-L + T5, or CLIP-G + T5, or CLIP-L + CLIP-G; flux is CLIP-L + T5; hidream needs at least one of T5 or Llama and recommends both; hunyuan_image is Qwen2.5-VL 7B + ByT5-small; newbie is Gemma-3-4B-it + Jina CLIP v2.
type is doing real work. It sets the tokenizer for each slot, the projection each encoder's output goes through, and the weighting when the two streams are concatenated into one conditioning. Pick sdxl for a Flux pair and you don't get a graceful degradation - you get either an error or conditioning the model can't read.
Under the hood the pack keeps core's loader and only overrides IS_CHANGED, returning an identity fingerprint for both files. Swapping either encoder in place re-executes the node. That matters for the gallery, where changing any selected text encoder invalidates a preview set's cache recipe and creates a new set.
Where the gallery uses it
Only when a profile declares two encoders. In practice that's the Flux profiles (Dev and Schnell), which the pack wires as CLIP-L + T5-XXL with type flux. Everything else uses the single-encoder loader - Z-Image and Anima included, despite both being modern LLM-encoder models.
If you're wondering why your Flux graph alone has this node in it: because Flux is the dual one.
Inputs and outputs, practically
The two that matter are the filenames. Get them from the model card, not from a filename guess - t5xxl_fp8_e4m3fn.safetensors and clip_l.safetensors are the standard Flux pair, and both need to be in models/text_encoders.
- CLIP - one output, out to
CLIPTextEncodeand any text-side LoRA patching.
device: cpu is the pressure valve on small cards: it parks both encoders in system RAM so they don't sit on your GPU while the diffusion model works. Flux with T5-XXL resident is a lot of VRAM for something that's only used at the start of the run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/nikminer/ComfyUI-Emotional-Gallery.git comfyui_emotional_gallery
Restart, Ctrl+F5. No packages, no downloads. On ComfyUI Manager: "ComfyUI Emotional Gallery".
It's an Emotional Gallery/internal node, hidden from the Add Node menu like the rest of the pack's plumbing - registered for execution, not for browsing.
Common issues
Only one dropdown has files, the other is empty. Both lists read models/text_encoders; an empty one just means that file is missing. Flux needs both files, always.
"Value not in list" after you reorganised your models folder. The workflow pins filenames. Re-pick both.
The encode step throws a shape/type error. Type mismatch, nearly every time. Check the recipe line for your architecture rather than picking by vibes.
Prompt adherence is weak and CFG doesn't help. On Flux, CFG 1 is normal and negative prompting is off by design - guidance is a separate FluxGuidance value around 3.5, not CFG. If you crank CFG expecting more prompt obedience you'll just fry the image.
VRAM dies at the start of the run. Try device: cpu here before you start hunting for a smaller model. Two encoders is a lot of resident weight for a pipeline stage that finishes early.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_name1 | COMBO | 0 options: | |
| clip_name2 | COMBO | 0 options: | |
| type | COMBO | 12 options: sdxl, sd3, flux, hunyuan_video, hidream, hunyuan_image, +6 | |
| deviceopt | COMBO | 2 options: default, cpu |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP | CLIP | — |