Load instantId adapter
Getting the InstantID weights into your graph
- InstantId_adapter
- resampler
One dropdown, two outputs, and it's the node that actually pulls InstantID's own weights into your workflow - as opposed to LoadInsightface, which loads the detection side. This is the identity-injection side: the adapter and resampler that InstantID trained specifically to take an ArcFace face embedding and get it into an SDXL model's cross-attention.
What the two outputs are for
InstantID ships these as one file (ip-adapter.bin) but this node splits it into two things you use separately:
InstantId_adapter(INSTANTID_ADAPTER) - feedsInstantIdAdapterApply, which patches your diffusion model directly so it leans toward the reference face during denoising.resampler(RESAMPLER) - feedsFaceEmbedCombine, where it reshapes raw face embeddings intoface_conditioningfor both the adapter and IdentityNet (the ControlNet half) to consume.
They're two halves of the same weights doing genuinely different jobs, which is why this pack keeps them as separate outputs rather than bundling everything into one mega-node.
The one input that matters
ipadapter- an enum dropdown populated from whatever's sitting inmodels/ipadapter. Tooltip straight from the node itself: "The default folder where the adapter is searched for is:models/ipadapter." If the dropdown is empty, the file isn't there yet - that's the whole troubleshooting story for this node, basically.
Install
Search comfyui-instantId-faceswap in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/nosiu/comfyui-instantId-faceswap
pip install -r comfyui-instantId-faceswap/requirements.txt
Then the model this specific node needs: download ip-adapter.bin from InstantX/InstantID on Hugging Face and drop it into ComfyUI/models/ipadapter. If you keep your IP-Adapter files somewhere else already, edit extra_model_paths.yaml to point ipadapter: at that folder instead of duplicating the file - the README notes explicitly that you don't have to use the exact folder layout it suggests.
Common issues & troubleshooting
Empty or missing dropdown. The node reads whatever's physically in models/ipadapter (or wherever your extra_model_paths.yaml redirects it) at ComfyUI startup. Drop the file in after ComfyUI's already running and it won't show up until you restart.
Works on SDXL only. InstantID never got a Flux port and the reference implementation has been dormant since mid-2024 - this pack, and this adapter file specifically, are built for SDXL checkpoints. Don't spend time debugging why it "doesn't work" on a Flux or SD 1.5 model; it was never going to.
License reminder, since this is the file that carries it. ip-adapter.bin is released for research purposes, and it depends on InsightFace's ArcFace embeddings underneath, which are non-commercial. Great for personal projects and experimentation, not something to build a paid product on top of without separately licensing the InsightFace weights.
One node, but don't skip it even if you're not using the adapter apply step. The README calls InstantIdAdapterApply optional - you can get good results without patching the model - but you still need this loader for the resampler output, since FaceEmbedCombine can't run without it. There's no way to build face_conditioning that skips this node entirely.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| ipadapter | COMBO | The default folder where the adapter is searched for is: models/ipadapter. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| InstantId_adapter | INSTANTID_ADAPTER | — |
| resampler | RESAMPLER | — |