Nodes/ComfyUI/CLIPSave
ComfyUI Node Runs on cloud

CLIPSave

The node that saves a text encoder (and splits it into pieces on the way)

By Comfy-Org·Created 4 years ago·Updated about 3 hours ago· 129,874
CLIPSave
  • clip
    filename_prefixclip/ComfyUI

    CLIPSave is the save-node for text encoders. Where Save Checkpoint bundles model + CLIP + VAE into one file, CLIPSave takes just a CLIP and writes it out as .safetensors - the tool you use after a CLIP merge, a text-encoder fine-tune, or any time you've produced an encoder you want to keep and reuse.

    It exists because of how modern checkpoints work. A "CLIP" in ComfyUI is often a stack of sub-encoders: the classic clip_l + clip_g pair in SDXL, t5xxl on the newer transformer models, mt5xl on others, and so on. You never merge or fine-tune all of those as one blob - you work on individual encoders. So CLIPSave doesn't write one file; it writes one file per encoder component it finds in the CLIP, naming each by its component and saving them into the folder you give it. Merge a CLIP, hit this node, and you get a folder of small encoder files instead of a mystery.

    How it works

    The node inspects the CLIP's state dict for the known encoder prefixes (clip_l., clip_g., clip_h., t5xxl., mt5xl., umt5xxl., and others), writes each component out as its own {prefix}_{counter}_.safetensors, and strips the module-prefix noise so the saved files load cleanly. Metadata including the workflow prompt gets embedded. It's an output node - no wires out, just files on disk.

    And like every save node in this family, it writes to your output directory, under the clip/ prefix:

    ComfyUI/
    └── output/
        └── clip/
            └── ComfyUI_clip_l_00001_.safetensors
            └── ComfyUI_t5xxl_00001_.safetensors
    
    # see what CLIPSave actually wrote:
    ls ~/ComfyUI/output/clip/
    

    The inputs that matter

    • clip (CLIP) - the encoder to save. Wire it from a Load CLIP node or from the output of a CLIP merge (CLIPMergeSimple / CLIPMergeSubtract / CLIPMergeAdd).
    • filename_prefix (STRING, default clip/ComfyUI) - folder and base name. The component suffix gets appended per encoder.

    Where people get burned

    The big one is scope confusion: this node saves only the text encoder, not a usable checkpoint. Save your merged CLIP with this and you still need the diffusion model + VAE separately to generate - you haven't made a full model, and if that's what you wanted, Save Checkpoint is the node.

    The split-into-components behavior is the second gotcha. It's correct and deliberate, but if you expected one neat myclip.safetensors, the folder of component files can look like an error. It isn't - each piece is loadable, and the whole point is that encoders travel and merge independently. If the CLIP is a single-encoder model, you get one file; if it's a stack, you get a stack of files. Same rule as every CLIP operation: the encoders must be shape-compatible if you plan to merge the results later.

    How you get it

    Ships with ComfyUI core under model/merging - no install. It's been part of the core save family since the merge tools landed.

    Categorymodel/merging

    Inputs (2)

    NameTypeDefaultDescription
    clipCLIP
    filename_prefixSTRINGclip/ComfyUI

    Outputs (0)

    No outputs