Long read

The same character, every image

Every generation rolls a new face. To keep one character across a set you need three things: a description block you never edit, one canon image, and the identity tool your generator offers.

Free Midjourney Stable Diffusion 3 min read

Why the face keeps changing

A prompt is a lottery ticket for a region of possible images. Run the same words twice and you draw twice. Identity has to be carried by something the model can hold onto between draws: fixed words, a reference image, or a trained add-on. Use all three when you can.

Build a character block

Pick five to eight traits a camera can see. Age band, build, hair, one garment, one prop, one mark. Write them as a single block, then treat that block as frozen: paste it into every prompt in the set and never reword it mid-project.

character blockMara, a wiry courier in her twenties, cropped silver hair, scuffed red flight jacket, brass goggles around her neck, scar through her left eyebrow
block + sceneMara, a wiry courier in her twenties, cropped silver hair, scuffed red flight jacket, brass goggles around her neck, scar through her left eyebrow, sprinting across a rooftop at dawn

The name is for you, not the model. The jacket, the goggles, and the scar do the work; distinctive clothing is the strongest identity anchor there is, and the clothing wall is full of it. Scene words go after the block, never inside it.

Elect a canon image

Generate with the block until one image looks like the character you meant. That image is now canon. Save it, keep it in a folder with the block text, and feed it to every tool below. You are no longer trying to describe the character; you are trying to repeat a picture you already have.

Midjourney: character reference

Pass the canon image back with --cref and its URL; newer versions fold this into omni reference, --oref. The --cw weight sets how much carries over: at 100 the face, hair, and clothes all transfer, at 0 the face alone, so you can redress the character. Keep the character block in the prompt as well; the flag and the words reinforce each other.

midjourneyMara [character block], repairing a courier drone in a cluttered workshop --cref https://.../mara-canon.png --cw 100

Stable Diffusion: seeds, then a LoRA

A fixed seed with unchanged settings repeats an image, and small prompt edits from there drift less than fresh rolls. That holds a short set together. For a character you plan to keep, train a small LoRA on ten to twenty renders of your canon character and invoke it with its trigger word from then on. Reference adapters such as IPAdapter sit in between: one canon image in, identity held without training.

Chat image models: the edit loop

Nano Banana and GPT-Image are the easy path. Upload the canon image and ask for the same character in a new scene, in plain sentences. Stay in one conversation and keep saying the same character; the model treats the thread as memory. The chat image models guide covers the wider edit loop this belongs to.

chat modelSame character as the image above: put her at a rain-soaked train platform at night, holding the goggles in one hand.

Hold the style still

Style words change faces. The same block rendered as watercolor and again as photoreal reads as two strangers. Choose the set's style once, put the style word inside the frozen block, and leave it there. Camera distance, pose, lighting, and scene are all safe to vary; they change the shot, not the person.

Where this fits

The block is a subject with the dial turned up, so the craft in Writing the Subject applies word for word. The builder's Save button keeps the frozen block one click away, and when a scene comes back wrong around your character, fix it with the negative prompt, not by rewording the block.

Published here first.