TAESD VAE Decode
Peek at any latent in a few milliseconds (no, that input isn't a real VAE)
- latent
- IMAGE
The name is a lie, but a useful one. OtherVAE_Taesd ("TAESD VAE Decode") doesn't load another VAE and it isn't an alternative to VAEDecode. It runs the tiny autoencoder preview decoder - the same one ComfyUI uses to paint those low-quality preview thumbnails on the KSampler while you generate - and hands you the result as a real IMAGE you can wire anywhere in your graph.
Why bother? Because decoding a latent with the full VAE is genuinely expensive, and most of the time you don't need that cost yet. You want to check what the sampler has cooked up before you commit to an upscale, or peek at an intermediate latent mid-workflow, or just eyeball a batch without paying full decode every time. TAESD does that in a few milliseconds on GPU. The honest caveat: if your only goal is watching progress, the KSampler's built-in preview already does exactly this for free - you don't need the pack. This node exists for the one case where you want that fast preview as a node in the graph, not as a side panel.
How it works
The node is a thin wrapper around ComfyUI's own comfy.taesd.taesd.TAESD - madebyollin's Tiny AutoEncoder for Stable Diffusion. That's a miniature network (a few 64-channel conv blocks per stage) trained to approximate the SD VAE's latent space with a tiny fraction of its parameters. The source takes your latent, multiplies by 0.18215 (the SD 1.5 scaling factor - note the hardcoded SD1.5-ness), runs the tiny decoder, and normalizes to 0..1. Since the decoder has three 2× upsample stages, a 512×512 SD1.5 latent decodes to a 512×512 image: full resolution, just soft and detail-free. It's a preview, not a render.
The two inputs that matter
There are only two, both required, and one is a trap:
latent(LATENT) - the latent tensor from a sampler's LATENT output, or from any node that produces one.vae(dropdown) - not the real VAE, despite the name. It lists files fromComfyUI/models/vae_approx/, and it's picking which tiny TAESD decoder to use. For SD 1.5 that'staesd_decoder.pth. Empty folder, empty dropdown.
The single output is IMAGE - a normal image tensor, so it feeds anything that takes an image: PreviewImage, SaveImage, or even a VAEEncode for a fast img2img round-trip.
Installing it
ComfyUI Manager: search "OtherVAEs" and install the ComfyUI-OtherVAEs pack, then restart. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/M1kep/ComfyUI-OtherVAEs
Then restart ComfyUI. There are no extra Python dependencies - the pack's only files are __init__.py and a 44-line nodes.py, and it leans entirely on ComfyUI core. What you do need is the model file: drop taesd_decoder.pth into ComfyUI/models/vae_approx/ (that folder ships as just a placeholder note). Grab it from madebyollin's TAESD HuggingFace repo; older ComfyUI installs bundled it already.
Where people get burned
- Empty
vaedropdown. There's nothing inmodels/vae_approx/. Drop the.pthfile in and refresh - this is the single most common "why is this broken" for any TAESD preview node. - Wrong architecture. This is an SD 1.5 node. The
0.18215scale is baked in, so feeding it an SDXL or Flux latent gives muddy, wrong-looking output. SDXL wantstaesdxl_decoder.pthand a different scale factor, Flux wantstaef1_decoder- neither of which this node handles correctly. Don't use it as a generic decoder. - It's preview-grade. Expect soft, smeared output with none of the fine texture the real VAE gives. That's the whole point - don't be tempted to save the result as your final image.
- Batch behavior. The source decodes only the first latent of a batch (
latent['samples']... [0]), so a multi-image batch shows you just the first one. - Dormant pack. Last commit was October 2023, a single-node repo. It's stable precisely because it does so little, but treat it as a novelty utility rather than something to build a workflow around.
Want fast previews without the mislabeled input? Wire the built-in preview and skip the pack entirely. Want a real alternative VAE? Different node, different pack. This one is the quick look under the hood.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| vae | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |