PhotoMaker Loader Plus
The unglamorous node every PhotoMaker workflow starts with
- PHOTOMAKER
This is the node nobody screenshots and every PhotoMaker workflow depends on. If you're here it's because you want a specific person's face in your generations without training a LoRA, and PhotoMakerLoaderPlus is where that starts: it loads the PhotoMaker model file and hands it to the rest of the pipeline.
PhotoMaker (from TencentARC) is the zero-shot identity approach that sits in the same family as IP-Adapter and InstantID, except it works differently under the hood. Its model file is not a checkpoint and not a normal LoRA - it's a .bin that packs two separate things: an id encoder (a CLIP Vision encoder that reads your reference photos) and lora_weights (a LoRA that patches the diffusion UNet). This loader peels those apart and passes the pieces along. Everything else in the pack hangs off it.
What it does
One input, one output. That's the whole node.
- photomaker_model_name - a dropdown of every
.bininComfyUI/models/photomaker/. You pickphotomaker-v1.binorphotomaker-v2.bin. - PHOTOMAKER (output) - a custom object holding the loaded ID encoder, the LoRA weights, and a reference to the file. You don't wire this into any standard Comfy node; it's a pack-internal type that feeds
PhotoMakerLoraLoaderPlusandPhotoMakerEncodePlus.
Under the hood it does one clever thing: it sniffs the file for a qformer_perceiver.token_norm.weight key. Found it? That's V2, so it builds the V2 ID encoder that expects InsightFace embeddings. Not found? V1, simpler encoder. You never have to tell it which version you downloaded - it checks the weights themselves. It also caches the file in memory, so re-running the graph doesn't re-read a multi-hundred-MB file from disk every time.
Wiring it up
In the pack's own workflows the chain looks like:
CheckpointLoaderSimple → PhotoMakerLoraLoaderPlus → KSampler
│ ▲
└→ CLIP ────────────┐ │ PHOTOMAKER
▼ │
PhotoMakerLoaderPlus ──── PHOTOMAKER → PhotoMakerEncodePlus → KSampler
The PHOTOMAKER output splits into both PhotoMakerLoraLoaderPlus (which applies the LoRA half to your base model) and PhotoMakerEncodePlus (which uses the ID encoder half). Skip either and your results will be subtly wrong - identity will leak through, but weak.
Installing and getting the model
Install the pack the usual way. Via ComfyUI Manager, search "PhotoMaker Plus" and hit install, or from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus.git
Restart ComfyUI. The pack pulls in onnxruntime and insightface from its requirements.txt (plus a numpy<2 pin), so you may get an install step on first launch.
Then download the model - not from CivitAI, from Hugging Face:
# V1: https://huggingface.co/TencentARC/PhotoMaker → photomaker-v1.bin
# V2: https://huggingface.co/TencentARC/PhotoMaker-V2 → photomaker-v2.bin
mkdir -p ComfyUI/models/photomaker
# drop the .bin in there
The dropdown in the node reads that folder, so it stays empty until you add the file.
Where people get burned
- Empty dropdown. The model isn't in
models/photomaker/, or you put the whole HF repo folder in instead of just the.bin. - Mixing versions. You can run a V2
.binwithout InsightFace wired in - the loader won't stop you, butPhotoMakerEncodePluswill throw "InsightFace is required for PhotoMaker V2" when it runs. If you loadedphotomaker-v2.bin, grab thePhotoMakerInsightFaceLoadernode too. - The "Plus" caveat. This pack is a native ComfyUI port of PhotoMaker by shiimizu (the same person behind ComfyUI-TiledDiffusion). It is deliberately not a diffusers wrapper, which is exactly why it's fast and doesn't rot with ComfyUI updates. But it means the node names and the
PHOTOMAKERtype are this pack's own - old YouTube tutorials from 2024 reference a different loader that no longer exists.
One last thing worth knowing: PhotoMaker is an SD 1.5 / SDXL-era tool. It's still the right call when you want a specific real face in a generation with zero training. For the newest 2026 character-consistency workflows the community has largely moved to edit models - but on SDXL, this still works and works well.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| photomaker_model_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PHOTOMAKER | PHOTOMAKER | — |