Nodes/ComfyUI-Practical-Tools/CLIP Name Selector
ComfyUI Node

CLIP Name Selector

A dropdown that loads nothing (on purpose)

By wenchengxiang·Created 2 months ago·Updated 9 days ago· 3
CLIP Name Selector
    • clip_name
    • model_type
    ◄clip_name▾►

    Most ComfyUI loaders bake a filename into a widget. That's fine until it isn't: you want to A/B two text encoders, or a workflow has three branches that each need a different CLIP, and now you're opening nodes and hunting dropdowns to change one string. The CLIP Name Selector is the tiny node that fixes that - it hands you the filename as a wire, and it never loads a single weight.

    What it actually is

    One widget, two outputs, zero VRAM. It reads the model folders and builds a dropdown containing every text encoder it can find - safetensors, .bin, and .gguf, merged into one sorted, de-duplicated list. Then it tells you which kind you picked.

    The interesting bit is model_type. It's an integer, not a dtype: 0 means a regular file, 1 means the name ends in .gguf. That's the whole trick. This pack ships both a normal-style CLIP loader path and its own GGUF loader, and model_type is how you route between them automatically - pipe it into whatever switch or index node you favour and the graph picks the right loader for the encoder you chose.

    Inputs and outputs

    clip_name (required) is the dropdown. Behind it the node calls ComfyUI's file listing for clip, text_encoders, and the pack's own clip_gguf key, so anything you've dropped in models/text_encoders shows up. In current ComfyUI clip is just a legacy alias for text_encoders, so think of it as one folder.

    Outputs:

    • clip_name - STRING, the filename exactly as ComfyUI knows it
    • model_type - INT, 0 for a normal file, 1 for .gguf

    Wire clip_name into a CLIP loader's clip_name input (right-click that widget → Convert widget to input). If your frontend refuses to connect a plain STRING to a combo socket, the same pack ships String To Combo, which outputs the wildcard * type and will plug into just about anything.

    Install

    ComfyUI Manager → search Practical-Tools → install → restart. It's published to the Comfy Registry, so Manager finds it. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/wenchengxiang/ComfyUI-Practical-Tools.git
    # restart ComfyUI
    

    Nothing extra to download for this node; its dependencies are just Python (gguf among them, for its sibling GGUF loaders). Encoders live in:

    ComfyUI/models/text_encoders/    # also readable as models/clip/
    

    Where people get burned

    It selects names. It does not validate anything. Nothing checks that the file is a real text encoder, or that it matches the model you're about to sample with - a wrong pick fails later and further away, at the encoder or the sampler, where the error is less obvious.

    If the dropdown comes up empty, there's nothing in models/text_encoders (a .gguf encoder goes in the same folder, not a special one). The file list is cached and only re-checked when a folder's modification time changes, so after dropping files in, hit refresh or restart before re-adding the node.

    And the usual plumbing tax: once you've wired a selector into a loader, the string you picked lives in your node, not the loader's widget. Rename the file on disk and saved workflows keep the old name. Also worth knowing - ComfyUI's own "widget control mode" setting, switched from After to Before, makes widget values reliably reflect what actually runs. Set that once per install if you're going to be shuffling model choices around.

    CategoryPractical-Tools/loaders

    Inputs (1)

    NameTypeDefaultDescription
    clip_nameCOMBO0 options:

    Outputs (2)

    NameTypeDescription
    clip_nameSTRING—
    model_typeINT—