DualCLIPLoader (GGUF)
Run Flux's text encoders on a smaller card
- CLIP
If you're running Flux and your VRAM is tight, this is the node that lets you shrink the part everyone forgets about: the text encoder. Flux doesn't just eat memory with its 12B-parameter diffusion model. It also loads T5-XXL, a full-blown language model from Google, and that thing is heavy on its own. DualCLIPLoader (GGUF) loads two text encoders at once, and the whole point is that one or both of them can be a quantized .gguf file instead of the full fat weights.
Why two encoders, and why you'd quantize them
Modern models don't read your prompt with a single network. Flux uses CLIP-L (an image-text alignment model, good at tags) paired with T5-XXL (a real language model, which is why Flux actually understands sentences). SDXL uses CLIP-L plus OpenCLIP-G. HunyuanVideo pairs CLIP with a Llama encoder. All of these need two encoder files loaded and combined, which is exactly what this node does - it's the GGUF-aware drop-in replacement for ComfyUI's stock DualCLIPLoader.
The reason it exists is that the text encoder is no longer a rounding error. On some 2026 models the encoder is nearly half the total parameters, and it's frequently the component that decides whether a model fits your card at all. GGUF is the ladder that helps: Q8 is basically indistinguishable from full precision, Q5 is the last stop before you'd notice, Q4 is the accepted compromise for 12GB cards. Grab a GGUF T5-XXL, load it here, and you've clawed back a few gigs for the diffusion model without meaningfully hurting output.
One honest caveat worth knowing: how much a squeezed encoder costs is genuinely disputed. Some people swear a Q8 T5 is free; others report a visible quality difference on aggressive encoder quants. Spend precision on the diffusion model first, squeeze the encoder second, and A/B it rather than assuming it's free.
The inputs that matter
- clip_name1 / clip_name2 - your two encoder files. For Flux, that's typically CLIP-L in one slot and a T5-XXL (GGUF or safetensors) in the other. The loader reads both
.ggufand regular.safetensors/.bin, so you can mix a full CLIP-L with a quantized T5. - type - pick the model family:
flux,sdxl,sd3,hunyuan_video,hidream,ltxv, and a handful more. This tells ComfyUI which tokenizer and config to wire up, so getting it wrong is a common cause of garbage output. Match it to the model you're actually running.
The single output is CLIP, which wires straight into your CLIPTextEncode node (or ClipTextEncodeFlux, if you want to send tags to CLIP and natural language to T5 separately - a nice trick Flux's dual setup allows).
Installing it
The whole pack is city96's ComfyUI-GGUF, the thing that brought GGUF to diffusion back in August 2024. Two ways in:
- ComfyUI Manager - open Manager, search "ComfyUI-GGUF", install, restart. Easiest path.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/city96/ComfyUI-GGUF, then install the one dependency withpip install --upgrade gguf, and restart. On a Windows portable build, clone intoComfyUI/custom_nodes/ComfyUI-GGUFand run.\python_embeded\python.exe -s -m pip install -r .\ComfyUI\custom_nodes\ComfyUI-GGUF\requirements.txt.
Put your GGUF encoder files in ComfyUI/models/clip (newer ComfyUI calls it models/text_encoders). city96 keeps a pre-quantized T5-XXL on HuggingFace (t5-v1_1-xxl-encoder-gguf) - that's the file most people grab. The nodes show up under the bootleg category, which is just city96's sense of humor, not a warning.
Where people get burned
Type mismatch is the classic one - running Flux weights with the type set to sdxl won't error loudly, it'll just produce mush. Slot order can matter too, so if a Flux workflow looks broken, try swapping clip_name1 and clip_name2. And if you're stacking LoRAs, know that GGUF pays a per-layer dequantize-patch-requantize tax that fp8 doesn't; on a card where fp8 still fits, fp8 is simpler and holds its speed under LoRAs. GGUF's real advantage starts exactly where fp8 stops fitting. On macOS Sequoia there's a known torch snag - 2.4.1 works where 2.6.x nightlies throw a buffer error (see the pack's issue #107).
Inputs (3)
| 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 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP | CLIP | — |