← All articles

ENGINEERING NOTES

Preserving Style in Image to Prompt: What We Changed and Why

Our Image to Prompt tool was getting the subject right and the style wrong. A grainy nineties snapshot would come back as a polished film poster. This is a note on why that happens, what we changed, and which parts you can apply by hand in any tool.

A faithful subject in the wrong style

The reports were consistent. Someone uploads a reference, gets a prompt, runs it, and the result is recognizably the same scene—same subject, same framing, roughly the same light—but it does not look like their image. The texture is cleaner. The color is richer. Something got smoothed out.

That pattern is a clue. When subject and composition survive but surface and finish do not, the prompt is describing what is in the frame rather than how the frame was made. Those are different jobs, and the second one is much easier to get wrong.

Style was one item in a list of nine

Our instruction to the vision model used to ask it to capture ‘subject, setting, composition, lens or view, lighting, palette, materials, mood, and style.’ It reads like a thorough checklist. In practice it is a way of guaranteeing that style receives a ninth of the attention.

A flat list invites even coverage. But style is not one attribute among nine—it decides how the other eight get rendered. It also happens to be the hardest to put into words, which makes it the item most in need of extra guidance and, on a list like that, the item least likely to receive any.

Give style a vocabulary, not an adjective

Ask a language model to describe style without telling it what style is made of, and it reaches for the words that sit closest to the concept: ‘digital art,’ ‘highly detailed,’ ‘cinematic.’ These are not descriptions. They carry almost no information about the specific image in front of it.

Worse, they leave a gap, and the image model downstream fills that gap with its own default aesthetic—which is precisely what you were trying to override. The fix is to name the axes style actually decomposes into, so the model has somewhere concrete to look.

  • Medium and technique: 35mm film photograph, gouache, 3D render, flat vector, ink line art.
  • Era or movement, which often carries more information than any single adjective.
  • Camera character: focal length feel, depth of field, film stock, or the render engine being imitated.
  • Mark-making: line weight, brush behavior, edge quality, how surfaces meet.
  • Color grading and temperature, considered separately from which colors appear.
  • Grain, texture, and surface finish.
  • Post-processing: halation, chromatic aberration, halftone dots, cel shading, heavy compression.

Never upgrade the reference

This one surprised us with how much it mattered. Every model in the pipeline—the one reading the image and the one generating from the prompt—has an improvement bias. Given something flat, underexposed, cheaply lit, or compressed, it quietly hands back a better version.

But imperfection is a style. A direct-flash party photo, a blown-out phone snapshot, a low-resolution scan with visible banding: those qualities are usually the whole reason someone saved the image. So the instruction now says it outright—if the image is amateur, flat, low-fidelity, or imperfect, say so plainly and keep it.

If you write prompts by hand, this is the easiest improvement available to you. Describe the flaws on purpose.

Empty quality words are not free

‘Beautiful,’ ‘stunning,’ ‘masterpiece,’ ‘highly detailed,’ ‘8k,’ ‘award-winning.’ These feel harmless, like turning up a volume knob. They are not. A prompt has a finite attention budget, and every filler word takes a share of it from the terms that actually describe your image.

They also pull toward the average. ‘Award-winning’ has no visual meaning, so the model resolves it into whatever it has learned award-winning images look like—a strong, generic aesthetic pointed away from your reference. Our instruction now bans the list explicitly.

Identify the style before writing the prompt

Asking for analysis and output in a single step lets the model treat style as an adjective slot to fill with whatever is nearby. The instruction now runs in two stages. Before writing anything, the model identifies the medium and production technique, then answers one specific question.

Naming that difference is the whole task. Once it has been named, the prompt gets written with medium and style leading, ahead of the subject—because that is where every target model weights them most heavily.

Every model reads a prompt differently

Our earlier per-model instructions tuned tone. Midjourney prompts were told to be ‘evocative,’ GPT Image prompts to be ‘direct and literal.’ That is a stylistic register, and it is not what decides whether a style survives.

What decides it is the text encoder the model uses, where in the prompt the style terms sit, and which native controls the model exposes. Those are concrete, and they differ more than most prompt guides admit.

  • Nano Banana and GPT Image read natural-language prose. Declare the medium in the opening clause, before the subject.
  • Flux uses a T5 encoder, handles long sentences well, and ignores weighting syntax such as (term:1.2) entirely—emphasis has to come from wording and word order.
  • Midjourney weights the front of the prompt heavily, prefers dense comma-separated phrases, and does not understand negation written as prose.
  • Stable Diffusion reads CLIP tokens in 77-token chunks and weights the front of each, so medium and style tags belong first rather than last.

Midjourney has a parameter fighting your description

This is the most useful thing in this article, and it is not a prompt-writing technique at all. Midjourney applies its own aesthetic on top of your prompt, governed by --stylize, which defaults to 100. At that setting the model is actively encouraged to make the image look like Midjourney rather than like what you asked for.

So if you are converting a reference and the output keeps coming back more polished, more cinematic, and more art-directed than your source, no amount of description will fix it. The parameter is what is overriding you.

Every Midjourney prompt we generate now ends with --style raw, which disables that house aesthetic, and a low --stylize of around 50. Exclusions are expressed with --no rather than in prose, because prose negation does not work here.

For Stable Diffusion, half the prompt is the negative one

Stable Diffusion users expect two blocks: the prompt and the negative prompt. Style fidelity leans heavily on the second, because that is where you suppress the default aesthetic drift the model would otherwise apply.

We were only generating the first block, which is half a deliverable. Generated Stable Diffusion prompts now lead with medium and style tags, apply (term:1.2) weighting sparingly to the one or two tags that define the look, and include a negative prompt written for that particular image instead of a copy-pasted boilerplate list.

When the output format and the target model disagree

The tool lets you pick an output format—a general prompt, a structured blueprint, JSON—and separately pick a target model. Those two choices can contradict each other. ‘Return valid JSON only’ and ‘write comma-separated tags ending in parameters’ cannot both be satisfied.

We used to pass both instructions and let the model sort it out. It did sort it out, but differently on different runs. That inconsistency is invisible as a bug and very visible as an experience: the same image with the same settings produces prompts of noticeably different character, which reads as the style being lost at random.

The precedence is explicit now. Freeform formats hand the whole output to the target model and apply its syntax and parameters in full. Structured formats own their own shape, so the target model contributes vocabulary only and emits no parameters.

Reading an image is transcription, not composition

One small change with an outsized effect: we lowered the sampling temperature for the tools that read an image. Writing a prompt from a rough idea is a creative act and benefits from some freedom. Reading a reference is closer to transcription, and every degree of freedom there is a degree of drift away from what is actually in the frame.

Text to Prompt kept its headroom. Image to Prompt and the describer became noticeably more literal.

What to take from this

Most of these changes are things you can apply by hand, whatever tool you happen to be using.

  • Name the medium first, before the subject, in every prompt.
  • Describe imperfections deliberately, because models remove them unless told not to.
  • Delete quality filler; it costs attention and pulls toward the average.
  • On Midjourney, reach for --style raw and a low --stylize before rewriting the prompt yet again.
  • On Stable Diffusion, treat the negative prompt as half the work.
  • Ask the identifying question first: what makes this image look like itself?