Easy Apply IPAdapter
Reference-image conditioning without the wiring
- model
- image
- attn_mask
- optional_ipadapter
- model
- images
- masks
- ipadapter
IP-Adapter is how you say "make it look like this" with a picture instead of a paragraph. Hand it a reference image and it injects that image's style or identity into your generation, prompt still working alongside. The catch, if you've ever built a normal IP-Adapter graph, is the node soup: an IPAdapter model loader, a CLIP-Vision loader, an InsightFace loader for the face variants, then the apply node itself, and if you pick the wrong file for your checkpoint it just errors. Easy Apply IPAdapter collapses that whole chain into one node. Pick a preset, plug in your model and a reference image, done.
It's a wrapper around cubiq's ComfyUI_IPAdapter_plus - the community-standard implementation - with the loaders folded in. The trade you're making: less flexibility, far less wiring. For most people that's the right trade.
Why you'd reach for it
Style transfer from a reference on SD 1.5 or SDXL is the bread-and-butter case: give it a painting, get your prompt rendered in that painting's look. The other big one is faces - getting a specific person into a generation without training a LoRA. IP-Adapter conditions on what things look like (semantic content), which is exactly complementary to ControlNet's where things go (edges, depth, pose), so stacking both is a classic move: IP-Adapter for identity, ControlNet for composition.
Worth knowing before you invest: upstream IP-Adapter shipped its last weights in January 2024 and cubiq's pack is in maintenance mode. It still owns image-prompting inside SD 1.5 and SDXL, but it does not load on Flux - the newer architectures route this job through PuLID, Redux, or in-context editors instead.
The inputs that matter
preset- the single most important control. It's a menu (LIGHT, STANDARD, PLUS, PLUS FACE, FULL FACE, FACEID, FACEID PLUS, COMPOSITION, a Kolors option, and a REGULAR - FLUX and SD3.5 entry among others). The preset decides which IPAdapter model, CLIP-Vision, and (for FaceID) InsightFace files get pulled - and it names its intended architecture right in the label, so read the "SD1.5 only" / "FLUX and SD3.5 only" tags and match your checkpoint. Easy-Use auto-downloads the files on first run.weight(default 1) - how hard the reference pushes. The community sweet spot: 0.6-0.8 for style, 0.3-0.5 for face similarity. Above ~0.8 the reference starts overriding your prompt.start_at/end_at- the fraction of sampling where the adapter is active. Running it across all steps measurably softens detail; ending it early (say 0.0 to 0.7) keeps the influence but hands the fine detail back to the model.
The other required fields - lora_strength (for the FaceID presets, which need a companion LoRA), provider (the InsightFace execution backend, CUDA by default), use_tiled, and cache_mode - you can leave alone at first. Optional attn_mask restricts the effect to a region, and optional_ipadapter lets you chain a second one in.
Outputs are model (patched - wire this into your sampler, not the original), plus images, masks, and ipadapter for chaining.
Installing it
ComfyUI Manager: search ComfyUI Easy Use, install, restart. Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use
Install the requirements (Windows: double-click install.bat; otherwise pip install -r ComfyUI-Easy-Use/requirements.txt with ComfyUI's Python) and restart. The community's read on this pack is warm - one much-liked thread is literally titled "Easy use nodes are the best," and a user there found swapping to it even fixed a slowdown that had built up over long sessions.
Common issues
The recurring headache is InsightFace. Any FaceID preset needs the insightface Python package, and it's one of the more finicky installs in the whole ecosystem - if the node fails to load or a FaceID preset errors on load, check your startup log for an insightface import error and install it into ComfyUI's Python. A first-run stall usually means it's downloading the preset's model files; watch the console. And if you're on Flux and nothing works, that's expected - these weights don't exist for Flux; use the REGULAR - FLUX preset (a different, InstantX-style adapter) or reach for PuLID instead.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| image | IMAGE | — | |
| preset | COMBO | 15 options: LIGHT - SD1.5 only (low strength), STANDARD (medium strength), VIT-G (medium strength), PLUS (high strength), PLUS (kolors genernal), REGULAR - FLUX and SD3.5 only (high strength), +9 | |
| lora_strength | FLOAT | 0.600–1 | — |
| provider | COMBO | CUDA | 6 options: CPU, CUDA, ROCM, DirectML, OpenVINO, CoreML |
| weight | FLOAT | 1.00-1–3 | — |
| weight_faceidv2 | FLOAT | 1.00-1–5 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| cache_mode | COMBO | all | 5 options: insightface only, clip_vision only, ipadapter only, all, none |
| use_tiled | BOOLEAN | false | — |
| attn_maskopt | MASK | — | |
| optional_ipadapteropt | IPADAPTER | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| images | IMAGE | — |
| masks | MASK | — |
| ipadapter | IPADAPTER | — |