Model Loader
One dropdown instead of hunting five model files
- model
- model
- clip
- vae
- audio_vae
- tae
- steps
If you've tried to run Qwen Image 2512, Z-Image Turbo, LTX Video 2.3, WAN 2.2, or Flux2 Klein, you know the pain. These aren't SD checkpoints anymore - the new generation ships as separate pieces: a diffusion model file, a text encoder, a VAE, sometimes a second VAE, plus the right step count and a turbo or distilled LoRA on top. That's five files to find and four nodes to wire, and the exact recommended settings live in five different READMEs. ModelLoader exists to collapse all of that into one dropdown.
How it works
The pack ships a hardcoded table (in model_configs.py) for exactly five models. For each one it knows which files to look for, and it finds them by filename prefix rather than asking you to browse. Pick "Qwen Image 2512" and it scans your diffusion_models folder for something starting qwen-image-2512, your text_encoders for qwen25-vl, your vae folder for qwen-image-vae, and wires the whole chain itself.
Two load strategies under the hood. Most of the five are "components" - it calls ComfyUI's load_diffusion_model, loads the right text encoder via load_clip with the correct CLIPType (qwen_image, ltxv, wan, flux2), then the VAE. LTX Video 2.3 is special: it first tries a checkpoint named ltx-2.3*, and only falls back to individual components if that's missing. And it goes further than a stock loader - pick a speed and it finds the matching LoRA (Qwen's 2-step "wuli turbo" or 8-step lightning, LTX's distilled LoRA) and applies it at full strength, then hands you the step count that setting demands. All the correctness is encoded; you don't have to remember anything.
The inputs that matter
- model - a
UN_MODELtype. This is the trap: it's not a file picker. It must come from the pack's ModelSelector node, which is the dropdown of the five supported models. Wire ModelSelector → ModelLoader or the input stays empty. - weight_dtype -
default, or one of three fp8 options (fp8_e4m3fn,fp8_e4m3fn_fast,fp8_e5m2). The_fastvariant also flips onfp8_optimizations. Great for squeezing big models like Flux2 Klein onto a 12 GB card; if a model doesn't take fp8 well you'll see NaN garbage, so default is the safe starting point. - speed -
defaultplus whatever your model offers. The options change per model: Qwen Image 2512 shows2-stepand8-step, LTX Video 2.3 showsdistilled, Z-Image and WAN show onlydefault. The brief's "4 choices" is the union across all models, not what you'll see on any one of them.
The outputs
model, clip, and vae are the obvious three. Then audio_vae and tae - those are LTX Video 2.3 things (its audio and temporal autoencoders); on every other model they come back as None, which is fine. And steps, the INT that matches your speed choice - wire it straight into the sampler's steps input so the distilled path and the step count can't drift apart.
Installing it
ComfyUI Manager, search "utility-nodes", install, restart. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/stefanleuker/utility-nodes
Restart ComfyUI. There are no pip dependencies and no model downloads - this pack is pure glue over ComfyUI's built-in loaders. The real "install" is having the model files already, named to match.
Where people get burned
- FileNotFoundError with an expected prefix is the #1 failure. If your Qwen file is named
qwen_image_2512.safetensors, it won't matchqwen-image-2512and the loader bails, telling you exactly what prefix it wanted. Rename the file rather than fighting it. - A speed LoRA you didn't download. Pick 2-step without the LoRA file present and it silently falls back to default steps with only a console warning - you think you got a fast render and get a 20-step one.
- It's brand-new and hardcoded to five models. One commit, no real community footprint yet. If your model isn't in
model_configs.py, this node does nothing for you - check that table before you build your workflow around it.
For the new-model zoo this is genuinely the loader I'd reach for - it deletes an entire section of wiring. But it's a small, young pack, so treat the hardcoded table as the contract it really is.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | UN_MODEL | — | |
| weight_dtype | COMBO | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 | |
| speed | COMBO | 4 options: default, 2-step, 8-step, distilled |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| audio_vae | VAE | — |
| tae | VAE | — |
| steps | INT | — |