Apply Tiled Diffusion
Mooshie's Apply Tiled Diffusion
- model
- MODEL
If you've ever pushed SDXL past 1024 or Flux past 1 megapixel and watched the image tile up like a bathroom wall - duplicate hands, repeated faces, visible grid lines - this node is the fix for that specific failure. Apply Tiled Diffusion patches your model to denoise in tiles and blend them back together, so you can generate and upscale far above native resolution on the same VRAM that barely fit the single pass. No API, no key, no extra packages. Just a model patch.
What it actually is
The name says "tiled diffusion," but the more useful framing is model patch. It sits in model_patches/unet, takes a MODEL in, gives a MODEL out, and does nothing at generation time on its own - it decorates your checkpoint so that every denoising step inside the KSampler runs tiled. Wire it between your model loader and your sampler and it quietly takes over. Bypass it and you get normal single-pass sampling back.
It's the same family as Ultimate SD Upscale and the A1111 Tiled Diffusion extension that's been a staple of big-image workflows since 2023, but self-contained: a standalone export of the tiled diffusion node from MooshieUI, a beginner-friendly ComfyUI front-end, published by request. The author's own disclaimer is worth quoting: "provided as is, with no promise of maintenance or support." Treat it as a solid utility, not a project you should stake your workflow on.
How it works
At each denoising step, the node checks whether the latent fits inside your tile size. If it does, it just runs normal sampling - useful behavior, not a bug. If it doesn't, it splits the latent into tiles, denoises each one independently, and stitches them. Spatial conditioning travels with the tiles too, so inpaint masks and ControlNet conditions get cropped per tile instead of drifting out of alignment. And because it reads the model's latent downscale ratio rather than assuming 8x, it also handles 5D latents - the temporal B,C,T,H,W format Anima and other COSMOS-based models use, which is a rarity among tiled-diffusion nodes.
Two methods, and the choice matters:
- MultiDiffusion is the default and the one you want for quality. Tiles overlap, and the overlapping regions are merged with a cosine-feathered (raised-cosine) mask - a weighted blend instead of a hard cut, so seams just don't form. More overlap, smoother blends, slower generation. Best quality, full stop.
- SpotDiffusion is the speed trick: no overlap at all. Instead, each denoising step randomly circular-shifts the whole latent by a seeded offset, tiles it cleanly, denoises, and shifts back. The seams land in different places every step, so they average themselves out. Fastest, but the README flags it as experimental - and for good reason, since it's harder to reason about what it's doing to your image.
The inputs that matter
Only four, and all required - this is about as close to a plug-and-play node as the category gets:
- method -
MultiDiffusionorSpotDiffusion. Multi unless you're chasing speed. - tile_width / tile_height - set these to your model's native resolution: 512 for SD 1.5, 1024 for SDXL and Flux, matching Anima's ballpark. Getting this wrong is the most common mistake; tiles are what the model is comfortable drawing, so make them the size it was trained on.
- tile_overlap - 128 by default, in pixels. Higher = smoother seams and slower. SpotDiffusion ignores it entirely.
The single output is a MODEL - the patched clone - which plugs straight into your KSampler's model input. Nothing else in your graph changes.
Installing it
ComfyUI Manager: search "Mooshie Tiled Diffusion" and install. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/Mooshieblob1/ComfyUI-MooshieTiledDiffusion
Then restart ComfyUI. That's the whole install - the only dependencies are torch and the ComfyUI API, which you already have. It's GPL-3.0, derived from ComfyUI itself, so keep that in mind before shipping anything commercial.
Where people get burned
The maintenance caveat above is the big one - it's a thin single-node export, and if a future ComfyUI release breaks the wrapper API it may sit broken for a while. Also remember tiling is a trade, not a free lunch: it's noticeably slower than a single pass because you're doing multiple forwards per step, and the payoff is only real past roughly 2.4 MP, where a single pass tends to show artifacts. For upscaling specifically, you'll get much more faithful results pairing it with ControlNet Tile, which conditions each tile on the source image so tiles don't diverge and invent their own content. And if you're generating big with this and wondering why nothing changed - check your tile size. If the image fits inside one tile, the node is doing nothing at all.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| method | COMBO | MultiDiffusion | MultiDiffusion: overlapping tiles with cosine blending (best quality). SpotDiffusion: random shift per step, no overlap (fastest, experimental). |
| tile_width | INT | 1024256–4096 | Tile width in pixels. Should match model's native resolution (e.g. 512 for SD1.5, 1024 for SDXL/Flux). |
| tile_height | INT | 1024256–4096 | Tile height in pixels. Should match model's native resolution. |
| tile_overlap | INT | 1280–512 | Overlap between tiles in pixels. Higher = smoother seams but slower. Ignored for SpotDiffusion. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |