Nodes/ComfyUI-VAE-Utils/Load VAE (VAE Utils)
ComfyUI Node

Load VAE (VAE Utils)

A Load VAE clone with exactly one job

By spacepxl·Created 9 months ago·Updated 3 months ago· 223
Load VAE (VAE Utils)
    • VAE
    vae_name
    disable_offloadtrue

    This node looks exactly like ComfyUI's built-in Load VAE, and about 99% of the time you'd just use the built-in one. It exists for a single job: it detects the input/output channel layout of the Wan 2.1 VAE - specifically spacepxl's 2x "upscale" VAE - which the stock loader sets up wrong. That mismatch doesn't error immediately; it explodes later, at save time, as the infamous Cannot handle this data type: (1, 1, 12), |u1. If you're loading a normal SDXL or Flux VAE, close this tab and use the native node. You don't need this.

    Why anyone bothers

    Here's the context that makes it click. Wan 2.1's VAE is the decoder people drop into Qwen-family latent models (Qwen-Image, Qwen-Image-Edit, Anima, Krea 2) to undo the over-smoothing those models' native VAE trades away for text legibility. The swap is legit because Qwen froze Wan's encoder - same latent space. spacepxl then trained a Wan VAE that decodes at double resolution, so you get better texture and a free 2x. But that special VAE isn't shaped like a stock one, and the native Load VAE quietly mis-wires its channels. Load VAE (VAE Utils) is the loader that reads it correctly and hands a clean VAE object downstream. It's half of a two-node pair; the other half is VAE Decode (VAE Utils).

    The inputs that matter

    There are only two.

    • vae_name - a dropdown of the .safetensors files in ComfyUI/models/vae, same as native. It'll be empty until you actually put a VAE there. The file you almost certainly came for is Wan2.1_VAE_upscale2x_imageonly_real_v1.safetensors from huggingface.co/spacepxl/Wan2.1-VAE-upscale2x. No file, nothing to load.
    • disable_offload (BOOLEAN, default true) - whether ComfyUI is allowed to swap this VAE out of VRAM between runs. The default (true, i.e. don't offload) keeps it resident so you skip a reload stall on every decode. It's a small model, so keeping it parked in VRAM costs almost nothing; flip it off only if you're genuinely scraping the bottom of your card.

    The single output is a VAE, which you run into VAE Decode (VAE Utils).

    Installing it

    The pack ships with zero extra dependencies - the README's words: "No extra requirements outside of what ComfyUI already uses." Two ways in:

    • ComfyUI Manager: search ComfyUI-VAE-Utils, install, restart.
    • Terminal: cd ComfyUI/custom_nodes && git clone https://github.com/spacepxl/ComfyUI-VAE-Utils, then restart ComfyUI and hard-refresh with F5.

    Then download the actual VAE - this loader does nothing without a file to point at. Drop Wan2.1_VAE_upscale2x_imageonly_real_v1.safetensors into ComfyUI/models/vae/.

    Where people get burned

    • Empty dropdown. No .safetensors in models/vae, or you added it while ComfyUI was already running - drop the file in and hard-refresh (or restart).
    • Pairing it with the stock decode node. Load the upscale VAE through this loader, then send it to ComfyUI's built-in VAE Decode, and you're right back to the (1, 1, 12), |u1 crash. The loader and VAE Decode (VAE Utils) are a set; use both or neither.
    • Feeding it the wrong latents. This is a Wan-latent decoder. It works on Wan and the Qwen-family models that share Wan's latent space; it will not decode SDXL or Flux latents, whose format is completely different. If the output is noise or flat color, check that the model upstream actually produces Wan/Qwen latents.

    The honest summary: this is plumbing, not a feature. It's here so one specific high-quality VAE swap stops throwing a cryptic error - worth every second when you need it, and completely skippable when you don't.

    CategoryVAE-Utils

    Inputs (2)

    NameTypeDefaultDescription
    vae_nameCOMBO0 options:
    disable_offloadBOOLEANtrue

    Outputs (1)

    NameTypeDescription
    VAEVAE