You’re building a series: five blog illustrations, ten product shots, twenty storybook panels. Each image looks good on its own, but lined up together they could be from five different artists. One is painterly, one is photo-real, one is anime-tinted, one is flat illustration. No visual cohesion.
Fastest fix (60 seconds): the strongest single lever depends on your tool.
- Midjourney (V8.1 default as of June 2026): run one prompt with
--sref random, find a look you like, then reuse the exact numeric code it prints (e.g.--sref 579955689 --sw 100) on every prompt in the series. A numeric code is far more stable than an image URL. - Stable Diffusion / ComfyUI: load one reference image into IP-Adapter (Style mode, weight
0.7-0.9) and feed it to every generation. - Flux: use Flux Redux with the same reference image (strength
0.6-0.8). - ChatGPT (Images 2.0 / gpt-image-2): ask for the whole batch in one message (“8 images in the same style, same line weight, same palette”) so the model’s multi-image coherence does the work; re-paste the style block whenever you change camera angle.
Style consistency is not “the model can’t.” It’s “you didn’t constrain it.” The model picks a style per prompt, and if you don’t pin the style it picks a different one each time. The rest of this page walks the full diagnosis and the durable fix.
Common causes
Ordered by hit rate, highest first. Use this table to find your bucket fast, then jump to the matching step below.
| Symptom you see | Most likely cause | Go to |
|---|---|---|
| Every image has different style words (or none) | No shared style anchor | Step 1 |
| Same anchor, but flavor still drifts | No reference image / no seed lock | Steps 2-3 |
| Some images use a different model or look “off-texture” | Mixed model or sampler | Step 4 |
| Midjourney series looks creative but scattered | Stylize too high, or image URL sref | Steps 2 & 5 |
| 30+ images, manual locking is fragile | No trained style LoRA | Step 6 |
1. No style anchor reused across prompts
Each prompt has its own style words (“watercolor,” “photograph,” “illustration”), or none. Without a single shared style sentence pinned to every prompt, the model wanders.
How to spot it: paste your 5 prompts side by side. Are the style words identical? Usually they’re not.
2. No seed lock
Even with the same style anchor, different seeds produce different style flavors. Locking the seed across a series makes the model paint with similar brushstrokes.
How to spot it: your tool’s seed is “random” or different per image.
3. No shared style reference fed into every generation
The most powerful consistency lever is the same style reference attached to every generation. Without one, style drifts.
On Midjourney specifically, a numeric style code (--sref 579955689) is more stable than a style image URL, because the number points at a fixed style vector in Midjourney’s space rather than the model’s re-interpretation of a photo each run. There are roughly 4.2 billion such codes; --sref random rolls one and prints it under the result so you can lock it.
How to spot it: you’re not using --sref (Midjourney), IP-Adapter / Style mode (Stable Diffusion, now also called Redux on Flux), or Flux Redux. On Midjourney you’re passing a different image URL each time instead of a saved numeric code.
4. Different models / samplers across the series
Switching from SDXL to Flux mid-series guarantees inconsistency. Even sampler differences (Euler vs DPM++) produce noticeably different texture.
How to spot it: check the generation metadata of each image. Different models or samplers → that’s it.
5. Style words contradicting each other within a single prompt
"painterly watercolor photograph in the style of anime"
This single prompt has four conflicting style words; the model averages and the average is unstable.
How to spot it: any prompt where you can’t write the style in 3-5 words is too noisy.
6. Wide creative latitude on Midjourney
Default Midjourney --stylize 100 already adds creative leeway, and pushing it higher (--stylize 500+) lets the model reinterpret each prompt more freely, which hurts series cohesion. For series work, keep stylize low and add --style raw to dial back Midjourney’s automatic beautification.
A second Midjourney-only trap: the style engine was rewritten on June 16, 2025, so any --sref code you found before that date now renders differently. Append --sv 4 to fall back to the legacy algorithm if an old code suddenly looks wrong.
How to spot it: you’re on Midjourney with a high --stylize, or you’re reusing a pre-mid-2025 sref code without --sv 4.
Shortest path to fix
Step 1: Write ONE style-anchor sentence, paste into every prompt
Define your style with 3-7 specific words. Examples:
# Soft pastel illustration
"soft pastel illustration, gentle line work, muted color palette,
storybook style, watercolor textures, hand-drawn aesthetic"
# Cinematic photo
"35mm film photograph, kodak portra 400, available natural light,
cinematic muted colors, 50mm lens, shallow depth of field"
# Flat vector
"flat vector illustration, bold simple shapes, limited 5-color palette,
no gradient, no texture, modern design aesthetic"
Paste this exact block at the start (or end) of every prompt in the series.
Step 2: Pin the same style reference to every generation
# Midjourney (V8.1 default, June 2026) - prefer a numeric code over a URL
"prompt for image N" --sref 579955689 --sw 100
# --sw is style weight: default 100, range 0-1000. Raise to push style harder.
# To discover a code: run once with "--sref random", then reuse the number it prints.
# Reusing a pre-2025-06-16 code that looks wrong? Add "--sv 4" for the legacy engine.
# Lock content AND style: combine "--oref [character URL] --ow 100" with --sref.
# SDXL Forge / ComfyUI
- IP-Adapter, Style mode (Style Transfer node in ComfyUI)
- Load the SAME reference image for every generation
- Weight: 0.7-0.9
# Flux dev
- Flux Redux (the renamed Flux IP-Adapter)
- Same reference image, strength 0.6-0.8
- For edit-style consistency across a character, Flux Kontext holds a subject
better across edits but is weaker at varied stylization
# ChatGPT (Images 2.0 / gpt-image-2)
- Ask for the whole batch in ONE message: "Generate 8 images in the same style,
same line weight, same palette" - the model keeps up to ~8 frames coherent
- Or upload a style reference and say "match this style for every image"
- When you change camera angle, RE-PASTE the style block; it does not carry over
Step 3: Lock the seed
# Midjourney
"... --seed 42"
# SDXL / Flux
- Pin seed to a single integer (e.g., 42)
- Uncheck "randomize"
# ComfyUI
- KSampler seed: fixed, control_after_generate: fixed
Note: same seed + same model + same sampler produces highly similar style output. Same seed alone won’t fully lock it.
Step 4: Same model, same sampler, same settings
Document the technical recipe and use it for every image in the series:
- Model: Juggernaut XL v9 (do not switch)
- Sampler: DPM++ 2M Karras (do not switch)
- Steps: 30 (do not change)
- CFG: 6 (do not change)
- Resolution: 1024×1024
- Seed: 42 (or pinned per-image but fixed)
- LoRAs: <lora:style_X:0.6> (same list)
Step 5: Tighten Midjourney stylize
# Series work - use one of these
"--style raw --stylize 50" # least latitude, most literal
"--style raw --stylize 100" # default stylize, raw beautification off
"--stylize 250" # mild latitude
Keep stylize low and pair a numeric --sref with it. Note that while Midjourney technically accepts several style references at once, two is the practical ceiling for series work; adding more averages them into a muddy mid-point that matches none of them.
Step 6: Train a style LoRA for long series
If the series is more than 30 images:
1. Generate / collect 15-25 example images in the target style
2. Train a LoRA: 1500-2500 steps, lr 1e-4
3. Use trigger token in every prompt
4. Style now locks across any prompt + any subject
Civitai, Replicate, and Astria all offer one-click style LoRA training.
How to confirm it’s fixed
Don’t eyeball one pair. Run this quick check before you ship the set:
- Thumbnail strip test. Lay all images in a row at thumbnail size. Cohesive sets read as one set even when you can’t see detail; drift jumps out instantly at small scale.
- Swap-blind test. Show the strip to someone who hasn’t seen it and ask “is any one of these from a different artist?” If they can pick the odd one out, that image needs a re-roll with the locked recipe.
- Metadata check. For local generations, confirm every image shares the same model, sampler, CFG, and (where intended) seed in its PNG metadata. On Midjourney, confirm the same numeric
--srefand--swappear under each job. - Palette check. Drop two or three images into any color-picker and compare the dominant swatches. A consistent series shares a palette within a few hue steps.
If one image still drifts, re-generate only that one with the exact locked recipe (same anchor, same reference, same model and sampler) rather than re-running the whole batch.
Prevention
- Start every series with a written-down “style spec”: anchor sentence, the numeric sref code or reference image URL, model, sampler, CFG, and seed strategy
- Paste the style anchor at the same position in every prompt (always at the end, or always at the start; pick one and never mix)
- For series of 30 or more images, train a style LoRA upfront. It pays back fast
- Save the spec file with the project so you can continue the series later
- Keep your favorite Midjourney sref codes in a notes file with a sample thumbnail and the
--swvalue you used
FAQ
Why do my images look consistent in pairs but drift over a long series? Small per-prompt differences compound. A shared style anchor handles wording, but seed, model, and sampler still vary the texture. For anything past about 10 images, lock all four (anchor, reference, seed, model+sampler) or train a LoRA so the style stops depending on prompt wording.
Is a Midjourney sref image URL or a numeric sref code better for a series?
A numeric code (--sref 579955689) is more consistent. It points at a fixed style vector, while a URL is re-interpreted each run. Discover a code with --sref random, copy the number it prints, and reuse it everywhere.
Can ChatGPT keep a style consistent across many images? ChatGPT Images 2.0 (gpt-image-2) keeps roughly 8 frames coherent when you request the batch in one message. Past that, or when you change camera angle, restate the full style block; it does not carry the style forward automatically across separate turns.
My old Midjourney sref code suddenly looks different. What changed?
Midjourney rewrote the style-reference engine on June 16, 2025. Codes found before that date render differently under the new engine. Add --sv 4 to fall back to the legacy algorithm, or find a fresh code under the current engine.
Does locking only the seed make a series consistent? No. A fixed seed only matters when the model, sampler, steps, and CFG are also identical. Same seed across different models or samplers produces unrelated images. Lock the recipe first, then pin the seed.
Related
- AI image character consistency
- AI image style consistency
- AI image prompt basics
- AI consistent character images
Tags: #Image generation #Debug #Troubleshooting #Consistency