Apply PuLID Advanced
The same face, with the training wheels off
- model
- pulid
- eva_clip
- face_analysis
- image
- attn_mask
- MODEL
For when the standard node is 90% right
Apply PuLID Advanced is what you graduate to. It does the exact same job as Apply PuLID - same five required inputs, same optional attn_mask, same patched MODEL output that goes into your KSampler - but it replaces the friendly method dropdown with three raw knobs: projection, fidelity, and noise. If the standard node gets you close and you can't shake the last bit of mismatch, this is where the answer hides.
The mechanism underneath is identical: InsightFace finds the face, EVA-CLIP reads its appearance, the two embeddings combine and get injected into SDXL's cross-attention via an IDEncoder. The Advanced node just exposes the projection math the standard node hides behind its presets. Everything the Apply PuLID article says about reference quality, the queue-time pipeline, and the "install the pack plus three model downloads" ritual applies here verbatim - this node runs on the same loaders and the same setup.
The knobs, decoded
- projection -
ortho_v2,ortho, ornone. These are the two orthogonalization schemes from the code:orthosubtracts the projection of the identity output onto the base attention output, so the identity can't just ride the existing signal;ortho_v2is a refinement of that idea.nonedoes no normalization, which puts you back in "pure injection, handle with care" territory. - fidelity - integer 0 to 32, default 8. Controls how many tokens of headroom the identity gets. Lower is stronger - the README is explicit that lowering fidelity grants higher resemblance to the reference.
- noise - −1 to 1, default 0. Adds random noise to the negative (unconditioned) reference embeddings instead of feeding them clean zeros. A nudged-up noise value loosens the grip a bit and can rescue generations that feel over-clamped or repetitive.
The README hands you two exact equivalence points so you're not guessing in the dark: ortho_v2 with fidelity: 8 reproduces the standard node's fidelity method, and ortho with fidelity: 16 reproduces style. So if you already know which standard method you liked, set those and start tuning from there. The genuinely useful move is the opposite of what you'd expect: with the standard node, neutral (no normalization) forces you to drop the weight to keep the face from smearing; with the Advanced node you can leave the weight where it is and raise fidelity instead. That's the whole reason the Advanced node exists - decoupling how hard you push from how you push.
A quick tuning recipe
Start at ortho_v2, fidelity 8, weight 1 - the known-good point. If the face is there but weak, drop fidelity to 4 or 5 before you touch weight; you'll usually get more likeness without blowing out the rest of the image. If the prompt is fighting you, edge fidelity back up. If you're chasing a specific face that just won't land, try none with the weight pulled down to 0.5–0.7 and see whether the un-normalized injection reads more faithfully - it sometimes does, at the cost of being less forgiving of a messy reference.
The honest caveat: on this SDXL pack, Advanced is a finishing tool, not a magic switch. PuLID famously gets the face structure right and stops a few percent short of exact likeness - the community recipe for closing that gap is a refining pass (FaceID from the IP-Adapter pack, or a pixel-level swap like ACE++), not more sliders here. And remember this is the SDXL line; the Flux PuLID lives in a different pack entirely. Get Advanced set at its defaults, confirm it matches your standard-node result, and only then start turning the knobs.
One last thing: the author has this repo in maintenance-only mode since April 2025, and this node is a good illustration of why that's fine - the projection math is stable, the README's equivalence table is still accurate, and there's nothing here that needs a weekly update. It just works, quietly, the way a well-finished tool should.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| pulid | PULID | — | |
| eva_clip | EVA_CLIP | — | |
| face_analysis | FACEANALYSIS | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–5 | — |
| projection | COMBO | 3 options: ortho_v2, ortho, none | |
| fidelity | INT | 80–32 | — |
| noise | FLOAT | 0.0-1–1 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| attn_maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |