How to prompt ChatGPT for images: the line is a caption, not an instruction
Put a photograph into this image to prompt tool and you get back a description of the picture you already have, not a request for a picture you do not. That is the whole answer, and it is measurable: across 480 lines generated from forty real files, twelve imperative verbs, nine pronouns and six modals were searched for by whole word and not one of them appeared once. So the part you have to write yourself is the one sentence that turns a caption into a request — and there is exactly one grammar problem waiting for you when you do, on two of the four shapes.
Everything below comes from running this site’s own code over forty real files: 39 stock photographs plus one code screenshot, decoded on this machine and box-downsampled to 192 × 192, the grid the live tool measures on, then composed into all four shapes at three lengths. No model was called and no image was generated. Where a line is quoted, it is a line this tool produced.
Two of the four shapes are already sentences
The shape you pick decides whether you are holding prose or a tag list before you have written anything. Flux and DALL·E come out with a capital letter, an article and a full stop on every line. Midjourney and Stable Diffusion come out as one long comma list with none of those, on every line.
| Shape | Lines | Starts with a capital | Ends with a full stop | Opens with an article | Full stops per line | Commas (median) | Has is / are |
|---|---|---|---|---|---|---|---|
| Midjourney | 120 | 0 | 0 | 0 | 0 | 12 (7–16) | 0 |
| Stable Diffusion | 120 | 0 | 0 | 0 | 0 | 14 (9–18) | 0 |
| Flux | 120 | 120 | 120 | 120 | 3–8 | 5 (3–7) | 120 |
| DALL·E | 120 | 120 | 120 | 120 | 1–3 | 8 (5–10) | 0 |
The full-stop counts are not random. DALL·E writes one sentence at the short length, two at medium and three at long — 40 lines each. Flux writes three, five and seven respectively, and one more whenever the file is monochrome, because that adds a sentence for the subject; four of the forty files hit that. Flux is also the only shape whose lines contain a verb: The dominant colours are … appears in 120 of 120 lines, and The frame is dominated by … in 12 of 120, which is those same four files at three lengths. DALL·E carries the same phrase as a participle with no verb attached — A widescreen 16:9 image dominated by black and white photograph — also 12 of 120.
One more thing you can count on: every Midjourney line ends with the ratio parameter, 120 out of 120, because the parameter is appended after the list. If you paste that line into a chat model, the last thing it reads is --ar 16:9, which is not prose and has no business being there.
Twelve imperatives, nine pronouns, six modals: none of them appear
A request needs a verb and, usually, someone being asked. Neither exists anywhere in the output. Each of the following was searched for as a whole word across all 480 lines:
- Imperatives (12): generate, create, make, draw, render, produce, design, paint, show, give, write, illustrate — 0 hits.
- Pronouns (9): you, your, yours, yourself, i, me, my, we, us — 0 hits.
- Modals and politeness (6): please, can, could, would, should, must — 0 hits.
- Punctuation that would make it a request: 0 question marks and 0 exclamation marks in 480 lines.
That is the structural reason the line reads as a caption. What is in the Flux lines, 120 out of 120, is a capital letter following a full stop mid-line — real sentence boundaries, not just a decorated list. DALL·E shows the same pattern in 80 of 120 lines, because at the short length it is a single sentence and there is no boundary to show. Neither shape ever asks for anything.
One prefix, two grammars
So you add the request yourself. Four ways of doing it were tried on the long line, 40 files × 4 shapes = 160 lines per variant, and every edited line was read back through this site’s weight parser to see what changed underneath the words.
| What you add | Characters, Midjourney / SD | Characters, Flux / DALL·E | Fragments added | Out-of-range | Round-trip |
|---|---|---|---|---|---|
Generate an image of at the front | +21 | +21 | +0 | same, 160/160 | same, 160/160 |
| Same, after dropping the opening article | +21 | +19 | +0 | same, 160/160 | same, 160/160 |
Please generate a picture of at the front | +29 | +29 | +0 | same, 160/160 | same, 160/160 |
. Render it as a photograph. at the end | +28 | +28 | +0 | Midjourney 1 → 0, 40/40; others same | same, 160/160 |
The grammar problem is the article, and it lands on exactly two shapes. Midjourney and Stable Diffusion lines start with a lowercase noun phrase, so the prefix reads cleanly:
Generate an image of widescreen 16:9 composition, well-lit, balanced exposure, dominant palette of tan, brown, olive, …
Flux and DALL·E lines already start with A , in 40 of 40 files each, so the same prefix produces a doubled article:
Generate an image of A widescreen 16:9 image. Bright, high-key lighting. The dominant colours are silver, …
Deleting those two characters costs nothing on the Midjourney and Stable Diffusion shapes, because there is nothing to delete, and saves 2 characters on the other two — +19 instead of +21. What it does not fix is the word image: the Flux and DALL·E shapes already contain it, so the finished sentence says “an image of … image”. Counted across the four shapes, the finished line contains the word image, picture or photograph once on 36 of 40 Midjourney and Stable Diffusion files and twice on the other 4 — those are the four monochrome files, whose subject line reads black and white photograph — while Flux and DALL·E come out at two and three.
The fourth row is the one worth being careful with. Appending a sentence to the end of a Midjourney line takes its out-of-range count from 1 to 0 in 40 of 40 files, which looks like a fix and is not. The baseline line carries one out-of-range weight on every single file, because the parser reads the trailing --ar 16:9 as a weight of 9; once something follows the ratio, that term no longer ends in a number, so the parser stops reading it as a weight. The complaint disappears because the parameter stopped being the last token — which is the only position it is valid in. Nothing was repaired.
The order of the words was fixed before you saw them
You cannot ask the tool to put the colours in a different order, and the order it uses is not the one writers would pick. The colour names are ordered by how many pixels each cluster holds, and nothing else:
| Candidate ordering | Files where it matches the line |
|---|---|
| By pixel share, highest first | 38 / 40 |
| By lightness, lightest first | 2 / 40 |
| By lightness, darkest first | 5 / 40 |
| Alphabetically | 1 / 40 |
| By the length of the colour name | 3 / 40 |
The two files that break the pattern break it for a reason worth knowing, because it is the same reason the shares sometimes look out of order. On one file the palette reads charcoal 46.03% | slate 19.87% | grey 15.73% | silver 17.45% | white 0.58% — silver holds more of the picture than grey and yet is written after it. What happened is that two separate clusters were both nearest to the name silver: 14.57% and 2.88%. The first one takes the slot, the second one is added into it, and the total becomes 17.45% while the position stays where the first cluster put it. The same thing happens on the second file, where charcoal absorbs a later 2.45% and ends up at 31.88% behind a 30.33% name. A colour can therefore be the second most common in the picture and still be written fourth.
There is also one name you never see. The palette measures up to five clusters, and 38 of the 40 files have all five; the line writes at most four of them, because the vocabulary step stops at four. On those 38 files a measured colour is dropped before the prompt is built.
The slots themselves are in a fixed order too, and it is the same order on every file, because it is the order the composer concatenates them in rather than anything to do with your picture. On Midjourney and Stable Diffusion: framing, exposure, saturation, temperature, contrast, detail, light distribution, vertical balance, mood — nine slots, with the palette line spliced in third. Flux writes seven of those, DALL·E six, in the same relative order. Measured by finding each clause inside the finished line, that exact sequence shows up on 27 of 40 files with four orderings in total on those two shapes, and two orderings on Flux and DALL·E.
Reverse the line and nothing in the parser notices
Since the order is presentation rather than structure, it is worth asking what happens if you simply rewrite it. Reversing every fragment — the comma-separated ones on Midjourney and Stable Diffusion, the sentences on Flux and DALL·E — changes nothing that any checker can see:
- Characters: identical, 0 change on 40 of 40 files in all four shapes.
- Fragment count: identical, 0 change on 40 of 40 files in all four shapes.
- Weights out of range: the same as baseline on 40 of 40 files in all four shapes.
- Round-trip through the explicit-weight writer: the same as baseline on 40 of 40 files in all four shapes.
The median number of fragments being moved is 15 on Midjourney, 17 on Stable Diffusion, 7 on Flux and 3 on DALL·E. After reversal, the Flux and DALL·E lines still start with a capital and end with a full stop on 40 of 40 files, because every sentence moved as a unit; the Midjourney and Stable Diffusion lines still do neither, 0 of 40. So the two conventions survive a reversal and the content does not care — the first fragment is now moody and dramatic atmosphere instead of widescreen 16:9 composition, and nothing downstream objects. Anything you read into the first fragment being the subject of the line is a habit, not a rule.
Before you paste it into a chat, in the order that matters
- Decide whether you want prose or a tag list. Two of the four shapes give you sentences already, with a capital letter and a full stop on 120 of 120 lines; the other two give you a comma list with no capital and no full stop on 120 of 120. Pick the sentence shape first and half the rewriting disappears.
- Strip the parameter before you do anything else. Every Midjourney line ends with
--ar 16:9, 120 out of 120. It is not prose, and leaving it in place is also what keeps the parser reporting one out-of-range weight on every file. - Add the verb yourself, and expect one collision. Twelve imperatives were searched for and none is in the line, so the request is entirely yours to write. On the two sentence shapes, delete the opening
Afirst — it is there on 40 of 40 files — or you will write “an image of A … image”. - Do not bother reordering the description. Reversing every fragment left the character count, the fragment count, the weight check and the round-trip untouched on 40 of 40 files in all four shapes. Put your own sentence first instead; that is where a reader looks.
- Remember the colours are counted, not chosen. Thirty-eight of forty files list them by pixel share, highest first, and a colour can carry 17.45% of the picture and still be written behind one with 15.73%. If you want a colour to lead, name it in your own sentence.
Forty files, four hundred and eighty lines, four edits, no model called
Forty real files — 39 stock photographs at 640 × 360, plus one code screenshot at 800 × 450 — were decoded on this machine and box-downsampled to 192 × 192, the grid the live tool measures on, so every figure here matches what this site would tell you for the same file. Each was composed into all four shapes at three lengths: 480 lines. The four edits were applied to the long line only, 160 lines each, and every edited line was read back through parsePrompt, checked with outOfRange against the 0.4–1.6 band and with toExplicit for the round-trip, always compared against that file’s own baseline rather than against an absolute number. Where this page says a line “reads back as” some weight, that is the parser’s answer on this site, not a claim about what any chat model or image generator will do with the words. No model was called, no image was generated, and nothing here is taken from another site’s wording.
What the line leaves for you to say
The description is finished before you arrive: forty files, four shapes, and not one request among them. What is left for you is the verb, the subject you actually want, and the one detail measurement could never have guessed — and those are exactly the parts the tool cannot invent for you. If you want to see how the sentence shape is assembled clause by clause, start with the shape of the line this site writes for ChatGPT; for the twelve measurements behind every clause, see what an image to prompt tool measures; for producing that line from a picture in the first place, see how to generate a prompt from an image; and for the closed vocabulary every clause is drawn from, see what an image describer actually writes.