Easy Apply PuLID
Drop a face into Flux without training a LoRA
- model
- image
- attn_mask
- model
You want your character's face to show up consistently, and you don't want to spend an hour training a LoRA to get it. That's the PuLID pitch, and easy pulIDApply is Easy-Use's one-node wrapper around it. Give it your model and a reference photo, and it patches the model so generations come out looking like that person.
PuLID is ByteDance's identity adapter, and its whole trick is that it copies a face while breaking less - earlier adapters degraded style, detail, and prompt adherence when they injected an identity ("ID pollution"); PuLID uses a contrastive training setup to keep the base model's behavior mostly intact. In practice it became the go-to on Flux for one very unglamorous reason: it shipped a working Flux port in September 2024 while InstantID never did.
How it works
Under the hood it's InsightFace (to read the face) plus the PuLID weights (to inject it) patched onto your diffusion model. This node just wires those together and exposes the settings that matter. Out comes a model with the identity baked in - feed that straight to your sampler.
The inputs and outputs that matter
modelin,modelout - wire the output into your KSampler / preSampling node.image- the reference face. One clear, front-facing photo works best.pulid_file- which PuLID checkpoint to use. This dropdown is empty until you download the weights (more below).insightface-CPU/CUDA/ROCM. Pick the one matching your setup; CUDA if you're on an NVIDIA GPU.method-fidelitysticks closest to the reference face,stylegives the model more freedom,neutralsits between. Start onfidelity.weight(default 1) - identity strength. If the face is too "pasted on" or fighting your prompt, ease this down.start_at/end_at- the sampling window PuLID is active for. Pullingstart_atup slightly (e.g. 0.1) lets the composition form before identity kicks in.
Optional attn_mask restricts the effect to a region.
How to install it
ComfyUI Manager: search ComfyUI-Easy-Use, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use
then install.bat / pip install -r requirements.txt, and restart. This node needs real dependencies: InsightFace has to install and load its face-analysis models, and you need the PuLID weights placed where ComfyUI can see them (the pulid_file dropdown reads from your PuLID models folder). Nothing shows in the dropdown until those files exist.
Common issues & troubleshooting
The pulid_file dropdown is empty. You haven't downloaded the PuLID weights yet, or they're in the wrong folder. Grab the PuLID(-Flux) checkpoint and drop it in your ComfyUI PuLID models directory, then restart.
InsightFace won't install. This is the classic PuLID/InstantID headache - InsightFace is a compiled dependency that trips over Python/onnxruntime versions on Windows. It's the single most common reason this node errors on first run. Search the exact error; a matching onnxruntime build usually fixes it.
Commercial-use caveat. The face pipeline leans on InsightFace, whose models are non-commercial. PuLID's own license is permissive but the InsightFace dependency isn't - worth knowing before you ship anything paid.
On Flux, prefer fp8 over GGUF. Community testing found PuLID runs markedly faster and more consistently on fp8 Flux than on GGUF quants - one 12GB card saw ~2.4 s/it on fp8 versus 3–16 s/it on GGUF. If PuLID feels unbearably slow, that's probably why.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| pulid_file | COMBO | 0 options: | |
| insightface | COMBO | 3 options: CPU, CUDA, ROCM | |
| image | IMAGE | — | |
| method | COMBO | 3 options: fidelity, style, neutral | |
| weight | FLOAT | 1.00-1–5 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| attn_maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |