visualtoprompt.com

How do I prompt an image?

Generate the line here first, then put your own sentence at the front of it. We took forty photographs, composed each into all four shapes, made five different edits to every line — 800 edited lines — and read each one back through this site’s own weight parser. Adding at the front is the only edit that behaves identically in all four shapes: 160 times out of 160 your words became the first fragment, at weight 1, for 19 extra characters. The end of the line, a pair of brackets, a weight on the palette and deleting the palette all behave differently depending on which shape you are holding.

What was measured. Forty real files — 39 stock photographs at 640 × 360 and 800 × 450, plus one code screenshot — decoded on this machine and box-downsampled to the 192 × 192 grid the live tool measures on, then composed into all four shapes at the long length. Every edited line was then run through parsePrompt, outOfRange and toExplicit from this site’s own weight parser. No model was called and no image was generated anywhere in this page.

The question has two halves, and only one of them happens here. Turning a prompt into an image happens inside a generator; this site runs the other direction, image to prompt. What it can do for you is hand over a line that already describes your file accurately, in the shape your generator reads, so that the only thing left for you to write is the thing no measurement can produce: what you actually want. That leaves five places to touch the line. Here is what each one does.

Start from the line the tool already wrote

Before editing anything, it is worth knowing what you are editing. Four shapes, forty files, long length, no edits yet:

Medians and ranges over 40 files, long length, no edits applied.
ShapeCharactersRangeFragmentsRangeOut of rangeRound-trips unchanged
Midjourney300.5253–3401513–1710 / 40
Stable Diffusion317.5270–3571715–19040 / 40
Flux261.5222–32975–8040 / 40
DALL·E222203–269108–11040 / 40

The last column matters more than it looks. “Round-trips unchanged” means the parser can rewrite the line with every weight spelled out and get back exactly what it started with. Three shapes do that for all forty files. The Midjourney shape does it for none of them, because that line ends in —ar 16:9, the parser reads the colon and the 9 as an explicit weight, and 9 is far outside the usable band. That is not a defect you introduced by editing; it is already there, on all forty files, before you touch anything. Every Midjourney figure further down this page inherits it.

Put your sentence at the front

Five edits, applied to every line in all four shapes. The test sentence is four words and 17 characters, shot on 35mm film — the sort of thing you would actually add.

Five edits × four shapes × 40 files. “Fragments” is what the parser splits the line into; it cuts on commas, not on sentences.
EditCharactersFragmentsWhere your words landWeight on them
Add at the front+19+1first fragment, 160 / 1601
Add at the end+19+1last fragment; on Midjourney, 40 / 40 after --ar1
Wrap the whole line in brackets+20—every fragment becomes 1.1
Weight the palette clause (…:1.3)+60 / 0 / +2 / +1the last colour only1.3 on one, 1.1 on three
Weight one colour (white:1.3)+6+1that colour, 120 / 120 on three shapes1.3
Delete the palette clause−62 to −38−2 to −4—unchanged

Adding at the front is the whole recommendation, and the numbers behind it are boring in the best way: the same 19 characters in every one of the 160 cases, exactly one new fragment every time, and that fragment is always the first one the parser sees at weight 1. Nothing else about the line moves. On the Stable Diffusion shape your sentence also lands ahead of masterpiece, best quality, which is the right order — a quality tag is not a subject.

How much of the line your four words are depends on the shape, because the shapes are not the same length: 5.3% of the Midjourney line, 5.1% of the Stable Diffusion line, 6.1% of the Flux line and 7.1% of the DALL·E line. That is the honest size of the hand-written part. It is small, and it is the only part of the line that says anything about what you want.

The end of the line is a different place in each shape

Adding at the end costs the same 19 characters and the same one fragment, and your sentence still comes back at weight 1. So far it looks identical to adding at the front. It is not.

Three of the four shapes end in ordinary text. The Midjourney shape ends in a parameter: --ar 16:9. If you append to that line, your words go after the parameter — and that happened on 40 of 40 files, versus 0 of 40 on the other three shapes. The parser does not mind: it cuts on the comma you added and hands your sentence back as a separate final fragment at weight 1. But the fragment immediately before it is moody and dramatic atmosphere --ar 16 read at weight 9, because the parser took the 9 in the ratio for a weight. Whatever your generator does with a ratio and with text that follows it, it is not the same thing it does with text that precedes it — and the order is the only thing you changed.

There is a second, quieter difference. Where in the line your sentence ends up as a numbered fragment depends on the shape, because the shapes have different numbers of commas: fragment 14 to 18 on Midjourney, 16 to 20 on Stable Diffusion, 6 to 9 on Flux, 9 to 12 on DALL·E. Weight decays from left to right, so “the last fragment” is a weaker position on a seventeen-fragment list than on a seven-fragment one.

One pair of brackets raises everything, including the number that was already wrong

Wrapping the whole line in a single pair of brackets is the most tempting edit on this list, because it looks like one gesture that emphasises everything. It costs 2 characters and adds no fragments — and it gives every fragment in the line a weight of 1.1. Here is one file, all four shapes, every weight the parser reads back:

Midjourney        1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  9
Stable Diffusion  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1
Flux              1.1  1.1  1.1  1.1  1.1  1.1  1.1
DALL·E         1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1  1.1

Three shapes come out completely flat: everything at 1.1, nothing singled out, which is another way of saying nothing emphasised. The Midjourney shape comes out flat too — except for the trailing 9, which the brackets did not fix, because it was never a bracket effect in the first place. Emphasising a whole line is the same as emphasising none of it, with one number left over that was already out of bounds.

Weight one colour, not four

The colour clause is the part of the line most people want to push, and it is the part where intent and outcome separate most clearly. It is written differently in each shape — dominant palette of … on the two list shapes, The dominant colours are …. on Flux, with a palette of …. on DALL·E — but it always contains four colour names separated by commas. The parser cuts on commas. So when you wrap the whole clause in (…:1.3), you do not weight four colours:

Midjourney        …, (dominant palette of white, charcoal, silver, grey:1.3), …
  reads back       1  1  1  |  1.1  1.1  1.1  1.3  |  1  1  1  1  1  1  1  9

Stable Diffusion  …, (dominant palette of white, charcoal, silver, grey:1.3), …
  reads back       1  1  1  1  1  |  1.1  1.1  1.1  1.3  |  1  1  1  1  1  1  1  1

Flux              …. (The dominant colours are white, charcoal, silver, grey.:1.3) …
  reads back       1  1  |  1.1  1.1  1.1  1.3  |  1  1  1

DALL·E         …, (with a palette of white, charcoal, silver, grey.:1.3) …
  reads back       1  1  1  |  1.1  1.1  1.1  1.3  |  1  1  1  1  1

Three colours pick up 1.1 from the bracket they are sitting inside. The fourth picks up the 1.3 you asked for — and on the two sentence shapes, the fragment that gets it is grey. with the full stop still attached, because the full stop was inside the clause. Each shape also leaves behind one orphan fragment that still contains the words dominant palette of, The dominant colours are or with a palette of: a fragment that is neither a colour nor anything you meant to say.

Weighting a single colour instead is clean. Six characters, one new fragment, and on the three shapes that start with no out-of-range term the 1.3 lands on exactly the colour you named — 120 out of 120 files. On the Midjourney shape it lands there too; the shape simply also still carries its own 9, so a scan of that line will always report something.

Deleting the palette costs you nothing except on one shape

Removing the colour clause is the cheapest way to stop the line from talking about colour at all: between 38 and 62 characters gone, and two to four fewer fragments, depending on the shape and on how long the four colour names happen to be. On the Midjourney shape the line loses three or four fragments out of fifteen; on Flux, two or three out of seven.

One shape does not survive the deletion cleanly. On DALL·E the clause carries the only full stop in the first sentence and a leading comma, so taking it out welds two sentences together:

before   A widescreen 16:9 image, well-lit, balanced exposure, with a palette of white, charcoal, silver, grey. Muted, desaturated tones, …
after    A widescreen 16:9 image, well-lit, balanced exposure Muted, desaturated tones, …

balanced exposure Muted is not a fragment anyone would write. The other three shapes drop the clause and leave grammatical text behind; this one does, on all forty files. If you are editing the DALL·E shape, replace the clause rather than removing it.

