Model guide
Ten generators, and the specific mechanism each one uses to hold a face: Midjourney's character reference, a Flux LoRA, Seedream's edit phrasing, IP-Adapter on Stable Diffusion, first-frame conditioning on the video models. Which to reach for, and where each one stops.
The mistake almost everyone makes is treating these as one interface with different pricing. They are not. A prompt that works on Midjourney because of --cref has no equivalent on a video model, and the phrasing that keeps a subject on Seedream will re-roll the face on Flux.
The studio emits the right syntax for each rather than the same prompt with a different aspect ratio. This page is the reasoning behind that.
At a glance
A model that cannot be trained has a hard ceiling on how consistent it can be, no matter how well you prompt it. That is worth knowing before you build a workflow on it.
| Model | Kind | Prompt only | Reference frame | Trained model |
|---|---|---|---|---|
| Midjourney | Image | ● | ● | — |
| Flux | Image | ● | ● | ● |
| Seedream | Image | ● | ● | — |
| Stable Diffusion | Image | ● | ● | ● |
| Sora | Video | — | ● | ● |
| Veo | Video | — | ● | ● |
| Kling | Video | — | ● | ● |
| Runway | Video | — | ● | ● |
| HeyGen | Talking avatar | — | — | ● |
| ElevenLabs | Voice | ● | ● | ● |
4 models
Stills — the identity is set here.
Character reference (--cref) plus a pinned --seed
Pass an approved frame as --cref and dial --cw to control how much of it carries over: 100 keeps face, hair and clothing, 0 keeps the face only. Pin --seed so re-runs of the same prompt land in the same place.
LoRA on the base model, or an in-context edit from a reference
The strongest route: train a LoRA from 12–20 approved frames and invoke it by trigger word in every prompt. For a lighter setup, an in-context editing model takes a reference image plus an instruction and keeps the subject across edits.
Reference image conditioning with an explicit subject lock
Give it the reference frame and describe only what changes. It holds a subject across a set better than most when the instruction is phrased as an edit rather than as a new scene.
LoRA plus IP-Adapter, run locally
The full toolkit: LoRA for the identity, IP-Adapter for a per-shot reference, ControlNet for pose. It is the only stack where you control every variable, and the only one where the persona never leaves your machine.
4 models
Motion, conditioned on a locked still.
First-frame conditioning from an approved still
Feed an approved still as the opening frame and describe the motion rather than the person. Describing the face again inside a video prompt is the single most common way people lose it.
Image-to-video from a locked still, plus native audio
Image-to-video with synchronised speech, which makes it the shortest path from a character sheet to a talking clip. The still you feed it is doing all the identity work.
Start-and-end frame conditioning
Takes a start frame and an end frame and interpolates between them, which gives you tighter control over where a clip lands than a text-only motion prompt does.
Reference-locked generation with per-shot camera control
Built around an editing timeline rather than a single prompt, so it is the one to reach for when a clip has to cut against footage you already have.
1 model
The half of the persona nobody locks.
Questions
It depends on how far you need it to hold. For stills alone, Midjourney with a character reference gives the best-looking result for the least setup. For anything that has to survive odd angles or motion, a Flux or Stable Diffusion LoRA is the only route that reliably works, because it is the only one where the model has actually learned the face rather than being shown a picture of it. For talking video, a trained avatar removes the problem entirely at the cost of only ever producing a talking head.
The descriptor line is portable and the reference frame is portable. A trained LoRA is not — it is bound to the base model it was trained on, and moving to a different base model means retraining. That is the real switching cost of the trained route, and it is worth knowing before you pick a base model rather than after.
It sets how much of the character reference carries over. At 100 you keep face, hair and clothing; at 0 you keep the face only, which is what you want when the same person has to appear in a different outfit. It is the dial between 'same character' and 'same photo', and most consistency complaints are really a --cw that was left at the default.
Because a video model interpolating between frames re-imagines anything it was not confident about, and a face is the thing it is least confident about. Feed an approved still as the first frame and describe the motion rather than the person — describing the face again inside a video prompt is the most common way people lose it. Then cut before the drift instead of trying to prompt it away.