VAE Decode node in ComfyUI
VAE Decode converts the sampled LATENT into a pixel IMAGE with the VAE; VAE Decode (Tiled) does the same in tiles for very large images.
Node pack: ComfyUI core
Category: Latent
What VAE Decode does
Samplers work in latent space. VAE Decode is the step that turns the finished latent into real pixels, using the VAE from the checkpoint or from Load VAE. Its IMAGE output feeds Save Image, Preview Image, upscalers and any other image node.
Decoding a 1024x1024 SDXL latent takes a second or two and a couple of gigabytes of VRAM; at 2048 and above the memory grows quickly. VAE Decode (Tiled) splits the latent into overlapping tiles so any size decodes on any card, with a small risk of visible seams at very low overlap. ComfyUI falls back to tiled decoding automatically when the normal decode runs out of memory.
Inputs
Name | Type | What it is |
|---|---|---|
samples | LATENT | The latent from KSampler or a latent upscale node. |
vae | VAE | The VAE from Load Checkpoint or Load VAE; must match the latent family. |
Outputs
Name | Type | What it is |
|---|---|---|
IMAGE | IMAGE | The decoded picture for Save Image, Preview Image or further processing. |
AD

Skip the setup: ComfyUI workflows preinstalled on the cloud
BitVector runs ready-made ComfyUI workflows on its own GPUs. No install, no missing nodes, no red boxes. Open it on your phone or laptop and generate in a minute.
How to use VAE Decode
- Connect the KSampler LATENT to samples.
- Connect the checkpoint VAE (or Load VAE) to vae.
- Connect IMAGE to Save Image.
Settings and tips
- Use the fp16-fix VAE for SDXL to avoid black images.
- For video models, the matching VAE Decode is the same node; Wan and Hunyuan latents decode through their own VAE file.
- Tiled decode: tile_size 512, overlap 64 is a good default.
Troubleshooting VAE Decode
Black image after decode
Why it happens
NaN values from an fp16 VAE overflow (classic SDXL VAE) or a broken latent from a failed sampler.
How to fix it
Use sdxl_vae_fp16_fix or start with --fp32-vae. If the sampler produced NaNs, lower cfg or change the sampler.
Given groups=1, weight of size [...] expected input to have 4 channels, but got 16
Why it happens
The VAE family does not match the latent: an SD VAE decoding Flux latents or the reverse.
How to fix it
Use the VAE that belongs to the model that made the latent (ae.safetensors for Flux, sdxl_vae for SDXL).
Out of memory in VAE Decode
Why it happens
The image is too large to decode at once.
How to fix it
Use VAE Decode (Tiled) or let ComfyUI fall back automatically; reduce tile_size to 256 on small cards.
Visible grid seams in the decoded image
Why it happens
Tiled decode with too little overlap.
How to fix it
Increase overlap to 96 or 128, or use a larger tile_size.
AD

Run this workflow from your phone
Every workflow on this page is preinstalled on BitVector with the models and custom nodes already in place. Pick one, type a prompt, done. Zero setup, nothing to download.
Questions about VAE Decode
Why does decoding look slightly different from the preview?
The live preview uses the tiny TAESD decoder; the final decode uses the real VAE.
Can I skip VAE Decode?
Only if the next node takes a LATENT (latent upscale, another sampler). Anything that shows or saves pixels needs it.
Related nodes
Load VAE
ComfyUI core
Load VAE (VAELoader) loads a standalone VAE file from models/vae so a checkpoint with a missing or weak VAE decodes clean colours, and so split models like Flux and Wan get their decoder.
VAE Encode and VAE Encode (for Inpainting)
ComfyUI core
VAE Encode converts a pixel IMAGE into a LATENT for img2img; VAE Encode (for Inpainting) does the same while blanking the masked area so an inpainting model can repaint it.
Save Image
ComfyUI core
Save Image writes the IMAGE tensor to ComfyUI/output as a PNG, with the whole workflow embedded in the file metadata so the picture can be dragged back into ComfyUI to restore the graph.
KSampler
ComfyUI core
KSampler runs the denoising loop: it takes the model, prompts and a latent and produces the finished latent image, controlled by seed, steps, cfg, sampler, scheduler and denoise.
AD

Tired of fixing nodes? Let the cloud do it
BitVector keeps hundreds of ComfyUI workflows installed, updated and tested on fast cloud GPUs. No Python, no CUDA errors, no VRAM limits. Works from any browser.
More ComfyUI nodes
CLIP Text Encode (Prompt)
ComfyUI core
CLIP Text Encode turns a text prompt into CONDITIONING using the model text encoder. One node holds the positive prompt, a second one the negative prompt.
ComfyUI Manager
ComfyUI-Manager
ComfyUI Manager is the extension that installs, updates and fixes custom node packs and models from inside the interface, resolves missing nodes in imported workflows and snapshots your setup.
Load Checkpoint
ComfyUI core
Load Checkpoint (CheckpointLoaderSimple) opens a .safetensors or .ckpt model file and hands out the three parts every workflow needs: the diffusion MODEL, the CLIP text encoder and the VAE.
Empty Latent Image
ComfyUI core
Empty Latent Image creates the blank latent canvas (width, height, batch_size) that text-to-image sampling starts from; dimensions must be multiples of 8 and match the model family.
Load Image
ComfyUI core
Load Image reads a picture from the ComfyUI input folder (or an upload) and outputs an IMAGE tensor plus a MASK taken from the alpha channel, the starting point for img2img, inpainting, ControlNet and IP-Adapter graphs.
Load LoRA
ComfyUI core
Load LoRA (LoraLoader) applies a LoRA file to the MODEL and CLIP with separate strengths, so a style, character or concept can be added to any checkpoint without merging.

Model
Trends
.ai
© ModelTrends.ai
|
Made in Japan
|
© 2026