Prompting is often described as learning a new language. It is not. There is one thing to learn: give the model a specification rather than a sentence.
A sentence establishes context; a specification gives measurements. The model reads context weakly and measurements strongly.
The four-part method below makes the picture in your head legible to the model. You will see what each part does and what happens when it is missing.
1. Subject: what is there, how many
The subject belongs at the start of the prompt. Models read from the beginning and weight early information more heavily.
Leaving the subject vague is the most common mistake. Instead of "a woman", write "a woman in her forties, short hair, wearing a dark blazer". Give numbers: not "some books" but "three books, two closed and one open".
Avoid two equally weighted subjects. Models struggle to hold two co-equal subjects together; one main subject with attached details is far more reliable.
2. Setting: where and when
The setting is the world the subject stands in, and it establishes most of the image's atmosphere.
Write the place concretely: not "indoors" but "in a high-ceilinged workshop with one large window". Tie the time to the light: "morning", "late afternoon sun", "just after sunset".
Describe the background here too. Leave it out and the model invents one, usually a busy one; writing "plain grey backdrop" or "blurred street" puts that decision back in your hands.
3. Style: photograph or drawing
Skip the style section and the model drifts to its default aesthetic, which comes largely from stock photo archives. The result is technically correct and lifeless.
Establish the medium first: photograph, illustration, 3D render, vector, watercolour. Then describe the technique: line weight, colour count, texture.
Name your palette colours explicitly. "Warm tones" is vague; "rust, cream and deep green" is precise. This is also the simplest way to hold a series together — you repeat the same colour list in every prompt.
Do not name living artists. It is ethically indefensible, most tools filter those names now, and it is weak in practice: a name gives you that artist's average, while describing the technique lets you tune the result.
4. Technical: the part everyone skips
This is the most frequently omitted section and the one that changes the result most.
State the light's direction and quality: "soft window light from the left", "a single hard source from above", "overcast daylight". Light is the single detail that makes an image convincing or fake.
If you are producing a photograph, describe the lens. Models were trained on photographic archives where most images carried lens metadata: "85mm" naturalises facial proportions, "35mm" gives a wider frame including the environment, "f/1.8" blurs the background.
Finally, state the aspect ratio. Setting it at generation time always beats cropping later — the model builds the composition around it.
The four parts together
Weak prompt: "a photo of a coffee shop".
The same idea in four parts: "the window of a small speciality coffee shop (subject), on a rainy morning, wet pavement and a blurred street (setting), warm rust and cream palette, documentary photography aesthetic (style), soft window light from the left, 35mm, shallow depth of field, 3:2 ratio (technical)".
The second prompt is longer but easier to write, because you know where each piece of information goes. More importantly: when you do not like the result, you know which part to change.
Frequently asked questions
How long should a prompt be?
Structure matters more than length. A prompt containing all four parts usually runs 25–40 words. Beyond that, the end of a prompt is silently ignored in some models — put the most important information first.
How do I exclude things I don't want?
With a negative prompt. Stable Diffusion has a separate field; Midjourney uses the --no parameter. Keep it to five or ten concepts — long negative prompts do not improve results and can flatten the image.
Do I need different prompts for different tools?
The four-part structure works everywhere. What does not transfer are tool-specific parameters (--ar, --sref) and features like style reference. Your prompts move between tools; your parameter knowledge does not.