Nodes/ComfyUI-LoaderUtils/Load CLIP (Any)
ComfyUI Node

Load CLIP (Any)

One text-encoder loader, ten architectures worth of recipes

By lrzjason·Created 8 months ago·Updated 8 months ago· 88
Load CLIP (Any)
  • any
  • CLIP
clip_name
type
device

This is the loader for split-workflow setups - the ones where you're not using an all-in-one checkpoint, but loading a diffusion model and its text encoder as separate files so you can mix, match, or stage them independently. CLIPLoader_Any loads exactly one text encoder and hands it back as a CLIP output, ready to plug into a CLIPTextEncode node.

The type dropdown is the whole trick

The node needs to know which tokenizer and config to apply to a raw safetensors file, and that's what type is for. The pack's own node description ships a cheat sheet, and it's worth just quoting it, because it's the fastest reference you'll find:

  • stable_diffusion → clip-l
  • stable_cascade → clip-g
  • sd3 → t5xxl / clip-g / clip-l
  • stable_audio → t5 base
  • mochi → t5xxl
  • cosmos → old t5xxl
  • lumina2 → gemma 2 2B
  • wan → umt5xxl
  • hidream → llama-3.1 (recommended) or t5
  • omnigen2 → qwen vl 2.5 3B

Match type to the model you're loading. Pick the wrong one and ComfyUI will either error outright or build the wrong tokenizer for your prompt, and you won't get a useful clue as to why.

The other input worth knowing about is device, with two options: default or cpu. Forcing cpu keeps the encoder off your GPU entirely - genuinely useful when the text encoder is huge (Wan's umt5xxl, HiDream's llama-3.1) and you'd rather spend that VRAM on the diffusion model instead, accepting a slower encode pass in exchange.

The any staging trick

Like every node in this pack, there's a bonus optional input, any, that accepts anything and does nothing with it except delay execution until its source finishes. ComfyUI would otherwise load a text encoder the instant nothing blocks it - which, for a leaf node like a loader, is usually right at the start, alongside every other model in the graph. Wire something into any and you control when it actually loads instead.

This is one of the two headline examples in the pack's own documentation: connect UNETLoader_Any after your CLIPTextEncode nodes so the (usually much heavier) diffusion model doesn't occupy VRAM while you're still encoding text. CLIPLoader_Any is the other half of that same trick - you can defer loading the text encoder itself if something else needs to run first.

Installing it

ComfyUI Manager: search ComfyUI-LoaderUtils, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/lrzjason/ComfyUI-LoaderUtils

No extra pip packages - it wraps ComfyUI's own CLIPLoader class. Put your text encoder file in models/clip like you normally would; nothing about the file format changes.

Where people get burned

Wrong type for the file is the most common failure - SD3's recipe alone lists three different combinations depending on which encoders you actually have, so double-check against the model card for whatever you're loading, not just the architecture family name.

One real limitation: this pack has no GGUF-format loader. If your text encoder is a GGUF quant, this node won't load it - you need ComfyUI-GGUF's own CLIP loader for that, which doesn't carry the any staging input this pack adds. For everything else, weight_dtype-style precision control isn't exposed here either; if you need fp8 casting on a text encoder specifically, that typically comes from choosing an already-fp8 file rather than this node casting it for you.

Categoryadvanced/loaders

Inputs (4)

NameTypeDefaultDescription
clip_nameCOMBO0 options:
typeCOMBO10 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, cosmos, +4
deviceoptCOMBO2 options: default, cpu
anyopt*

Outputs (1)

NameTypeDescription
CLIPCLIP