PhotoMaker LoRA Loader Plus
The half of PhotoMaker that actually patches your checkpoint
- model
- photomaker
- MODEL
PhotoMaker gets marketed as "zero-shot identity," which makes people assume there's no LoRA anywhere in it. There is. PhotoMaker just hides it inside its model file, and PhotoMakerLoraLoaderPlus is the node that takes that hidden LoRA and applies it to your base model the proper ComfyUI way.
Think of the pipeline as a sandwich. PhotoMakerLoaderPlus loads the .bin and splits it into an ID encoder plus LoRA weights. This node takes the LoRA half and patches your checkpoint with it. PhotoMakerEncodePlus then handles the ID encoder half. Miss the middle layer and the face-matching signal still reaches the sampler, but it's dramatically weaker - people who "followed a tutorial" and forgot this node spend an afternoon wondering why PhotoMaker looks broken.
The inputs that matter
Only three, and only one you'll actually touch.
- model - your base model's MODEL output from
CheckpointLoaderSimple. PhotoMaker runs on SD 1.5 and SDXL checkpoints (the pack's example workflows use RealVisXL). - photomaker - the PHOTOMAKER output from
PhotoMakerLoaderPlus. The two nodes share a loader, so this node reaches back through the loaded object to the same file on disk and applies itslora_weightsto your model. - lora_strength - default 1.0, range −100 to 100. This is the one you'll fiddle with.
lora_strength is your identity dial. The PhotoMaker LoRA is what anchors the generated face to your reference, and 1.0 is the sensible default the author ships. Drop it to 0.8 for a looser "inspired by" look that follows the prompt more obediently; push it past 1.0 and you get a stronger likeness but start risking artifacts. Negative values invert the effect, which is a curiosity more than a tool - you almost never want that.
Why this node exists
It wasn't always here. When this pack launched, the LoRA was applied implicitly inside the encode node, which worked but was opaque and hard to tune. In September 2024 the author split it out into this node, and the README now says so in capital letters: "Use that to load the LoRA." If you find an old workflow that doesn't have it, that's what's missing.
Mechanically it's a thin wrapper over ComfyUI's own LoRA loader (comfy.sd.load_lora_for_models), which is exactly the point - it follows "the ComfyUI way of doing things" rather than reinventing LoRA application. That's also why it plays nicely with the rest of the ecosystem: the output is a plain MODEL, so it slots into your existing graph wherever a model goes, and you can still stack other LoRAs alongside it.
The shared install
If you're here, install the pack the standard way - ComfyUI Manager, search "PhotoMaker Plus" - or clone:
cd ComfyUI/custom_nodes
git clone https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus.git
Restart ComfyUI, then drop either photomaker-v1.bin (from TencentARC/PhotoMaker) or photomaker-v2.bin (from TencentARC/PhotoMaker-V2) into ComfyUI/models/photomaker/. The pack's requirements.txt pulls in onnxruntime and insightface - needed for V2, harmless for V1.
Where people get burned
- Loading the
.binas a normal LoRA. Don't. It's not a.safetensorsLoRA and ComfyUI's standardLoraLoadercan't handle it. That's the whole reason this node exists. - Forgetting the model input. The node needs a MODEL on the left. If your KSampler is fed by the checkpoint directly and this node sits unconnected, nothing gets patched.
- V2 vs V1. Both versions use this node, but V2 additionally needs
PhotoMakerInsightFaceLoaderwired intoPhotoMakerEncodePlus. Get the two version workflows straight before you start blaming the LoRA strength.
Start at 1.0, tune down, and keep your reference photos good - no LoRA strength fixes a blurry reference.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| photomaker | PHOTOMAKER | — | |
| lora_strength | FLOAT | 1.00-100–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |