ComfyUI Node

VAE Passthrough

A clean lane for your decoder

By wenchengxiang·Created about a month ago·Updated a day ago· 1
VAE Passthrough
  • vae
  • vae

VAE Passthrough relays a VAE - the decoder/encoder object that turns latents into pixels and back - from its input to its output untouched. No swap, no load, no change. It's one of the pack's generated passthrough family, and its whole reason to exist is graph housekeeping rather than data transformation.

Why bother routing a VAE through a node that does nothing? Two reasons, and they're the same two that justify every passthrough. First, tidiness: your VAE usually lives next to your checkpoint loader in the top-left of the canvas, but it's consumed by the VAE Decode and by a VAE Encode (if you're doing img2img or latent round-trips) and possibly by a Save Image node that wants the VAE for metadata. Those are long wires running the full width of your workflow. A passthrough near each consumer turns one monster wire into two short hops and gives the graph a labeled waypoint. Second, single-source discipline: route your one VAE through a passthrough and branch all consumers off that single output - now there's exactly one place to look (and one place to unplug) when you want to test a different VAE without rewiring four connections.

It's also handy as a forced boundary. Some workflows swap the VAE at runtime - a separate VAE loader feeding the decode path while the checkpoint's built-in VAE feeds training or preview paths. A passthrough makes those lanes explicit: "this branch gets the dedicated VAE, that branch gets the checkpoint's." When you later come back to a graph you haven't touched in a month, explicit beats implicit every time.

How it works

Mechanically it's the standard passthrough pattern: vae is an optional, forceInput VAE socket; the node returns whatever it received, or None if nothing's connected. The optional-ness means an unwired passthrough won't crash your load - it just emits None, which is the plumbing layer's universal "not connected" signal. One input, one output, both named vae, both type VAE. Nothing to configure.

How to install it

Part of ComfyUI-Practical-Tools by wenchengxiang. ComfyUI Manager → search ComfyUI-Practical-Tools → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/wenchengxiang/ComfyUI-Practical-Tools

No dependencies beyond the standard library, nothing to download.

Common issues

  • "The decode failed after I added it." Almost always an unwired input. The passthrough happily emits None; your VAE Decode then fails loudly. Make sure the VAE wire is actually connected to the passthrough's input, not just floating near it.
  • It's not a VAE loader. If you expected this to load a .safetensors VAE, you want a dedicated VAE loader node. This only relays what it's given.
  • Not a switch. It can't pick between two VAEs. If you need "use VAE A or VAE B depending on a condition," you want an A/B switch - a passthrough just passes through.
CategoryPractical-Tools/Passthrough

Inputs (1)

NameTypeDefaultDescription
vaeoptVAE

Outputs (1)

NameTypeDescription
vaeVAE