IPAdapter Tiled
For when your reference and your canvas aren't the same shape
- model
- ipadapter
- image
- image_negative
- attn_mask
- clip_vision
- MODEL
- tiles
- masks
Plain IPAdapter has a quiet limitation: CLIP vision squishes your reference down to a square (roughly 224px) before it ever looks at it. Feed it a wide banner or a tall portrait and detail gets crushed in the resize. IPAdapter Tiled sidesteps that. It slices the reference into tiles, encodes each one, and applies them with matching attention masks so different regions of your generation get conditioned by different parts of the reference. The payoff is that a non-square reference keeps more of its detail, and a large or panoramic target holds together better.
This is the node you reach for when you're doing style or texture transfer onto a big or oddly-shaped image and the regular apply node is giving you mush. It's especially handy for tiled upscaling passes and wide compositions. For a normal square-ish portrait it's overkill - the standard IPAdapter node is simpler and just as good there.
How it works
It's still an IPAdapter apply at heart: it patches your model with image conditioning and returns a patched MODEL. The difference is the front end. Instead of one squashed encode, it tiles the image, runs each tile through the encoder, and builds masks so each tile's influence lands in the right spot. That's why this node has three outputs where most apply nodes have one.
Inputs and outputs worth knowing
The three outputs:
MODEL- the patched model, goes to your sampler like always.tiles(IMAGE) andmasks(MASK) - the actual tiles it cut and the masks it built. These are there so you can preview what it did - wire them into a Preview Image and you'll see the slicing. Genuinely useful for understanding why a result looks the way it does.
The inputs a beginner actually touches:
image- your reference. This is the one getting tiled.weight- strength, default 1.0. Same rule as everywhere: ease down toward 0.8 if the prompt stops mattering.weight_type- the profile enum (linear, the ease curves,style transfer,composition, etc.).style transferis a good pick if you only care about carrying the look across.sharpening- a tiled-specific knob (0 to 1) that sharpens the encoded tiles a touch. A little goes a long way; leave it low.
combine_embeds, start_at / end_at, and embeds_scaling behave as they do across the pack - how multiple embeds merge, when the adapter is active, and the injection math. Optional attn_mask, image_negative, and clip_vision are there for masking, a negative reference, and feeding the encoder explicitly.
Installing the pack
ComfyUI Manager: search ComfyUI IPAdapter plus, install, restart. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus
then restart. Keep ComfyUI current - this pack is picky about that. The CLIP vision encoders live in ComfyUI/models/clip_vision and the adapter weights in ComfyUI/models/ipadapter; make the second folder if it doesn't exist. Unified Loader needs exact filenames.
Where people get burned
Same headline gotcha as the rest of the family: the ClipVision/IPAdapter mismatch. A tensor-shape error on queue means the encoder and adapter don't belong together - SD 1.5 wants ViT-H, the bigG/vit-G models want their own encoder. It's the first thing to check, always.
The tiling-specific trap is expecting magic on a subject that genuinely needs to be one coherent thing - a single face, say. Tiling can fracture a subject across tiles and give you a faintly patchwork look. Tiled shines on texture and style spread across a large area; it's the wrong tool for locking a single small subject's identity. And keep in mind the pack is SD 1.5 / SDXL only and in maintenance mode now - great on those bases, absent on Flux and newer.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–3 | — |
| weight_type | COMBO | 15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9 | |
| combine_embeds | COMBO | 5 options: concat, add, subtract, average, norm average | |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| sharpening | FLOAT | 0.000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| image_negativeopt | IMAGE | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| tiles | IMAGE | — |
| masks | MASK | — |