Nodes/ComfyUI-TinyBreaker/💪TB | Tiny Decode
ComfyUI Node

💪TB | Tiny Decode

Getting your latent back into pixels without the VRAM spike

By martin-rizzo·Created 2 years ago·Updated about a year ago· 42
💪TB | Tiny Decode
  • latent
  • vae
  • image
tile_size512px
overlap100%

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, 128px to 1024px, default 512px. Lower = less memory but potentially lower quality.
  • overlap - tile overlap, 0% to 100%, default 100%. 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.

Category💪TinyBreaker/latent

Inputs (4)

NameTypeDefaultDescription
latentLATENTThe latent representation to decode back into image.
vaeVAEThe VAE model used for decoding the latent representation.
tile_sizeCOMBO512pxThe 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.
overlapCOMBO100%The percentage of overlap between adjacent tiles.

Outputs (1)

NameTypeDescription
imageIMAGEThe decoded image.