ComfyUI diffusion_models vs checkpoints: Which Folder Your Model Goes In

Updated 2026-10-09

The difference between a checkpoint and a diffusion model file in ComfyUI, which loader reads which folder, what happens when a file is in the wrong one, and where GGUF goes.

Quick answer

A checkpoint is one file that carries the diffusion model together with its text encoder and its VAE. It goes in ComfyUI/models/checkpoints/ and loads with Load Checkpoint, which hands out all three at once.

A diffusion model file carries the model alone. It goes in ComfyUI/models/diffusion_models/ and loads with Load Diffusion Model. The text encoder and the VAE are separate files, in text_encoders/ and vae/, with their own loaders.

How to tell which one you have: if the model's page tells you to download a separate text encoder and VAE, the main file is a diffusion model. Wan 2.1, Wan 2.2 and HunyuanVideo all ship that way in ComfyUI's own examples, and so does MiniMax H3.

FolderLoader nodeWhat the node outputsTypical files
Foldercheckpoints/Loader nodeLoad CheckpointWhat the node outputsMODEL, CLIP, VAETypical filesSD 1.5 and SDXL models, all-in-one bundles
Folderdiffusion_models/Loader nodeLoad Diffusion ModelWhat the node outputsMODELTypical filesWan, HunyuanVideo, Flux dev, MiniMax H3
Foldertext_encoders/Loader nodeLoad CLIP, Load CLIP (Dual)What the node outputsCLIPTypical filesumt5, T5 XXL, Gemma, Qwen VL
Foldervae/Loader nodeLoad VAEWhat the node outputsVAETypical fileswan_2.1_vae, ae, hunyuanvideo15_vae_fp16

We read the folder rules from ComfyUI's source code at commit 1d2ea29, and the examples from ComfyUI's documentation and example pages, on 2026-10-09.

unet and clip are the same folders

Older guides tell you to put models in models/unet/ and text encoders in models/clip/. That still works. ComfyUI's folder_paths.py registers both names for each list:

  • diffusion_models reads models/unet/, then models/diffusion_models/.
  • text_encoders reads models/text_encoders/, then models/clip/.

The same file also maps the old names to the new ones, so a workflow that asks for unet finds the diffusion_models list. Pick one folder of each pair and keep everything there, so you do not end up with two copies of a 14 GB file.

The same model, both ways

Some models are published both as a bundle and as separate parts. The examples make the difference concrete:

ModelAs a checkpointAs separate files
ModelFlux devAs a checkpointflux1-dev-fp8 in checkpoints/, loaded with Load CheckpointAs separate filesflux1-dev in diffusion_models/, T5 XXL and CLIP-L in text_encoders/, ae in vae/
ModelMochi previewAs a checkpointall_in_one/mochi_preview_fp8_scaled, 15.84 GBAs separate filesfp8 model 10.03 GB + fp8 T5 XXL 5.16 GB + VAE 0.92 GB = 16.11 GB

The Mochi bundle is almost exactly the sum of its parts, because it is the parts.

A checkpoint does not always carry everything. ComfyUI's example for LTX-Video 0.9.5 puts ltx-video-2b-v0.9.5 in checkpoints/ but still loads the T5 XXL text encoder separately. Stable Diffusion 3.5 checkpoints also come without their text encoders. When a checkpoint leaves something out, you add a Load CLIP or Load VAE node beside Load Checkpoint.

What happens when a file is in the wrong folder

A diffusion model in checkpoints/. Current ComfyUI tries to rescue it. The console logs:

Warning, This is not a checkpoint file, trying to load it as a diffusion model only.

The model loads, but Load Checkpoint has no text encoder or VAE to hand out. The run then stops at the first node that needs one, with one of these:

ERROR: clip input is invalid: None
ERROR: VAE is invalid: None

Newer versions of the ComfyUI interface word the first one as "The CLIP input is missing or invalid. Check the connected checkpoint or CLIP loader." Older versions failed earlier, with "Could not detect model type". In 2024 a ComfyUI maintainer answered that error on a Flux file: that is not a checkpoint model, use Load Diffusion Model.

The fix is to move the file to diffusion_models/, replace Load Checkpoint with Load Diffusion Model, and add Load CLIP and Load VAE nodes for its text encoder and VAE. Or start from the model's official template, which already has them.

A file the loader cannot find. If the file is in neither folder of a pair, the loader's dropdown is empty or does not list it, and queuing gives an error ending in not in [] or a "value not in list" message. ComfyUI reads the folders at start-up; after copying a file, refresh the model list or restart.

Load Diffusion Model's fp8 setting

Load Diffusion Model has a weight_dtype option: default, fp8_e4m3fn, fp8_e4m3fn_fast and fp8_e5m2. ComfyUI's Flux example says setting it to fp8 halves the model's memory use. If the file is already fp8, as most video repacks are, leave it on default.

Load Checkpoint has no such option. That is one practical reason the large models ship as separate files: you can pick a smaller copy of each part.

Where GGUF files go

ComfyUI does not read .gguf files by itself; its supported extensions are .safetensors, .ckpt, .pt, .pt2, .pth, .bin, .pkl and .sft. GGUF needs the ComfyUI-GGUF custom node.

  • Its README says to put .gguf model files in models/unet/. Its code reads both unet/ and diffusion_models/, so either works.
  • Load them with Unet Loader (GGUF), not Load Diffusion Model.
  • GGUF text encoders go in text_encoders/ or clip/, and load with CLIPLoader (GGUF) or its dual variant.

A GGUF file is never a checkpoint. It replaces the diffusion model file only; the VAE stays a normal .safetensors in vae/.

Keeping models outside the ComfyUI folder

If your models live on another drive, or you share one model folder between installs, ComfyUI reads extra paths from a YAML file. The name depends on the install:

InstallFile
InstallPortable or manual installFileComfyUI/extra_model_paths.yaml, made by renaming extra_model_paths.yaml.example
InstallComfyUI Desktop, WindowsFileC:\Users\<you>\AppData\Roaming\ComfyUI\extra_models_config.yaml, or the Storage tab in settings
InstallComfyUI Desktop, macOSFile~/Library/Application Support/ComfyUI/extra_models_config.yaml

Use the same folder keys inside it: checkpoints, diffusion_models, text_encoders, vae, loras. The documentation's example still uses the old clip: key, which works for the same reason models/clip/ does. ComfyUI Desktop's documentation warns against overwriting the paths it writes at install; add to the file instead.

Related pages

GenVidKit is an independent guide. It is not affiliated with Comfy Org, city96, Black Forest Labs, Genmo, Lightricks, Alibaba or Hugging Face.

Sources

All read on 2026-10-09.