KSampler + Tiled Decoder
Sample and VAE-decode in one node, with optional tiling
- model
- sampler_info
- positive
- negative
- latent_image
- vae
- tiling_info
- latent
- image
Take Sage_KSampler, bolt a VAE Decode onto the end of it, and give it the option to decode in tiles instead of all at once. That's this node. It exists because sample-then-decode is such a common pairing that wiring a separate VAE Decode node after every KSampler is just extra clutter - this collapses the two steps and hands you back both the raw latent (if you want to chain something else off it) and the finished image.
Why the tiling option exists
Decoding a large latent through the VAE in one shot is one of the more common ways to run out of VRAM, especially after an upscale pass - the decode step, not the sampling step, is often what blows your memory budget on a big image. Tiled VAE decoding is the standard community fix: split the latent into overlapping tiles, decode each one separately, stitch the result back together. It's slower but uses a fraction of the memory. This node makes that optional and automatic - plug a Tiling Info node (a separate Sage node, not covered here) into tiling_info and it switches to tiled decoding; leave it disconnected and you get a normal, single-pass decode.
Inputs and outputs
Same core inputs as the plain Sage_KSampler, plus a VAE and the tiling option:
model,sampler_info,positive,negative,latent_image- identical to the standard node;sampler_infois Sage's separate settings bundle, not individual steps/CFG/sampler widgets on this node.vae- required here, since this node does the decode itself.denoise- 0–1, default 1.tiling_info- optional. Connect it to get tiled decoding; leave it empty for a normal full-frame decode.
Two outputs: latent (the denoised latent, same as the plain KSampler, in case you want to chain further latent-space operations before decoding elsewhere) and image - the actual decoded picture, ready for a Save Image node.
Installing it
ComfyUI Manager: search Sage Utils, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/arcum42/ComfyUI_SageUtils
cd ComfyUI_SageUtils
pip install -r requirements.txt
Restart ComfyUI after. This node itself needs no extra models - just whatever checkpoint/VAE you're already using.
Common issues
If you're getting an out-of-memory error on decode and haven't wired up tiling_info, that's the first thing to try - you're currently doing a full-frame decode by default, and the tiled path exists precisely for this situation. Conversely, if your images look slightly seamy or show faint grid lines at large output sizes, that's a known tradeoff of tiled decoding in general (tile-boundary artifacts) - worth checking whether you actually need tiling at your current resolution before reaching for it reflexively.
Remember sampler_info still needs a Sampler Info node feeding it, same as the plain KSampler - this node doesn't have its own steps/CFG/sampler widgets, so connecting a VAE without connecting sampler_info still leaves you with nothing to sample.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The model used for denoising. | |
| sampler_info | SAMPLER_INFO | Sampler configuration for the KSampler. | |
| positive | CONDITIONING | Positive conditioning for generation. | |
| negative | CONDITIONING | Negative conditioning for generation. | |
| latent_image | LATENT | The latent image to denoise. | |
| vae | VAE | The VAE used to decode the denoised latent. | |
| denoise | FLOAT | 1.000–1 | The denoising strength. |
| tiling_infoopt | TILING_INFO | Optional tiling parameters for the decoder. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | The denoised latent output. |
| image | IMAGE | The decoded image generated by the VAE. |