Nodes/OmniNodes/GGUF CLIP Loader πŸ“
ComfyUI Node

GGUF CLIP Loader πŸ“

Open quantized text encoders without another extension install

By TensorVizionΒ·Created 3 months agoΒ·Updated about 8 hours agoΒ· 0
GGUF CLIP Loader πŸ“
    • clip
    • summary
    β—„clip_name1β–Ύβ–Ί
    β—„clip_typestable_diffusionβ–Ί
    β—„clip_name2noneβ–Ί
    β—„path_override1β–Ί
    β—„path_override2β–Ί

    On Flux- and SD3-class models, the text encoder quietly eats a shocking share of your memory. T5-XXL alone is in the neighborhood of 8B parameters - around 17GB in fp16 - which is a big reason "quantize the text encoder too" became standard advice once GGUF hit diffusion. This node loads one or two quantized text-encoder .gguf files (CLIP-L, CLIP-G, T5-XXL, and friends) and hands you a normal ComfyUI CLIP object you can wire straight into CLIPTextEncode.

    One catch up front, and it's the same one that runs through the whole GGUF half of OmniNodes: the tensors are fully dequantized to fp16 at load time and passed to ComfyUI's own text-encoder loading code. So you get a perfectly working CLIP that behaves identically to one from a safetensors DualCLIPLoader - but you do not get the reduced-memory load that a quantized-inference-native extension (again, city96's ComfyUI-GGUF) provides by keeping weights quantized on the GPU. If your actual goal is freeing VRAM by running a quantized T5, that extension is the tool. If your goal is "open this GGUF text encoder I already downloaded without installing anything else," this is your node. Those are different jobs, and knowing which one you're doing saves you a confusing afternoon.

    How it works

    It mirrors core ComfyUI's own CLIPLoader/DualCLIPLoader shape on purpose. Each file is read and dequantized with the gguf package, and the resulting state dicts go through comfy.sd.load_text_encoder_state_dicts along with a clip_type - the same selector core ComfyUI uses to decide which tokenizer and encoder wiring a model family needs. So if you already understand how core's DualCLIPLoader works for Flux (T5-XXL + CLIP-L) or SDXL (CLIP-L + CLIP-G), this is that, just fed by GGUF files.

    Inputs and outputs that matter

    • clip_name1 (required) - first encoder file. The dropdown sweeps clip, clip_gguf, text_encoders, and checkpoints folders; path_override1 covers anything elsewhere.
    • clip_type - default stable_diffusion, with the full set: flux, sd3, stable_cascade, ltxv, hunyuan_video, mochi, stable_audio. This must match the model family you're prompting, not just whatever the file is named.
    • clip_name2 (optional) - second encoder for the dual setups (SDXL, Flux). Leave it on the placeholder "none" entry to load a single encoder, like just a quantized T5-XXL.

    Outputs are clip (a real CLIP β†’ CLIPTextEncode) and summary, which lists the files loaded, the clip_type used, and any tensors that had to be skipped.

    Installing

    This is one node of OmniNodes, TensorVizion's big all-in-one pack whose GGUF category is its newest corner. Install the pack once:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/TensorVizion/OmniNodes
    cd OmniNodes && pip install -r requirements.txt
    

    Restart ComfyUI afterwards. ComfyUI Manager users can search "OmniNodes" instead of cloning - but the pip install gguf step applies either way, since that package isn't bundled with ComfyUI. The node shows up under TensorVizion/GGUF.

    Troubleshooting

    If nothing appears in the file dropdowns, your .gguf isn't in a folder ComfyUI scans - move it to ComfyUI/models/text_encoders (or clip) or type an absolute path into path_override1. The most common self-inflicted wound is a mismatched clip_type: loading a Flux T5 with clip_type: stable_diffusion gives you a CLIP that won't encode sensibly for your model. Match the family. And if ComfyUI's core loader rejects the dequantized state dict, you've probably got a file that isn't a text encoder at all - run GGUFFile Info (also in this pack, also free) to see what the architecture metadata actually says before you fight the loader.

    CategoryTensorVizion/GGUF

    Inputs (5)

    NameTypeDefaultDescription
    clip_name1COMBO1 options: <none found in model folders β€” use path_override>
    clip_typeCOMBOstable_diffusion8 options: stable_diffusion, stable_cascade, sd3, stable_audio, flux, hunyuan_video, +2
    clip_name2optCOMBOnone2 options: none, <none found in model folders β€” use path_override>
    path_override1optSTRINGβ€”
    path_override2optSTRINGβ€”

    Outputs (2)

    NameTypeDescription
    clipCLIPβ€”
    summarySTRINGβ€”