Identity blending: a face that isn't anyone
Weighted mixes of faces a model already knows produce a novel character that reproduces. The syntax, the ratios that stay stable, and how to lock the result.
Try building an original character out of adjectives and you run into the same wall every time. "A woman in her thirties, sharp cheekbones, dark eyes, shoulder-length brown hair" describes an enormous number of real people, and the model will show you a different one of them on every generation. Add more adjectives and the face gets more specific in description and no more stable in output, because natural language has nowhere near the resolution to pin a human face.
The technique that works instead is counterintuitive: instead of describing a face the model has never seen, blend two it already knows. A weighted mix of two well-known identities produces a face that belongs to neither of them and reproduces reliably across generations. You are not describing a point in face-space, you are naming two points the model has memorised and asking for the midpoint. Midpoints are stable in a way descriptions are not.
Why known anchors reproduce and adjectives don't
A model that has seen thousands of images of a particular person has an unusually tight internal representation of that face. Every image agreed, so the representation is sharp. When you name that person the model does not have to search, it retrieves.
Adjectives have the opposite property. "Sharp cheekbones" spans an enormous region of face-space with no privileged point in it, so each generation lands somewhere different in that region. Stack ten adjectives and you have intersected ten broad regions, which is still a broad region.
Blending inherits the sharpness. Both anchors are precise, so the interpolation between them is precise too. That is the whole mechanism, and it is why the resulting face holds together across regenerations while an adjective-built face does not.
The syntax, and where it works
In the open-source stack — Stable Diffusion and Flux lineage models running in ComfyUI or an A1111-style interface — prompt weighting is written as a term, a colon and a multiplier inside parentheses, and blending is just weighting applied to two names:
portrait of a woman, (ANCHOR_A:0.4), (ANCHOR_B:0.4),
neutral expression, soft frontal light
Square brackets are a different operator in those same interfaces: [A:B:0.4] swaps one term for another partway through sampling rather than holding both at a weight. Get it wrong and you will blame the technique for a syntax error. Three things matter more than the notation itself:
The weights do not have to sum to one. They are attention weights, not proportions. Leaving headroom below one on both anchors is deliberate — it gives the rest of the prompt room to act on the result rather than being drowned out by two strong identity signals.
Hosted endpoints do not parse weighting at all. Send (NAME:0.4) to a commercial API and it is read as literal text, punctuation included. On those, the equivalent operation is multi-reference: supply two reference images and let the model fuse them. That is the same idea implemented differently, and it is worth knowing that the fusion behaviour which makes a reference set fail when the images disagree is exactly the behaviour you are exploiting here. A fusion error is only an error when you did not want the average.
The result is not the average you would sketch. The model interpolates in its own learned space, not between two photographs, so the output inherits structure from both anchors in ways that are hard to predict by eye. Generate several and pick.
Ratios that stay stable
Three failure modes, each with a ratio signature.
Snap-back. One anchor sits well above the other and the output is recognisably that person with a slight difference. If you wanted a novel face this defeats the purpose entirely, and it is also where the rights problem lives. Keep the anchors close to parity.
Mush. Three or more anchors at similar weights, and the result loses the sharpness that made the technique work. You have averaged three precise points into a region again, which is the adjective problem with extra steps. Two anchors is the reliable configuration. A third is occasionally useful at a much lower weight to push one specific feature, but it costs stability.
Drowning. Both weights pushed high, and the identity signal overwhelms everything else — age, wardrobe, styling and expression instructions all get flattened. This is what the headroom is for.
The practical shape is: two anchors, roughly equal, neither dominant, both leaving room for the rest of the prompt. Two anchors at 0.4 each is a sensible place to start rather than a magic number. Move both up together if the face is not holding; move both down together if the rest of the prompt is being ignored.
One more variable worth knowing even when you cannot control it: where an interface exposes a seed, fixing it lets you change one weight at a time and see only that change. Where it does not, change exactly one thing per batch and generate several each time, so you are comparing distributions rather than single draws.
Promoting the blend into a reference sheet
This is the step that turns a good draw into a usable character, and skipping it is why people rediscover the same problem: a blend prompt is reproducible, not identical. Every generation lands near the same face rather than on it, and "near" accumulates into visible drift across a project.
The fix is to stop generating the character and start referencing it.
- Pick one hero frame. Generate a batch from the blend prompt and choose the single best frame: neutral expression, soft frontal light, torso-up, sharp. Everything downstream derives from that one image, so the choice matters far more than the batch size — and it is the last moment the anchors have any say.
- Build the sheet off the hero, never off the prompt. Re-running the blend prompt for a three-quarter angle gives you a sibling; deriving that angle from the hero gives you the same person. Ordinary reference-set rules take over from here — one lighting setup, one crop, variants kept in a separate set — and reference stacking for consistency covers that ground.
- Reject anything that drifted. Check each derived frame against the hero on hairline, eye spacing and jaw. This matters more here than for an ordinary character: a sheet whose images disagree triggers exactly the averaging you were deliberately exploiting a section ago, except now it averages your character into a fourth face nobody picked.
- Retire the anchors and register the sheet. Once the sheet exists the anchors are done, and no downstream prompt should name them again. Reusable characters and products binds the set to a key so every later generation pulls the same images, instead of the sheet living in a folder and quietly changing as people add to it.
If the character is going to carry a long project, a trained LoRA built on the sheet is the heavier option: reference stacks get you most of the way with no training, and a fine-tune closes the remaining gap at the cost of a training cycle. Which is the right call depends on volume, and style references versus fine-tunes works through the trade properly.
The line the ratio is protecting
The reason to keep anchors near parity is not only technical. A blend that snaps back to one recognisable person is, for practical purposes, a picture of that person, and nothing about having typed a second name into the prompt changes that. Whatever usage rights and likeness considerations would apply to generating that person directly still apply to a blend that is visibly them.
Two habits keep this clean. First, check the output the way an audience would: if a viewer who knows the anchor would name them, the ratio failed and you should rebalance rather than ship. Second, once the reference sheet exists, stop invoking the anchors entirely — the sheet is the character now, and a project whose prompts no longer contain anybody's name is a project with a much simpler story to tell. The broader question of what to say about generated likenesses is covered in what to tell clients about using AI, and the specific gap around faces and voices in face covered, voice exposed.
FAQ
Can I blend more than two identities?
You can, and it usually costs you the thing you came for. Each additional anchor pulls the result toward the mean of the set, and past two the output starts to lose the structural sharpness that made blending better than adjectives. If a two-way blend is close but one feature is wrong, it is generally better to fix that feature with a targeted edit on the hero frame than to add a third anchor to the prompt.
Does the technique work for anything other than faces?
The mechanism generalises to anything the model has a sharp internal representation of, which in practice means well-documented things: recognisable architectural styles, specific breeds, particular vehicle silhouettes. It works poorly for categories the model only knows loosely, because there is no precise point to interpolate between. Faces are the best case because the training data is dense and consistent.
Will the same blend prompt give the same face on a different model?
No. Each model has its own learned space and its own representation of each anchor, so the interpolation lands somewhere different. This is a good reason to lock the character into a reference sheet early: the sheet is portable across models in a way the prompt is not, and it means switching models later costs you a re-render rather than a new character.
How do I know the face is actually stable before building the sheet?
Generate eight to twelve frames from the blend prompt with nothing else changed and lay them out together. A stable blend gives you frames that read as one person in different photographs. An unstable one gives you a family. If you are getting a family, the anchors are probably too weak or too unevenly weighted — raise both and re-run before you start picking a hero.