Wanting a different ratio: write it in words, not as a parameter

Three of the four shapes carry no size instruction at all, so “I want it wider” is an edit you have to make by hand. There are two ways to make it, and they are not equivalent.

The same intent, four ways of writing it. “Out of range” counts fragments whose weight falls outside 0.4–1.6.
What you appendShapeCharactersFragmentsOut of range (before)Highest weightLast fragment
--ar 4:5 as a second parameterMidjourney+901 (1)5natural atmosphere --ar 16:9 --ar 4
--ar 4:5 replacing the originalMidjourney−101 (1)5natural atmosphere --ar 4
--ar 4:5Stable Diffusion+901 (0)5natural atmosphere --ar 4
--ar 4:5Flux+901 (0)5natural atmosphere. --ar 4
--ar 4:5DALL·E+901 (0)5natural atmosphere. --ar 4
4:5 aspect in plain wordsStable Diffusion+12+10 (0)14:5 aspect
4:5 aspect in plain wordsFlux+12+10 (0)14:5 aspect
4:5 aspect in plain wordsDALL·E+12+10 (0)14:5 aspect
4:5 aspect in plain wordsMidjourney+12+11 (1)94:5 aspect

Written as a parameter, the ratio is read as a weight: the 5 in 4:5 becomes a weight of 5, which is outside the usable band, and the text in front of it is cut short at the colon — natural atmosphere --ar 4 is what survives of the sentence. On the three shapes that had nothing out of range to begin with, that takes them from zero out-of-range fragments to one, and it also breaks the round-trip: the parser can no longer rewrite the line and get back what it started with. Written as plain words, the same intent stays a normal fragment at weight 1, adds one fragment, and leaves all three of those shapes exactly as they were.

One more thing to know before you write your sentence: a comma inside it counts. shot on 35mm film, warm costs 25 characters and adds two fragments, not one, in every shape. If you want one idea to be one fragment, keep it to one comma-free clause.

Six moves, in the order you would make them

  1. Generate first, edit second. The line you are editing already carries measurements taken from your file on a 192 × 192 grid; rewriting it from scratch throws that away and keeps nothing.
  2. Pick the shape by the generator you are going to use. The four shapes are not four styles of the same sentence — they split into different numbers of fragments (15, 17, 7 and 10) and only one of them carries a ratio.
  3. Write your sentence at the front. It is the only edit that behaved identically 160 times out of 160: first fragment, weight 1, 19 characters.
  4. Skip the brackets. Wrapping the line raises everything to 1.1 and singles out nothing.
  5. Weight a single colour, never the clause. One colour lands on the colour you named in 120 of 120 cases; the clause gives 1.3 to the last colour only, 1.1 to the three before it, and leaves an orphan fragment behind.
  6. If you want a different ratio, write it in words on three of the shapes. As a parameter it becomes a weight of 5 and takes a clean line out of range; as words it stays a fragment at weight 1.

Forty photographs, five edits, eight hundred lines

Forty real files — 39 stock photographs at 640 × 360 and 800 × 450, plus one code screenshot — were decoded on this machine and box-downsampled to 192 × 192, the grid the live tool measures on, so every figure matches what this site would tell you for the same file. Each was composed into all four shapes at the long length, and each of five edits was applied to every line: 800 edited lines, plus a sixth edit on 160 more. Every edited line was read back through parsePrompt, and checked with outOfRange against the 0.4–1.6 band and with toExplicit for the round-trip. The test sentence is shot on 35mm film; nothing about the results depends on what it says. Where this page says a fragment “lands” on something, that is the parser’s answer, not a claim about what any generator will draw. No model was called, no image was generated, and nothing here is taken from another site’s wording.

For the measurements that produce the line in the first place, see what an image to prompt tool measures; for turning a picture into that line, see how to generate a prompt from an image; for what a weight actually does to a fragment and where the usable band comes from, see how weighting and negatives work; for the shape that carries the ratio — and the one number that never behaves — see the Midjourney shape from an image; and for the closed vocabulary the description is drawn from, see what an image describer actually writes; and for what the line actually is — adjectives about light and colour, with colour names as its only nouns — see what a picture prompt is.