💪TB | Tiny Decode
Getting your latent back into pixels without the VRAM spike
- latent
- vae
- image
Every diffusion generation ends the same way: a latent tensor has to become pixels, and a VAE has to do the decoding. 💪TB | Tiny Decode is the pack's version of that final step, and like its sibling Tiny Encode, it decodes in tiles so the memory footprint stays small enough for the low-VRAM cards TinyBreaker is designed for.
The name undersells the useful bit, honestly. The interesting part isn't the decode itself - it's that this node will happily decode a latent for a 1024px-or-larger image on hardware where a single full-frame VAEDecode call would spike your VRAM and possibly fall over. It's the same trade that makes tiled approaches the standard answer to "I want big output on a small GPU."
Inputs and the knob that matters
- latent - the latent you want turned into an image.
- vae - the VAE to use, typically the one from
LoadTinyBreakerCkpt. - tile_size - tile size in output pixels,
128pxto1024px, default512px. Lower = less memory but potentially lower quality. - overlap - tile overlap,
0%to100%, default100%. Higher overlap blends tile boundaries away at the cost of redundant work.
The output is a single image tensor you can wire to a preview or Save Image node.
The overlap setting is the one beginners actually flip. At 100% the adjacent tiles share a lot of real estate, and the node's internal gradient mask stitches them so smoothly you can't find the seams. Drop it to 0% and you can - a telltale grid of slightly-off tile boundaries, exactly the artifact the tooltip warns about. So if your decoded image has visible tiling, raise overlap before you blame the VAE.
How it fits the bigger graph
You'll mostly hit this node at the tail of a workflow: sample with 💪TB | Tiny Dual Sampler, then Tiny Decode, then save. It's also how you'd eyeball a latent mid-pipeline, and it's what the pack's upscaler uses internally to turn refined tiles back into a finished high-res image. If you decode early, then re-encode later (say, to feed an external img2img step), you're paying a lossy round-trip - the pack's transcoder nodes exist to skip that where possible, but that's a different article.
Install
Standard pack install, nothing exotic:
cd ComfyUI/custom_nodes
git clone https://github.com/martin-rizzo/ComfyUI-TinyBreaker
or search "tinybreaker" in ComfyUI Manager, then restart. No pip dependencies - the pack ships zero requirements.txt, so no version fights. Just remember the two model files (the tinybreaker_prototype1.safetensors checkpoint and the t5xxl_fp8_e4m3fn text encoder) are what actually makes any of these nodes useful.
Worth knowing: if your final image looks slightly soft after a tiled decode, it's usually the tile size talking, not the VAE. nudge tile_size up (and overlap stays at 100%) and you'll often recover the crispness. For anything under 1K output, honestly, the stock VAEDecode is simpler - reach for Tiny Decode when the image is big enough that your card starts complaining.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | The latent representation to decode back into image. | |
| vae | VAE | The VAE model used for decoding the latent representation. | |
| tile_size | COMBO | 512px | The size of the tiles used to divide the input latent into smaller regions for processing, expressed in pixels of the output image. A lower tile size reduces memory usage but may result in lower image quality. |
| overlap | COMBO | 100% | The percentage of overlap between adjacent tiles. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | The decoded image. |