TiledIPAdapter
Why TiledIPAdapter existed, and why you should use unfold_batch instead
- model
- positive
- negative
- latent_images
- ipadapter
- clip_vision
- images
- LATENT
The first thing you should know about TiledIPAdapter: the author killed it. The README opens with a warning that this project "will not be maintained any more," and the whole pack is one node, explicitly a proof of concept. So before you wire it into anything, understand what it was for - tiled upscaling where IP-Adapter, not ControlNet Tile, keeps each tile faithful to the source - and why nobody needs it in 2026.
What it actually does
The idea is simple and clever. Normal tiled upscaling cuts a big image into tiles, runs diffusion on each tile, and blends the results back together. The classic problem is tile drift: each tile's sampler wanders off, and you get seams and patchwork. The usual fix is ControlNet Tile, which feeds the original tile in as a condition. This node was the IP-Adapter version of that trick.
Here's the mechanism, straight from the source. A regular IP-Adapter pass takes a batch of reference images and conditions the model once. This node instead loops over each (latent, image) pair: it applies IP-Adapter with just that one image, runs a full KSampler on that tile's latent (img2img-style, controlled by denoise), and concatenates the resulting latents into one batch. One conditioned model per tile, one sampling pass per tile.
You feed it tiles, you get improved tiles out, and they're each pinned to their own local reference image instead of one global one. That's the entire node - about 50 lines of Python that import IPAdapterApply from cubiq's pack and wrap the stock common_ksampler.
The inputs that matter
Two inputs do all the work, and they must be batch-aligned:
latent_imagesandimages- a batch of tile latents and a matching batch of tile images, one pair per tile. The node indexes them in lockstep, so if the batch sizes don't match it throws anIndexError. If you're splitting an image manually, keep the pairs in order.ipadapter_weight- how hard the reference image conditions each tile. Default is 1.0, which is hot for IP-Adapter (the usual style-transfer range is 0.3–0.8). Drop it if tiles stop looking like the source.
The rest is standard sampler furniture: seed, steps, cfg, sampler_name, scheduler, positive, negative, and denoise (1.0 = full redraw per tile, and for upscaling you want it lower - 0.3–0.4 is the safer end). The ipadapter and clip_vision sockets take the objects from cubiq's IPAdapterUnifiedLoader / IPAdapterModelLoader. The single output is a LATENT - the concatenated tile latents, which you VAE-decode and hand to a tile-merge node (the author's own ComfyUI_SimpleTiles provides both split and merge).
Installing it
ComfyUI Manager → search "ComfyUI_TiledIPAdapter", or:
cd ComfyUI/custom_nodes
git clone https://github.com/kinfolk0117/ComfyUI_TiledIPAdapter
Then restart ComfyUI. The catch: there's no requirements.txt, because the pack hard-imports ComfyUI_IPAdapter_plus, so cubiq's pack must already be installed or the node won't even register. The IP-Adapter weights themselves load through cubiq's loader, not this pack.
The honest recommendation
Install it only if you're curious about the mechanism. The author said it plainly in January 2024: "TiledIpadapter is no longer needed, use 'unfold_batch' instead." ComfyUI_IPAdapter_plus gained an unfold_batch toggle that does the same per-image conditioning through the regular KSampler, minus the hand-rolled loop. And IP-Adapter tiles have their own quirks worth knowing: the adapter wants square reference images (non-square tiles need the tile-splitter to square them up), and this node applies the adapter across all steps with no start/end window, which softens detail. If all you want is a faithful tiled upscale, UltimateSDUpscale or tiled diffusion with ControlNet Tile remains the more battle-tested path. TiledIPAdapter is a great little look at how the trick works - and a historical one.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28 | |
| scheduler | COMBO | 9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3 | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_images | LATENT | — | |
| denoise | FLOAT | 1.000–1 | — |
| ipadapter | IPADAPTER | — | |
| clip_vision | CLIP_VISION | — | |
| images | IMAGE | — | |
| ipadapter_weight | FLOAT | 1.00-1–3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |