CLIPSave
The node that saves a text encoder (and splits it into pieces on the way)
- clip
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, defaultclip/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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| filename_prefix | STRING | clip/ComfyUI | — |
Outputs (0)
No outputs