IPAdapter FaceID
Apply a face embedding to your generation
- model
- ipadapter
- image
- image_negative
- attn_mask
- clip_vision
- insightface
- MODEL
- face_image
This is the apply node for FaceID - the one that actually takes a face and pushes it into your image. Where the Unified Loader FaceID loads the pieces, IPAdapter FaceID is where the reference photo goes in and a patched model comes out. If you want a consistent face across a batch of generations without training a character LoRA, this is the node doing the work.
FaceID differs from ordinary IP-Adapter in one important way. Regular IP-Adapter encodes your reference with CLIP vision - it captures appearance. FaceID instead runs the face through InsightFace to get an ArcFace embedding, a face-recognition vector that describes facial geometry. That's a fundamentally more identity-focused signal, which is why FaceID holds a likeness that plain CLIP-based image prompting only approximates. The cost is that identity is harder for the model to absorb, so FaceID models ship with a companion LoRA that has to be loaded alongside.
Inputs and outputs
The core connections: model, ipadapter (your loaded FaceID bundle), and image (the face reference). Out come two things - a patched MODEL for your KSampler, and face_image, the cropped and aligned face that InsightFace actually detected. That second output is genuinely useful: if your results look nothing like the reference, wire face_image to a preview and check InsightFace found the right face at all. No face detected, no identity transfer.
The settings a beginner touches:
- weight - overall strength, default 1.0 (range −1 to 3). For face similarity, dialing toward the lower end often reads more natural.
- weight_faceidv2 - only bites when you're on a FaceID Plus v2 model. It controls the CLIP structure contribution separately from identity. On non-v2 presets it's inert.
- weight_type - the same fifteen application curves as the Advanced node;
linearis fine to start.
combine_embeds, start_at, end_at, and embeds_scaling behave as they do elsewhere in the pack - start_at/end_at let you run the effect for only part of sampling. Among the optional inputs, the important one is insightface: if you loaded FaceID with the Unified Loader FaceID, InsightFace is already bundled and you leave this empty. If you loaded the adapter with the plain Model Loader, you must feed an INSIGHTFACE here from the IPAdapter InsightFace Loader, or the node has no way to encode the face. image_negative, attn_mask, and clip_vision are the usual optional extras.
What to watch for
Two recurring problems. First, InsightFace must be installed and able to load - the FaceID nodes are the ones that expose that dependency, historically the ugliest install in ComfyUI (much less so since InsightFace 1.0 removed the C++ build step). Second, the companion LoRA: each FaceID model needs its own matching LoRA, and mixing them gives bad results. The Unified Loader handles that pairing; if you're wiring things by hand, get it right.
And the license reality - FaceID reads InsightFace embeddings, so it inherits InsightFace's non-commercial research-only terms. Fine for personal, portfolio, and research work; a problem the moment money is involved. For commercial face work, the CLIP-based Plus Face and Full Face variants avoid the whole issue.
Installing the pack
Via Manager: search "IPAdapter plus", install, restart. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus, restart. FaceID additionally needs insightface installed, the FaceID model in ComfyUI/models/ipadapter, and its LoRA in ComfyUI/models/loras. FaceID is at its best on SD1.5 - that's where the whole community keeps a copy around specifically for faces.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–3 | — |
| weight_faceidv2 | FLOAT | 1.00-1–5 | — |
| 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 | — |
| 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 | — | |
| insightfaceopt | INSIGHTFACE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| face_image | IMAGE | — |