Load Checkpoint or Diffusion Model
One loader for two kinds of model
- model
- clip
- vae
Modern ComfyUI has a weird seam in it: old-style checkpoints (the complete model files, VAE and text encoder baked in) and new-style diffusion models (bare UNet-style weights, no text encoder, no VAE - think Flux and friends) are stored in different folders and loaded by different nodes. Most people end up with two loaders in their workflow or swap nodes by hand depending on the day. Load Checkpoint or Diffusion Model is one loader that looks at which folder the file lives in and loads it the right way, automatically.
The mechanism is where this node earns its keep. It lists both checkpoints/ and diffusion_models/ in one dropdown, then branches on which one you picked:
- Checkpoint path: it calls ComfyUI's standard
load_checkpoint_guess_config, which guesses the architecture from the file and returns the model, CLIP, and baked-in VAE. - Diffusion model path: it loads the bare weights with
load_diffusion_model, then loads the CLIP from the separatetext_encodersfolder and the VAE fromvae. There's no baked VAE to lean on, so the node validates that you've picked both - if you try to load a diffusion model withclip_name: Noneorvae_name: None, it refuses with a clear error instead of exploding halfway through the graph.
In both cases it applies the clip_skip (a negative number, default -2, range -9 to 0) by cloning the CLIP and skipping that many layers - which is an SD-family concept; see concepts.md for why the LLM-encoder models (Flux, Z-Image) don't have clip skip at all.
The inputs that matter:
model_name(required) - dropdown of every checkpoint and diffusion model. This is the one you'll actually change.clip_type(required) - ComfyUI'sCLIPTypelist (stable_diffusion, flux, sd3, hunyuan_video, ltxv, …), 35 choices. This matters for diffusion models, where you're telling it what the separate text encoder is for; for checkpoints the type is guessed.clip_skip(required) - default-2, the classic anime-model preference.clip_name/vae_name(optional) - the separate text encoder and VAE files. Mandatory in practice when the model is a diffusion model - the validation error will tell you exactly that.
Outputs are the standard trio: model (MODEL), clip (CLIP), vae (VAE) - wire them into your sampler, text encoder, and VAE decode as usual.
Honest takes:
- It's a convenience loader, not a super-loader. It won't handle every exotic case the specialist nodes do, and for checkpoints it's mostly a wrapper around ComfyUI's own loader with a combined dropdown. The real value is the diffusion-model branch: one place, clear validation, no more "which loader does this need" archaeology.
- Diffusion models are the modern reality. More and more releases ship as bare diffusion weights + separate encoder, so this node is forward-looking rather than retro. If you mainly run SDXL checkpoints, it's a nice-to-have; if you run Flux-class models, it's the daily driver.
- No frontend JS. Unlike the pack's editor nodes, this one is pure Python, so it behaves the same on the legacy canvas and Nodes 2.0.
The pack (2daadv/ComfyUI-GadgetNodes, MIT, one developer, brand new with no community reputation yet) installs via ComfyUI Manager - search "GadgetNodes" - or git clone https://github.com/2daadv/ComfyUI-GadgetNodes into custom_nodes/, pip install -r requirements.txt, restart. It sits in Gadget/model next to the preset loader and the metadata editors. If you've ever stared at a "file not found" because you dragged a diffusion model into a checkpoint loader, this node is the fix.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: | |
| clip_type | COMBO | 35 options: stable_diffusion, stable_cascade, sd3, stable_audio, hunyuan_dit, flux, +29 | |
| clip_skip | INT | -2-9–0 | — |
| clip_nameopt | COMBO | 1 options: None | |
| vae_nameopt | COMBO | 1 options: None |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |