CLIP Model Saver
Stop Reloading the Whole Checkpoint Just to Get Its CLIP
- clip
A checkpoint is three models in one trench coat: the diffusion model, the text encoder (CLIP), and the VAE. Normally you don't care - you load the whole file and ComfyUI sorts it out. But there's exactly one workflow where loading the whole thing is actively wasteful, and it's the one this node was built for: TensorRT.
When you compile an SDXL checkpoint into a TensorRT engine, the engine replaces the UNet - the multi-gigabyte part of the model. Sampling still needs the CLIP and VAE, and ComfyUI has no built-in "load just those bits" path. So the naive approach is: build the engine, then load the full checkpoint again on top of it, paying 6.5 GB of RAM/VRAM for a model you're not even using. CLIPModelSaver is the fix for the text-encoder half of that waste.
How it works
It's an output node: feed it the CLIP connection coming out of a Checkpoint Loader and it writes the weights to a .safetensors file via safetensors.torch.save_file - safe, no pickle, the format you want anyway. The clever part is SDXL. If the node spots keys prefixed with clip_g.transformer. and clip_l.transformer. - the two-encoder SDXL layout, where CLIP-L and OpenCLIP-G both process your prompt - it splits them into two files, name_clip-g.safetensors and name_clip-l.safetensors, stripping the checkpoint bundle prefixes so the built-in DualCLIPLoader can read them back. Anything else gets dumped as a single name_clip.safetensors.
One honest caveat from the author: only SDXL is properly tested with the standard loaders. Other architectures save without complaint, but you're on your own getting the file to reload cleanly.
The inputs that matter
Three inputs, and you'll touch two of them:
clip- the CLIP output of your Checkpoint Loader, or anything else that produces a CLIP object.output_name- defaultextracted_model. No extension: the node appends_clip.safetensors(or_clip-g/_clip-l) for you.output_folder- defaultmodels/text_encoders, which is exactly where ComfyUI's CLIP Loader looks. Only change it if your models live in a custom directory.
There are no outputs - it's a terminal save node, the kind you leave dangling on the canvas.
Install
The pack isn't in the ComfyUI Manager catalog yet, so the Manager route is via Git URL: open Custom Nodes Manager, hit Install via Git URL bottom-right, paste https://github.com/hekmon/comfyui-checkpoint-extract.git, restart. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/hekmon/comfyui-checkpoint-extract.git
Then restart ComfyUI. No model downloads, no heavy deps - the only requirement is safetensors, which ships with ComfyUI anyway. Both nodes of the pack come in the same install, so you get VAEModelSaver at no extra cost.
The honest take
This node only earns its keep if you've already committed to TensorRT - and that's a niche path in 2026. ComfyUI's TRT plugin is picky: engines are compiled for a resolution range, and the official implementation hasn't always played nice with ControlNets or LoRAs. If you're not chasing raw NVIDIA speed, this is a solution to a problem you don't have; just load the checkpoint and move on. But if you are running a TRT engine, CLIPModelSaver turns a wasteful double-load into one clean pass - build the engine and extract the CLIP from the same checkpoint load. Where people get burned: the default output_folder is relative to your ComfyUI install root, so if you use extra_model_paths to point at a separate models drive, set the folder explicitly or your freshly saved CLIP will be invisible to the loader.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| output_name | STRING | extracted_model | The model file name without extension ('_clip.safetensors' will be appended automatically). |
| output_folder | STRING | models/text_encoders | The destination folder to output the model to. |
Outputs (0)
No outputs