Easy Apply InstantID
One-node face identity for SDXL
- pipe
- image
- image_kps
- mask
- control_net
- pipe
- model
- positive
- negative
InstantID gets you a recognizable face from a single reference photo, no training, on SDXL. The catch is that a raw InstantID setup in ComfyUI is a maze - face analysis, an IdentityNet ControlNet, the adapter, keypoints, conditioning. easy instantIDApply wires that whole maze into one node. You give it a face image and a pipe; it hands back a model and conditioning with the identity baked in.
It's the InstantID front-end in ComfyUI-Easy-Use's Adapter category, and it's a real time-saver - but it's a convenience wrapper, not a reimplementation. It drives the actual InstantID machinery, so you still need that installed and its models on disk.
Why you'd reach for it, and when not to
Reach for it when you're on SDXL (or an SDXL finetune like Illustrious or Pony) and want one person's face to survive across poses and styles. InstantID's edge over plain IP-Adapter FaceID is IdentityNet: it conditions on five facial landmarks, so the face keeps its geometry across angles rather than just its vibe. Don't reach for it on Flux - there is no Flux InstantID, and the identity job there went to PuLID (easy pulIDApplyADV). And know the licensing trap up front: InstantID leans on InsightFace face models, which are non-commercial research-only, so this is fine for personal work and a problem the moment you try to sell the output.
How it works
The node runs face analysis on your reference (via InsightFace), extracts the identity embedding and landmarks, loads the InstantID adapter and its IdentityNet ControlNet, and injects all of it into the pipe's model and conditioning. Everything downstream - your sampler - then generates toward that identity.
The inputs that matter
Most defaults are sane; the few you'll actually touch:
image- the reference face. A clear, front-ish portrait works best.weight- identity strength, default 0.8. InstantID runs hotter than IP-Adapter (people commonly push 1.0–1.3); raise it if the likeness is weak, lower it if the face is overriding the prompt.insightface- the provider: CUDA on an Nvidia GPU, CPU otherwise, ROCM on AMD.start_at/end_at- the sampling window the identity is active over.cn_strength- how hard IdentityNet pins the facial structure.
Optional image_kps (supply your own keypoints/pose), mask, and control_net inputs. Outputs: pipe, model, positive, negative - feed them into your sampler.
Installing it
Install Easy-Use (ComfyUI Manager → ComfyUI Easy Use, or clone the repo and install requirements). Then the pieces InstantID needs, which the pack does not bundle:
- cubiq/ComfyUI_InstantID custom nodes.
- The InsightFace package plus the antelopev2 model pack - antelopev2 isn't auto-downloaded; fetch it and unzip under
models/insightface/models/. - The InstantID files:
ip-adapter.binand the InstantID ControlNet.
Where people trip
The number-one failure is missing models - the instantid_file or control_net_name dropdown is empty because the files aren't where ComfyUI looks. Put the InstantID adapter and ControlNet in the right folders and restart. Number two is InsightFace itself, historically the worst install in the ecosystem (the antelopev2 manual download and, on older setups, a C++ build); if the node errors on face analysis, that's almost always InsightFace, not this node. Number three: it's SDXL-only - point it at a Flux or SD1.5 pipe and it won't work. And if the face comes out weak, raise weight toward 1.0+; InstantID wants a higher strength than you'd give an IP-Adapter.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | PIPE_LINE | — | |
| image | IMAGE | — | |
| instantid_file | COMBO | 0 options: | |
| insightface | COMBO | 3 options: CPU, CUDA, ROCM | |
| control_net_name | COMBO | 0 options: | |
| cn_strength | FLOAT | 1.000–10 | — |
| cn_soft_weights | FLOAT | 1.0000–1 | — |
| weight | FLOAT | 0.800–5 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| noise | FLOAT | 0.350–1 | — |
| image_kpsopt | IMAGE | — | |
| maskopt | MASK | — | |
| control_netopt | CONTROL_NET | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE_LINE | — |
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |