Nodes/ComfyUI-Universal-Model-Loader/Universal MODEL Loader
ComfyUI Node

Universal MODEL Loader

The Universal MODEL Loader does what the name promises

By Zoltar358-ComfyUI·Created 27 days ago·Updated 8 days ago· 1
Universal MODEL Loader
    • model
    • clip
    • vae
    • loaded_info
    • clip2
    • vae2
    model_typecheckpoint
    checkpoint_name
    diffusion_model_name
    diffusers_model_path
    gguf_unet_name
    weight_dtypedefault
    gguf_dequant_dtypedefault
    gguf_patch_dtypedefault
    gguf_patch_on_devicefalse
    clip_name
    clip_typeauto
    clip_devicedefault
    vae_name
    clip2_namenone
    vae2_namenone
    clip2_typeauto
    clip2_devicedefault

    You know the drill: a Flux workflow needs a UNET loader, a CLIP loader, a VAE loader, and then the video workflow needs a different combo, and the diffusers experiment needs yet another. The Universal MODEL Loader is Zoltar358's attempt to replace that pile with one node and a single dropdown up top. Pick the model type and the frontend collapses every widget that doesn't apply - a checkpoint, a diffusers folder, a diffusion model, or a GGUF UNet all load through the same door. It's not a new backend, it's a cleaner front door to the loaders you already run.

    Worth knowing before you get attached to the name: "Universal Model Loader" also floats around as a core ComfyUI roadmap item from mid-2025. That's a different thing. This is a standalone custom node pack, and right now it's new enough that you won't find much community chatter about it - judge it on whether the single-loader flow suits you.

    How it works

    Under the hood it's a thin wrapper over ComfyUI's own loaders. It imports core's nodes.py (carefully aliased so this pack's own nodes.py doesn't collide with ComfyUI's - that was literally a version 1.0.3 bug fix), then calls UNETLoader.load_unet, CLIPLoader.load_clip, VAELoader.load_vae, and comfy.sd.load_checkpoint_guess_config for checkpoints. GGUF mode is the interesting one: it finds your custom_nodes/ComfyUI-GGUF at runtime, builds a GGMLOps with your chosen dequant/patch dtypes, and hands the weights to load_diffusion_model_state_dict. No extra Python dependencies - pyproject.toml lists none, so this is the rare pack that's pure UI plus glue.

    The real magic is the frontend. A web/universal_model_loader.js extension hides irrelevant widgets the moment you change model_type, and the CLIP-type logic reads your model's filename and guesses which text encoder it needs - Krea2/KR2, Qwen, Flux.2/FK9, Wan, HiDream, LTXV, SD3, Stable Audio, and a couple dozen more. That auto-guess is the single biggest reason to use this over three hand-wired loaders.

    The inputs that matter

    • model_type - the whole point. checkpoint (from models/checkpoints), diffusers (a folder with model_index.json), diffusion_model / unet (from models/unet or models/diffusion_models), or gguf_unet. Everything else reshuffles around this.
    • clip_type - defaults to auto, which reads the model filename and picks the right encoder type. Leave it alone unless the guess is wrong.
    • clip2_name / vae2_name - both default to none. Set them only if your model family genuinely needs a second text encoder or VAE. clip2_type and clip2_device stay hidden until you pick a real second CLIP.

    The rest you'll meet when you need them: weight_dtype (fp8 options for diffusion/unet loads), the three gguf_* knobs (dequant dtype, patch dtype, patch-on-device - standard city96 controls), and clip_device if you want the text encoder parked on CPU.

    Outputs: model (MODEL), clip (CLIP), vae (VAE), then loaded_info - a STRING that summarizes what actually loaded, wire it to a text-display node when something's ambiguous - and optional clip2 and vae2.

    Installing it

    Via ComfyUI Manager: search ComfyUI-Universal-Model-Loader under Install Custom Nodes, install, restart. Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Zoltar358-ComfyUI/ComfyUI-Universal-Model-Loader.git
    

    Restart ComfyUI and hard-refresh the browser. No model downloads beyond the checkpoints you already have. GGUF mode needs one extra:

    cd ComfyUI/custom_nodes
    git clone https://github.com/city96/ComfyUI-GGUF.git
    

    Common gotchas

    • A - none found - in any dropdown means that model folder is empty (or the browser list is stale). The node's own error spells it out: put the file in ComfyUI/models/<type> and refresh.
    • For diffusion_model, unet, and gguf_unet modes you must pick the CLIP and VAE here - they don't come baked into the file like a checkpoint does.
    • gguf_unet throws a RuntimeError naming ComfyUI-GGUF if that pack isn't installed. It's an easy miss since the other four modes don't need it.
    Categorymodel/loaders

    Inputs (17)

    NameTypeDefaultDescription
    model_typeCOMBOcheckpointChoose which backend to load. The browser extension hides irrelevant fields after this selection.
    checkpoint_nameCOMBOUsed when model_type = checkpoint. Returns MODEL, CLIP and VAE.
    diffusion_model_nameCOMBOUsed when model_type = diffusion_model or unet. Returns MODEL, CLIP and VAE.
    diffusers_model_pathCOMBOUsed when model_type = diffusers. Folder under models/diffusers containing model_index.json.
    gguf_unet_nameCOMBOUsed when model_type = gguf_unet. Requires ComfyUI-GGUF.
    weight_dtypeCOMBOdefaultOnly used for diffusion_model/unet loading.
    gguf_dequant_dtypeCOMBOdefaultOnly used for gguf_unet.
    gguf_patch_dtypeCOMBOdefaultOnly used for gguf_unet.
    gguf_patch_on_deviceBOOLEANfalseOnly used for gguf_unet.
    clip_nameCOMBOCLIP/text encoder loaded for diffusion_model, unet, and gguf_unet.
    clip_typeCOMBOauto29 options: auto, stable_diffusion, stable_cascade, sd3, stable_audio, mochi, +23
    clip_deviceCOMBOdefaultDevice for the loaded CLIP/text encoder.
    vae_nameCOMBO1 options: pixel_space
    clip2_nameCOMBOnoneOptional second CLIP/text encoder output. Select none when only one CLIP is needed.
    vae2_nameCOMBOnoneOptional second VAE output. Select none when only one VAE is needed.
    clip2_typeCOMBOauto29 options: auto, stable_diffusion, stable_cascade, sd3, stable_audio, mochi, +23
    clip2_deviceCOMBOdefaultDevice for the optional second CLIP/text encoder.

    Outputs (6)

    NameTypeDescription
    modelMODEL
    clipCLIP
    vaeVAE
    loaded_infoSTRING
    clip2CLIP
    vae2VAE