PuLID-FLUX injects one face image into FLUX.1 dev generations with no training. In ComfyUI it runs through community node packs, needs about 12GB of VRAM on an 8-bit Flux build or about 22GB at 16-bit, and is tuned mainly by when ID insertion starts: the authors suggest step 4 for realistic images. The PuLID weights are Apache 2.0, but FLUX.1 dev and the InsightFace models it relies on carry non-commercial terms.
PuLID Flux (PuLID-FLUX) is a tuning-free identity model that injects one face image into FLUX.1 [dev] generations, so a persona keeps its face with no LoRA training. The current release is v0.9.1, it runs in ComfyUI through community node packs on roughly 12GB of VRAM with an 8-bit Flux build, and its authors still call it a beta.
Versions, memory figures, settings and licenses checked October 2026 against the PuLID repository, its PuLID for FLUX doc and model page, the PuLID paper, the ComfyUI_PuLID_Flux_ll and ComfyUI-PuLID-Flux READMEs, ComfyUI's FLUX.1 tutorial, the FLUX.1 [dev] license, InsightFace and the InstantID repository. Settings are the authors' recommendations; nothing here is a scored test of ours.
This tutorial covers the install, the two settings the authors say need care, how PuLID differs from InstantID, and the licenses stacked under it. It is the Flux identity-adapter branch of our consistent character AI guide. If you work in FLUX.2, read the section on FLUX.2 below before installing anything: you may not need an adapter at all.
What PuLID Flux is, and what you will have at the end
You will have a ComfyUI graph that takes one approved image of your persona and renders that face in Flux scenes, with the pose and framing left to the prompt. The paper's stated goal is "minimizing disruption to the original model", so the background, lighting and composition stay close to what Flux would have drawn without the face.
- 01Reference face
One sharp image of your persona
- 02Face models
InsightFace finds and embeds the face; EVA-CLIP adds visual features
- 03ID encoder
pulid_flux_v0.9.1 turns both into identity features
- 04Cross-attention blocks
Inserted every few Flux transformer blocks
- 05FLUX.1 [dev]
Your prompt sets pose, scene and style
- 06Image
The persona's face in a new picture
There is no landmark ControlNet in that chain. That is the first practical difference from InstantID, which poses the head from the reference photo unless you override it.
How much VRAM PuLID Flux needs
Memory depends on Flux precision and how much you offload. The authors publish peak figures for their own demo, and they are the most reliable numbers available.
The 12GB mode is described as very slow, and fp8 loses some face detail against bf16. Source: PuLID repository, PuLID for FLUX doc, checked October 2026
In ComfyUI the node packs give rounder guidance: about 22GB for the 16-bit FLUX.1 [dev] model and about 12GB for an 8-bit GGUF or fp8 build. The original pack recommends the 16-bit or 8-bit GGUF version and notes that one fp8 variant, e5m2, returned blurry backgrounds. If your card is smaller than that, our cloud GPU hosting comparison lists rental options.
Pre-flight checklist
- ComfyUI 0.3.7 or newer; the node pack used below requires it
- FLUX.1 [dev] already rendering a plain portrait from ComfyUI's own template
- A card with about 12GB of VRAM for an 8-bit build, or about 22GB for 16-bit
- No other PuLID-Flux node pack installed or enabled
- One sharp, front-facing hero image of an original persona or your own face
- A fixed identity block for the prompt: age range, hair, eyes, two distinguishing marks
- The three licenses below read, and a decision made about paid use
PuLID Flux ComfyUI setup, step by step
The PuLID authors do not ship a ComfyUI node for Flux; their doc says to stay tuned for the community implementation. Two community packs matter. ComfyUI-PuLID-Flux came first, calls itself an alpha prototype and has not been updated since October 2024. ComfyUI_PuLID_Flux_ll is the fork that fixed its model pollution problem and links the v0.9.1 weights; its last commit is from November 2025. The steps below use the fork.
- 1Get plain Flux rendering first
Load ComfyUI's FLUX.1 dev template and render a portrait. Expected result: a normal image, so later errors are PuLID's and not Flux's.
- 2Remove other PuLID-Flux packs
The fork reuses the node name ApplyPulidFlux, and its README says to uninstall or disable any other PuLID-Flux nodes first.
- 3Install ComfyUI_PuLID_Flux_ll
Clone it into custom_nodes, pip install its requirements.txt, then pip install facenet-pytorch with --no-deps. Restart ComfyUI.
- 4Download the PuLID model
pulid_flux_v0.9.1.safetensors from guozinan/PuLID on Hugging Face into ComfyUI/models/pulid.
- 5Let the face models download
EVA-CLIP, antelopev2 and the facexlib models download on first use. Expected result: no missing-model error on the first queue.
- 6Add the four nodes
Load PuLID Flux Model, Load Eva Clip (PuLID Flux), Load InsightFace (PuLID Flux) and Apply PuLID Flux.
- 7Wire Apply PuLID Flux into the model path
Flux model in, patched model out to the sampler. Connect your hero image. Leave weight 1.0, start_at 0 and end_at 1 for the first run.
- 8Fix the seed and render
Expected result: your persona's face in the prompted scene. From here, change one setting per run.
| File | Folder | Notes |
|---|---|---|
| flux1-dev.safetensors, or an 8-bit build | ComfyUI/models/diffusion_models | The base model. Accept the license on Hugging Face before downloading |
| clip_l and t5xxl text encoders | ComfyUI/models/text_encoders | Flux needs both. An fp8 t5xxl saves memory |
| ae.safetensors | ComfyUI/models/vae | The Flux VAE |
| pulid_flux_v0.9.1.safetensors | ComfyUI/models/pulid | The identity model, 1.14GB |
| EVA02-CLIP-L-14-336 | ComfyUI/models/clip | Visual face features. The pack downloads it automatically |
| antelopev2 | ComfyUI/models/insightface/models/antelopev2 | InsightFace detection and recognition. Research-only license |
| facexlib parsing and detection models | ComfyUI/models/facexlib | Face alignment and parsing. Downloaded automatically |
Folders for the Flux files follow ComfyUI's current FLUX.1 tutorial; the pack READMEs still use the older models/unet and models/clip names for the same files. GGUF builds also need the ComfyUI-GGUF pack. The finished chain:
Load Diffusion Model (FLUX.1 dev) -> Apply PuLID Flux -> sampler Load PuLID Flux Model (pulid_flux_v0.9.1) -> pulid_flux Load Eva Clip (PuLID Flux) -> eva_clip Load InsightFace (PuLID Flux) -> face_analysis Load Image (hero) -> image Apply PuLID Flux [weight: 1.0 | start_at: 0.0 | end_at: 1.0 | optional: attn_mask, options] Text prompt -> FluxGuidance (4) -> sampler (cfg 1) -> VAE Decode -> Save ImageFlux PuLID workflow: the two settings that matter
The authors name two parameters as crucial: when ID insertion starts, and which kind of CFG you run. Everything else can stay at its default while you learn those.
| Setting | Authors' recommendation | In ComfyUI |
|---|---|---|
| Timestep to start inserting ID | 4 for realistic images, 0 to 1 for stylised. Recommended range 0 to 4 | start_at on Apply PuLID Flux, as a fraction of the schedule |
| ID weight | Demo default 1.0, slider range 0 to 3 | weight, default 1.0 |
| Guidance (the authors call it fake CFG) | A commonly used value such as 4. Recommended for photorealistic scenes | The FluxGuidance value, with sampler cfg at 1 |
| True CFG scale | Off (1) by default. Try it when likeness is low or a stylised prompt is ignored | Sampler cfg above 1 with a negative prompt |
| Precision | bf16 for best results. fp8 costs some face detail | Your choice of 16-bit or 8-bit Flux build |
- Insertion timing is the likeness-versus-freedom dial. Insert from the first step and fidelity is highest while editability drops. Insert later and the prompt regains control, at some cost in likeness. If every image wears the reference's expression or ignores an outfit change, start later. If the face reads as a relative, start earlier.
- The demo counts steps; ComfyUI counts fractions. The demo's slider runs from step 0 to 10 on a 28-step default. As plain arithmetic, step 4 of 28 is a
start_atof about 0.14. Treat that as a conversion, not a tested value, and adjust by eye. - Stay on guidance for realism. The doc reports similar ID fidelity for both CFG modes in most cases, with better aesthetics and facial naturalness on guidance alone. It suggests true CFG when likeness is still low, or when a stylised prompt gets a weak response.
- Use bf16 if you can. The authors state that fp8 gives slightly worse face detail with a similar layout.
The fork adds one more control worth knowing: a Pulid Flux Options node that picks which face to read when the reference holds several, sorted left to right, top to bottom or by size. A single-person hero image avoids the question.
PuLID vs InstantID
On Flux there is no contest to run, because InstantID has no Flux release: its ComfyUI pack says it is only for SDXL. The comparison that matters is how each one behaves, so you know what you gain or lose by choosing a base model.
- Runs on FLUX.1 [dev]; PuLID v1.1 covers SDXL
- No landmark ControlNet: pose and framing come from the prompt
- Main dial is when ID insertion starts
- Weights tagged Apache 2.0, with the FLUX.1 [dev] license on top
- Authors: a beta, with lower ID fidelity on some male inputs
- SDXL only
- Landmark ControlNet poses the head from the reference by default
- Two dials, adapter weight and ControlNet strength, both 0.8
- Repository: checkpoints for research purposes only
- Needs a lower CFG and an off-standard resolution to avoid burn and watermarks
Both depend on InsightFace's antelopev2 models to read the face. Our InstantID guide has that install and its settings, and consistent characters without a LoRA ranks both against the hosted routes.
License: three layers under one face
PuLID itself is permissively licensed. The model it runs on and the face models it calls are not, and those decide what you can do with the result.
| Layer | Stated terms | Where |
|---|---|---|
| PuLID code and weights | Apache 2.0 on the GitHub repository and the Hugging Face model page | ToTheBeginning/PuLID, guozinan/PuLID |
| FLUX.1 [dev] | Non-Commercial License v1.1.1. Revenue-generating use of the model is excluded; a commercial license is available from Black Forest Labs | black-forest-labs/flux model_licenses |
| InsightFace antelopev2 | Models are for non-commercial research purposes only | InsightFace README |
| FaceNet loader (ComfyUI_PuLID_Flux_ll) | Described by the pack as a commercial-friendly substitute for InsightFace. The maintainer's claim, not the PuLID authors' | ComfyUI_PuLID_Flux_ll README |
The FLUX.1 [dev] license is worth reading in full if money is involved. It says outputs may be used for any purpose, including commercial ones, except as the license prohibits, and separately that using the model for revenue-generating activity is not a non-commercial purpose. Black Forest Labs offers commercial licenses for that case. We are not lawyers; if the persona earns, get the license question answered before you build on this stack.
On likeness, the PuLID disclaimer says users are "expected to comply with local laws and utilize it responsibly", and Black Forest Labs' usage policy (last revised August 4, 2026) bars unlawful impersonation, including unlawful use of a real person's name, image, voice or likeness. Use an original AI persona or your own face. Our AI likeness rights guide explains why a lookalike is as risky as a copy.
PuLID and FLUX.2: do you need an adapter at all?
The PuLID team has released nothing for FLUX.2. A community project, ComfyUI-PuLID-Flux2, adapts the method to FLUX.2 [klein] and [dev] with its own weights and the same InsightFace and EVA-CLIP stack; treat it as an experiment by one developer. FLUX.2 reads reference images natively, so the simpler route there is multi-reference editing, covered in our Flux consistent character guide.
The PuLID authors themselves now point readers to DreamO, their newer customization framework, which has a native ComfyUI implementation. Its README says the ID task reaches higher facial fidelity than earlier methods but "introduces more model contamination" than PuLID. PuLID remains the one built to leave the rest of the image alone.
Troubleshooting
- Low likeness on a male persona. A documented limitation of the Flux model. Lower
start_at, try true CFG, and use the clearest reference you have. - Soft faces on an 8-bit build. Expected: the authors document a quality gap between fp8 and bf16.
- insightface fails to build on Windows portable. The fork's README links the InsightFace issue that covers the missing Python.h error.
- Errors on older GPUs. The original pack notes that the node does not work on hardware with CUDA compute capability below 8.0 when Flux runs in fp8.
- You need a specific pose. PuLID carries the face, not the body. Add a Flux-compatible pose control from our ControlNet guide, or follow the pose-lock workflow.
- Faces drift in wide shots. The face covers too few pixels. Add a detailer pass that reuses the PuLID-patched model; the chain is in our ComfyUI consistent character workflow.
When to stop injecting and train
PuLID reads one image, so it knows one angle and one expression. That is enough to test a face, shoot a first set and build references. When profile views and full-body shots keep missing, move the identity into weights: your approved PuLID renders are the start of the dataset. Our face LoRA image-count guide covers how many you need, and face LoRA vs InstantID vs IP-Adapter weighs training against the adapters. The AI Influencers program goes deeper where this tutorial stops, with lessons on Flux and SDXL setup, LoRA training for consistent faces and body consistency with ControlNet.
PuLID for Flux: FAQ
What is PuLID Flux?
PuLID-FLUX is a tuning-free identity model for FLUX.1 dev from the ByteDance researchers behind PuLID, a NeurIPS 2024 paper. It reads one face image, turns it into identity features and feeds them into Flux through added cross-attention blocks, so the face carries into new images with no LoRA training. The current release is v0.9.1, and the authors still describe the model as a beta.
How much VRAM does PuLID Flux need?
The authors' demo documents peak memory under 45GB at full bf16 precision, under 30GB with offloading, under 17GB with fp8 and offloading, under 15GB with the face models moved to CPU, and about 11GB with aggressive offloading, which they warn is very slow. The ComfyUI node packs quote about 22GB for 16-bit Flux and about 12GB for 8-bit builds.
Is PuLID better than InstantID?
They are built for different base models, and we have not scored them. InstantID runs on SDXL only and poses the head from the reference through a landmark ControlNet. PuLID has an SDXL version and a FLUX.1 dev version, adds no ControlNet, and is tuned with one timing setting that trades likeness for editability. On Flux the choice is made for you: InstantID has no Flux release.
Does PuLID work with FLUX.2 or Flux Kontext?
The authors' release covers FLUX.1 dev, and their demo added FLUX.1 Krea dev in August 2025. A community adaptation for FLUX.2 klein and dev exists on GitHub with its own weights, but it is not from the PuLID team. FLUX.2 also reads reference images natively, so most people on FLUX.2 use multi-reference editing instead of an identity adapter.
Can I use PuLID Flux for a commercial AI influencer?
Check three licenses. The PuLID code and weights are tagged Apache 2.0. FLUX.1 dev is under a non-commercial license that excludes revenue-generating use of the model unless you obtain a commercial license from Black Forest Labs. The InsightFace antelopev2 face models are for non-commercial research only. One ComfyUI pack offers a FaceNet loader as a substitute; verify that claim yourself.
What settings should I start with for PuLID Flux?
Use the authors' demo values: ID weight 1.0, guidance 4, true CFG off, and ID insertion starting at step 4 for realistic images or step 0 to 1 for stylised ones. In ComfyUI that timing is the start_at field on Apply PuLID Flux, a fraction of the schedule. Lower it for more likeness and raise it when the prompt stops changing the image.
Do I still need a LoRA if I use PuLID?
For a long-running persona, usually yes. PuLID reads one face image each time, so it knows one angle and one expression. A LoRA stores the face in weights trained on a varied set and holds profile views and full-body shots better. PuLID is a fast way to test a face and to produce the approved images that become the training set.
The face holds in Flux. Now make it hold for a year.
AI Influencers, included in All Access, takes you past single-image identity: Flux and SDXL setup, the GPU guide, LoRA training for consistent faces, body consistency with ControlNet and photorealism, with the other three programs, weekly coaching and the private community in one subscription.
Start with the identity block
Write the fixed description your PuLID graph will reuse with the free prompt generator, then follow the free Telegram channel for updates on Flux identity tools.