Nodes/OmniNodes/VAE Decode πŸ”“
ComfyUI Node

VAE Decode πŸ”“

Turning latents back into pixels β€” the node that finishes every workflow

By TensorVizionΒ·Created 3 months agoΒ·Updated about 8 hours agoΒ· 0
VAE Decode πŸ”“
  • samples
  • vae
  • image
  • summary

Every diffusion workflow ends the same way: the sampler hands you a latent - a compressed, 4-to-16-channel tensor that nobody can look at - and something has to turn it into pixels. That something is the VAE decoder, and this node is OmniNodes' version of it. The VAE Decode from TensorVizion/OmniNodes is a thin wrapper around ComfyUI's own core VAEDecode, delegating straight to the same decode() method so the behavior is identical to the stock node. The only addition is a summary output that tells you what you just decoded.

It's the least glamorous node in the pack and one of the most load-bearing: without it, a generated latent is a dead end. It sits at the end of the sampling loop - Empty Latent Image β†’ KSampler β†’ VAE Decode β†’ Save/Preview - and it's what lets you actually see the thing you made.

Inputs and outputs

Two inputs, both mandatory:

  • samples - the latent to decode. The author's tooltip is exactly right: "The latent to be decoded."
  • vae - the decoder. Wire it from a checkpoint loader, a VAE Loader, or the Simple SDXL Loader's vae output.

Outputs: image (an IMAGE batch you can preview, save, or feed into a Video Save node) and summary (a string reporting how many images were decoded and at what resolution - e.g. "Decoded 4 image(s) at 1024x1024").

The VAE knowledge you actually need

The decoder matters more than beginners assume. The right VAE is the one your checkpoint was trained against - slapping a famous VAE onto a model that didn't use it is a classic source of weird colors and artifacts. Modern checkpoints usually bundle their own, which is why the stock behavior is fine most of the time; you reach for a standalone VAE (see the VAE Loader) when you explicitly want a different one.

One honest footnote: decoding a batch of variations from the Seed Variator at once is fast, but remember the round trip - every encode/decode cycle is slightly lossy. Decode once at the end of a workflow, not in the middle of an img2img chain you're about to re-encode.

Install

Part of OmniNodes:

cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes

Or ComfyUI Manager β†’ OmniNodes β†’ restart. No extra dependencies. Like the pack's other sampling wrappers, it's categorized under TensorVizion/Model Utilities (not a separate Sampling submenu) - the pack splits its sampling nodes across categories like that.

Troubleshooting

  • Garbage/static output - usually a VAE mismatch: the decoder doesn't match the checkpoint's latent space. Try the checkpoint's bundled VAE, or the correct standalone file.
  • Node missing from menu - restart ComfyUI fully and check the terminal [OmniNodes] lines for an import error.
  • Outputs identical to stock - correct. It's a wrapper; that's the feature, not a bug.

Reach for it when you want the pack's self-contained loop - it's the boring node that makes everything before it visible.

CategoryTensorVizion/Model Utilities

Inputs (2)

NameTypeDefaultDescription
samplesLATENTThe latent to be decoded.
vaeVAEThe VAE model used for decoding the latent.

Outputs (2)

NameTypeDescription
imageIMAGEβ€”
summarySTRINGβ€”