π π £ Tiled VAE Decode
Decode big video latents without the OOM wall β a tiled VAE that ran a 121-frame Wan clip on a GTX 970
- vae
- latents
- image
The last step of a video workflow is the one that quietly murders low-VRAM rigs. You sample fine, you watch the denoise crawl along, and then the VAE decode hits a 121-frame Wan 2.2 or HunyuanVideo latent and your card folds. This node is the answer to that: a leaner, faster take on ComfyUI's core VAE Decode (Tiled), built from the LTXV tiled decode but stripped down to a single spatial-tiling node that the author actually benchmarked on a 4GB GTX 970.
The numbers in the README are the pitch. Decoding a 704Γ704, 121-frame Wan 2.2 clip with the stock tiled node took about 16 minutes on that GTX 970. With this node, 3Γ3 tiles and overlap 4, it was 13:11 total including the VAE loading from disk. Not night-and-day, but a real win - and the per-tile logging shows exactly where the time goes.
Why you'd reach for it
Wan and Hunyuan both use big 3D causal VAEs (16Γ spatial, 4Γ temporal compression), and those decoders are memory hogs - the Wan entity in our KB notes the community floor for 720p sits around 24GB on a single card. If you're below that, decoding a long clip in one shot either OOMs or forces slow offloading. Tiling decodes small spatial chunks and blends the seams, which is the classic low-VRAM escape hatch, but ComfyUI's built-in tiled node keeps its parameters hidden and its fallback isn't tunable. This one puts the knobs on the table and, per the README, sizes tiles so the last ones are never bigger than the first - meaning you OOM early and visibly if at all, not 20 minutes into a decode.
It also works for huge single images, not just video. If you're decoding a 4K latent on a mid-range card, this is the same trick.
How it works
The node takes your latents, slices the spatial dimensions into a horizontal_tiles Γ vertical_tiles grid, decodes each tile with your VAE, then feathers the overlapping edges with a linear weight ramp and divides by the accumulated weights. That blending is why you get soft, mostly-invisible seams instead of hard grid lines. Notably, it's spatial only - no temporal tiling. That's what "Lite" means: the full LTXV node also tiles across frames, and this fork drops that to stay small and fast, so a single long clip still needs the whole temporal dimension in memory.
The source also confirms the README's claims: a ProgressBar from ComfyUI itself, proper logging.info instead of print (so the console doesn't get garbled), and per-tile timing.
The inputs that matter
Most of the node is obvious - feed it a VAE and latents, get image out. Three settings actually deserve your attention:
horizontal_tiles/vertical_tiles(default 2, max 8): the grid size. More tiles = less VRAM per pass, but more passes and more seam risk. On a 4GB card you'll be at 3Γ3 or 4Γ4; if you've got 12GB+, start at 2Γ2.overlap(default 4): how much adjacent tiles overlap, in latent units. At SD's 8Γ scale that's 32 pixels; at Wan's 16Γ it's 64. This is your seam control - see below.last_frame_fix(default off): repeats the final frame before decoding 5D video latents. A known LTXV/Hunyuan quirk is a broken last frame, and this is the toggle for it. If your clip ends on garbage, flip it.
Output is a single image tensor shaped batch Γ frames, H, W, C - wire it straight into a Save Video or PreviewImage node.
Install
Trivial, because there are no dependencies beyond ComfyUI itself - no requirements.txt, no model downloads, no keys. ComfyUI Manager: search ComfyUI-TiledVaeLite. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/hum-ma/ComfyUI-TiledVaeLite
Restart ComfyUI and the node appears under latent as π π £ Tiled VAE Decode.
Where people get burned
Seams on flat or noisy backgrounds. This is the classic tiled-VAE failure, and the community consensus (from the LTX 2.3 tiled-decode threads) is that overlap should be roughly 25β50% of the tile size - which makes the default of 4 latent units pretty small once your tiles get big. If you see faint grid lines in a sky or a uniform wall, crank overlap toward the max. Trade-off: bigger overlap means more redundant decoding, so it's slower.
Expecting it to be the default-fast path. Tiling is never faster than one clean decode; it re-decodes overlapping regions and does more total passes. If your card has the VRAM for the whole latent, plain VAE Decode wins on time and quality. This is the "my card can't" tool.
Very long clips still OOM. Because there's no temporal tiling, a 200-frame latent on a 6GB card may still die. In that case you want the full LTXV spatio-temporal tiled decode node (which this pack deliberately doesn't ship). Know which one you grabbed, and pick accordingly.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| vae | VAE | β | |
| latents | LATENT | β | |
| horizontal_tiles | INT | 21β8 | β |
| vertical_tiles | INT | 21β8 | β |
| overlap | INT | 41β8 | β |
| last_frame_fix | BOOLEAN | false | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |