Load DualCLIP (Quantized)
Two quantized text encoders at once, from CLIP-L + T5 to Qwen + Gemma
- CLIP
Modern models don't use one text encoder. SDXL pairs CLIP-L with OpenCLIP-G, Flux pairs CLIP-L with T5-XXL, and the newer LLM-encoder models pair something big with something small (Qwen with Byt5, Gemma with a small CLIP). When both halves need to be quantized - and on a 12GB card they usually do - you don't want two loader nodes and two format pickers fighting over the same CLIP connection. This node loads both quantized encoders and merges them into a single CLIP object in one go.
It's the dual-encoder version of Load CLIP (Quantized): same quant formats, same kernel backend choice, same loading toggles, just with two file pickers on top. The node's own description even ships with a recipe list, which is a genuinely nice touch:
- sdxl - clip-l + clip-g
- sd3 - clip-l + clip-g, clip-l + t5, or clip-g + t5
- flux - clip-l + t5
- hidream - at least one of t5 or llama; the description recommends both
- hunyuan_image - qwen2.5vl 7b + byt5 small
- newbie - gemma-3-4b-it + jina clip v2
How it works
The node loads both state dicts, detects each file's per-layer quant format, and merges the two sets of quantization metadata before calling ComfyUI's load_text_encoder_state_dicts. One nice detail: either encoder can be quantized or not - the hybrid ops handle mixed pairs, so you can run a quantized T5 against a full-precision CLIP-L if that's what you have. Also note that text_encoder2 lists files from both text_encoders and checkpoints folders, and for the ltxv type it resolves from checkpoints specifically.
The inputs that matter
- text_encoder1 and text_encoder2 - the two files, in the order your
typeexpects (clip-l then t5, etc.). - type - twelve preset architectures:
sdxl,sd3,flux,hunyuan_video,hidream,hunyuan_image,hunyuan_video_15,kandinsky5,kandinsky5_image,ltxv,newbie,ace. This drives which encoder combination ComfyUI builds. - quant_format -
autounless you have a reason to force one. - kernel_backend -
pytorchortriton; triton is the fast int8 path but needs the setup below. - disable_dynamic and low_memory - the pack's shared loading toggles.
Output is a single CLIP feeding a CLIP Text Encode node.
Installing it
ComfyUI Manager → search "ComfyUI-QuantOps", or:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-QuantOps
Restart and let requirements.txt pull in unifiedefficientloader>=0.5.2. Encoder pairs live on silveroxides' HuggingFace.
The caveats
The fast int8 path isn't free: int8_tensorwise on an RTX 30-series card wants torch 2.10+cu130 or newer, the matching triton-windows wheel, silveroxides' pre-compiled comfy-kitchen int8 wheel, and the --enable-triton-backend launch flag. And the pack is deprecated - int8 ConvRot is native in ComfyUI (v0.27.0+) now, so the author stopped maintaining and says as much in the README. This node's real remaining job is loading the older quantized dual-encoder files already in the wild. If you're wiring up something brand new, check whether ComfyUI's own dual CLIP loader already covers the formats you have.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| text_encoder1 | COMBO | 0 options: | |
| text_encoder2 | COMBO | 0 options: | |
| type | COMBO | 12 options: sdxl, sd3, flux, hunyuan_video, hidream, hunyuan_image, +6 | |
| quant_format | COMBO | 9 options: auto, int8, int8_tensorwise, float8_e4m3fn, float8_e4m3fn_blockwise, float8_e4m3fn_rowwise, +3 | |
| kernel_backend | COMBO | 2 options: pytorch, triton | |
| disable_dynamic | BOOLEAN | false | — |
| low_memory | BOOLEAN | false | Use fast and efficient low impact loading of model. Set to False to use comfy's default loading. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP | CLIP | — |