Nodes/zhangp365/ComfyUI-utils-nodes/Load Checkpoint with Switch
ComfyUI Node

Load Checkpoint with Switch

Skip loading the parts of a checkpoint you don't need

By zhangp365·Created 2 years ago·Updated 5 months ago· 134
Load Checkpoint with Switch
    • MODEL
    • CLIP
    • VAE
    ckpt_name
    load_modeltrue
    load_cliptrue
    load_vaetrue

    A checkpoint file usually bundles three separate things into one .safetensors: the diffusion model (UNet or DiT), the CLIP text encoder, and the VAE. Stock CheckpointLoaderSimple always loads all three, whether or not you actually need them from that file. This node is the same loader with three checkboxes bolted on - load_model, load_clip, load_vae - so you can skip the parts you're sourcing somewhere else.

    Why you'd ever want to skip a component

    The clearest case, and the one the author calls out directly: you're loading a different, better VAE with a separate VAELoader node. If your checkpoint's own VAE is going unused anyway, there's no reason to load it into memory - flip load_vae off and you save that chunk of RAM/VRAM for nothing lost. The same logic applies to load_clip if you're routing text encoding through a separate CLIPLoader/DualCLIPLoader for a different or updated text encoder, or load_model if all you actually wanted out of this checkpoint file was its VAE or CLIP component and the diffusion weights themselves are dead weight in this particular graph.

    It's a small optimization individually, but it compounds in workflows that load multiple checkpoints for different purposes (a base model plus a refiner, or a model used only to borrow its VAE) - skipping the parts you don't need across several loaders adds up.

    Inputs and outputs

    • ckpt_name - the standard checkpoint dropdown, populated from whatever's in your models/checkpoints folder.
    • load_model, load_clip, load_vae - all default true, matching stock behavior out of the box. You opt out per-component rather than opting in.

    Outputs: MODEL, CLIP, VAE - same three sockets as the stock loader. Whichever one you switched off comes through empty; don't wire it downstream expecting real weights, or you'll get an error from whatever consumes it rather than a helpful message pointing back to this node.

    Installing it

    Via ComfyUI Manager (search "ComfyUI-utils-nodes"), or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/zhangp365/ComfyUI-utils-nodes
    

    Restart ComfyUI. This is a thin wrapper over core loading logic, no extra dependencies of its own.

    Where this bites people

    The failure mode is always the same shape: you toggle off a component you thought you didn't need, then wire its output into something downstream anyway - a sampler expecting a real MODEL, or a VAEDecode expecting a real VAE - and get a confusing crash several nodes away from the actual cause. When you hit that, the first thing to check isn't the node that errored, it's whether one of these three switches upstream is off. It's a one-line fix once you spot it, but it doesn't announce itself; trace the input back to its source before assuming the error is where it appears to be.

    Categoryutils/loaders

    Inputs (4)

    NameTypeDefaultDescription
    ckpt_nameCOMBO0 options:
    load_modeloptBOOLEANtrue
    load_clipoptBOOLEANtrue
    load_vaeoptBOOLEANtrue

    Outputs (3)

    NameTypeDescription
    MODELMODEL
    CLIPCLIP
    VAEVAE