ComfyUI Node

SDXL 16ch Loader

The only loader that makes a 16-channel-VAE SDXL checkpoint render anything but static

By NeuroSenko·Created 2 years ago·Updated 11 months ago· 7
SDXL 16ch Loader
    • MODEL
    • CLIP
    • VAE
    ckpt_name

    If you downloaded an SDXL checkpoint that was trained with a 16-channel VAE and loaded it with the stock Load Checkpoint node, you already know the problem: noise, flat colour, or a shape-mismatch error at the first EmptyLatentImage. The SDXL 16ch Loader exists to make exactly those checkpoints work. It looks and behaves like the normal loader - same three outputs, same ckpt_name dropdown - but it tells ComfyUI's sampler to live in a 16-channel latent space instead of SDXL's usual four.

    That distinction is the whole game. A VAE from one channel count plugged into a model that expects another doesn't give you a subtly wrong image; it gives you garbage, because the latents literally have a different number of channels. SDXL's VAE encodes 4 channels, Flux's encodes 16, and a handful of community experiments - like the SDXL-with-Flux-VAE finetunes that started showing up in mid-2025 - retrain the model to denoise in that wider latent space for more retained detail. The stock loader can't handle those. This node can.

    How it works

    Under the hood it's a thin wrapper around ComfyUI's own load_checkpoint_guess_config, so the model, CLIP, and VAE all load exactly as normal. The trick is what happens next: it clones the model and patches two things on it.

    • latent_format is set to latent_formats.Flux(), which is what tells the sampler how many channels to denoise in - 16 for Flux's format, and therefore 16 for your checkpoint.
    • concat_keys is set to (), so nothing extra gets concatenated onto the latents the way a real Flux model would expect.

    The result is that the sampler produces 16-channel latents that your 16-channel VAE can actually encode and decode. One patch, and the whole pipeline lines up.

    The inputs and outputs

    There is exactly one input:

    • ckpt_name - the checkpoint dropdown, same list you see in every other loader (anything in ComfyUI/models/checkpoints).

    And the three outputs you already know from Load Checkpoint, in the same order:

    • MODEL → into KSampler (or the sampler's model input).
    • CLIP → into CLIP Text Encode for your positive/negative prompts.
    • VAE → into VAE Decode at the end.

    Swap the stock loader for this one in an existing SDXL workflow and nothing else has to change. That's the point - it's a drop-in replacement, not a new paradigm.

    Installing it

    The pack is tiny and has zero dependencies - it only imports ComfyUI's own modules and torch, so there's no requirements.txt to fight with. Install via ComfyUI Manager (search for "ComfyUI SDXL 16ch Loader", or just "SDXL 16ch") and restart, or clone it by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/NeuroSenko/ComfyUI-SDXL-16ch-loader
    

    Then restart ComfyUI. The node sits in the loaders category, right next to Load Checkpoint. No model files to download - the node uses whatever checkpoint you point it at.

    Where people get burned

    The trap is assuming it's a magic switch. It only helps if your checkpoint genuinely uses a 16-channel VAE. Throw a normal SDXL checkpoint through it and you'll get output that's just as broken as putting a 16-channel model through the stock loader, because now the sampler and the VAE disagree in the other direction. Know your model. The other thing worth knowing: this is a niche node from a tiny pack, so when a downloaded workflow shows a missing "SDXL 16ch Loader", it's a strong signal that workflow was built around a 16-channel SDXL finetune - and this node is exactly why the pack exists. If a regular SDXL checkpoint errors on you here, take it out and use the standard loader; the answer to most loading problems is still "your VAE doesn't match your model," not "install another node."

    Categoryloaders

    Inputs (1)

    NameTypeDefaultDescription
    ckpt_nameCOMBOThe name of the checkpoint (model) to load.

    Outputs (3)

    NameTypeDescription
    MODELMODELThe model used for denoising latents.
    CLIPCLIPThe CLIP model used for encoding text prompts.
    VAEVAEThe VAE model used for encoding and decoding images to and from latent space.