PuLID: Face and Character Consistency
- Install ComfyUI PuLID Flux nodes and place the required model files in the correct directories.
- Build a PuLID workflow that injects a reference face identity into a FLUX generation.
- Tune PuLID strength to balance identity fidelity against prompt and style freedom.
The Character Consistency Problem
When you generate "a woman in a suit at a conference table," then generate "the same woman presenting at a whiteboard," then "the same woman on a park bench" — you get three entirely different women. Diffusion models have no memory of what the character looked like in a previous image. Every prompt re-samples the entire character from the model's learned distribution.
For creative projects — concept art, book illustration, visual storytelling, consistent character design — this is a fundamental limitation. You need the same face across multiple images without doing manual photo manipulation every time. PuLID solves this.
What PuLID Does Differently
PuLID (Pure Identity and Lightning) is a tuning-free method for injecting a specific face identity from a reference photo into new image generations. Unlike standard fine-tuning (training a custom checkpoint on your character), PuLID works at inference time — you show it a photo and it conditions the generation on that person's facial features through the attention layers of the diffusion model.
PuLID is specifically designed for FLUX. It uses a separate InsightFace model to extract identity features from your reference photo and an ApplyPuLID node to inject those features into the FLUX generation pipeline. The character's face in the output closely matches the reference, while the rest of the scene (clothing, setting, lighting, style) is controlled by your text prompt.
Installation: Nodes and Required Models
PuLID requires several components. Install them in this order:
Step 1: Install the PuLID custom node
- Open ComfyUI-Manager → Install Custom Nodes
- Search for "PuLID" and install "ComfyUI_PuLID_Flux_ll" (by lldacing) — this is the most actively maintained version as of 2026
- Restart ComfyUI
Step 2: Download the PuLID model
Download the PuLID pretrained FLUX model from Hugging Face (search "guozinan/PuLID" on huggingface.co). The file is named pulid_flux_v0.9.1.safetensors or similar. Place it in ComfyUI/models/pulid/.
Step 3: Install InsightFace and download AntelopeV2
InsightFace is a face analysis library PuLID uses to extract identity features. Install it via pip in your ComfyUI Python environment:
- Windows (ComfyUI Portable): open a command prompt in the ComfyUI folder and run: python_embededpython.exe -m pip install insightface onnxruntime
- Linux / Mac: activate your venv and run: pip install insightface onnxruntime
Then download the AntelopeV2 face models (a ZIP of .onnx files) from Hugging Face (search "MonsterMMORPG/InsightFace" or "buffalo_l" alternative). Unzip and place the model files in: ComfyUI/models/insightface/models/antelopev2/
The PuLID Workflow in ComfyUI
PuLID integrates with your FLUX text-to-image workflow. After your Load Checkpoint node:
- Add a Load Image node — load your reference face photo (clear, well-lit, front-facing)
- Add the Apply PuLID node (from the PuLID nodes menu)
- Connect: Load Checkpoint MODEL → Apply PuLID model input
- Connect: Load Image IMAGE → Apply PuLID image input
- Connect: Apply PuLID MODEL output → KSampler model input (replacing the direct checkpoint connection)
- Adjust the weight parameter to control identity strength
The rest of your FLUX workflow — CLIP, text prompts, sampler settings — stays exactly the same. PuLID does not change the text conditioning path, only the model conditioning.
Getting the Best Results
Reference photo quality significantly affects PuLID output:
- Use a photo where the face is clearly visible, well-lit, and not occluded by glasses, hair, or objects
- Front-facing or slight 3/4 angle works best; extreme profile shots produce weaker identity transfer
- Higher resolution reference photos give better results
Weight settings:
- 0.7–0.9: strong identity match; the generated face closely resembles the reference
- 0.5–0.6: balanced; recognizable but gives more stylistic freedom to the model
- Below 0.4: very subtle; only faint influence on facial features
PuLID works best when your text prompt does not explicitly describe face appearance in ways that contradict the reference. Describe the scene, setting, and style; let PuLID handle the face. If your prompt says "blue eyes" and the reference person has brown eyes, the output may be confused — omit appearance descriptions that are already in the reference photo.
- PuLID injects a specific face identity from a reference photo into FLUX generations at inference time — no training or fine-tuning required, just a reference image and the correct node setup.
- Three components are required: the PuLID custom nodes (via Manager), a PuLID pretrained model in models/pulid/, and InsightFace with AntelopeV2 in models/insightface/models/antelopev2/.
- The Apply PuLID node sits between Load Checkpoint and KSampler in the MODEL flow — it modifies the model with identity conditioning while the CLIP and text prompt paths remain unchanged.
- Weight 0.7–0.9 produces strong identity matches while 0.5–0.6 balances identity against stylistic freedom — start at 0.8 and lower if the output looks too rigid.
- Reference photo quality matters — use a clear, well-lit, front-facing photo without occlusions, and omit facial description terms from your prompt that conflict with the reference person's actual appearance.