Seed Pinning

Hold the randomness still, change one thing at a time

Regenerating reshuffles everything at once: the user liked the composition but wanted warmer light, and now both are gone. Seed Pinning freezes the randomness — pin the seed, and the same settings reproduce the same image; then vary exactly one dimension per iteration. Refinement becomes a controlled experiment instead of a slot machine.

Framing

The problem

Regenerating reshuffles everything at once — users lose the composition they liked while chasing the lighting they wanted.

The pattern

Pin the seed to freeze the randomness, then vary a single dimension per iteration — a controlled experiment instead of a lottery ticket.

Why chat breaks here

Re-sending a prompt in chat re-rolls the dice; a text box has no handle for "keep everything, change this one thing."

Risks

Pinned seeds create false confidence across model versions — the same seed on a new model is a different image; show the model version next to the seed.

Avoid when

Divergent exploration — when the user wants maximally different options, pinning the seed is the opposite of the job.

Use when

The user has a generation they mostly like and needs to iterate on one dimension without losing the rest.

DOPE evaluation

Directability
One slider changes one dimension while everything else holds still
Observability
The lock state and seed value sit visibly on the artifact, so the user knows why outputs match or differ
Predictability
With the seed pinned, the same settings reproduce the same image — regeneration stops being a lottery
Explainability
Differences between variants are attributable: the only thing that changed is the dimension the user moved

In the wild

  • Midjourney · --seed parameter (Midjourney) — Same prompt + same seed reproduces the image; change one prompt term with the seed held and the diff is attributable to that term. The mechanic is real — the UI is still a typed flag, which is the gap the pattern names.
  • Leonardo AI · Fixed seed (Leonardo.Ai) — A UI toggle pins the generation seed so subsequent runs vary only what the user changes — the lock affordance as an actual control, not a syntax trick.
  • Stable Diffusion WebUI · Reuse seed (AUTOMATIC1111) — One-click recycle-seed button plus visible seed field; the community workflow that made pin-then-vary the default way to iterate locally.

FAQ

When should I use the Seed Pinning pattern?

The user has a generation they mostly like and needs to iterate on one dimension without losing the rest.

When should I avoid the Seed Pinning pattern?

Divergent exploration — when the user wants maximally different options, pinning the seed is the opposite of the job.

What problem does Seed Pinning solve?

Regenerating reshuffles everything at once — users lose the composition they liked while chasing the lighting they wanted.

Why is chat the wrong fit for this?

Re-sending a prompt in chat re-rolls the dice; a text box has no handle for "keep everything, change this one thing."

Related patterns

  • Alternative to: Region Lock — Lock pixels in space vs lock randomness across regenerations.
  • Often paired with: Parallel Alternatives — Explore wide with candidates, then pin the winner's seed and iterate narrow.
  • Often paired with: Real-time Generation — A pinned seed makes the live slider meaningful — the preview varies only on the axis you move.

Browse all patterns