visualtoprompt.com

A Nano Banana Pro prompt from an image: three names you type yourself

A request to Pro asks you to name three things — the model, the shape and the size. A prompt generated from your picture supplies at most one of them: the shape, and only from the Midjourney output. The other two are 127 characters you add by hand.

Read this first, because it decides how to read everything below. This site’s generator writes prompts in four shapes — Midjourney, Stable Diffusion, Flux and DALL·E. Nano Banana Pro is not one of them, and this page does not pretend otherwise. Nothing below is a Pro prompt that the tool wrote; it cannot write one. No API was called and no picture was generated. What follows is what still has to be supplied by hand when you take a generated line and put it in a Pro request.

Three names, one of which the generator gives you. Across twelve real outputs — four shapes, three pictures — the tool named the model 0 times, named a pixel size 0 times, and carried a usable shape string 3 times, all three from the Midjourney shape and all three written into the prompt text rather than into a request field.

The three names, and how many of them you get

Right column counted over twelve outputs: four shapes × the three pictures this site uses, each measured on a 192 × 192 grid.
NameWhat a Pro request wantsWhat the generator suppliesMeasured
modelone id string, gemini-3-pro-image-previewnothing — the tool has no model selector, only four output shapes0 of 12
aspect_ratioone of fourteen fixed stringsMidjourney only, as a --ar tail inside the prompt text, never as a field3 of 12
image_sizeone of 1K, 2K, 4Knothing — no shape writes a pixel dimension anywhere0 of 12

That is the whole problem in one table. The descriptive half of the work — exposure, contrast, saturation, temperature, detail, mood — is what this tool does, and it reads as ordinary English in a request. The three names are switches, and they are not in the text.

Pro is the only one of the three with nothing of its own

The cookbook lists three models. Read the capability lines carefully and an odd shape appears: everything the cookbook attributes to Pro, it also attributes to Nano Banana 2 — reasoning, 4K output, complex typography, multi-image composition, search grounding. Meanwhile three things appear on Nano Banana 2’s line and not on Pro’s: the 512px size, image grounding, and video-to-image input. As listed, the flagship is the narrower model.

Ratio column and size column are the cookbook’s own per-model tables; the combination count is the product of the two.
ModelIdRatiosSizesCombinations
Nano Banana 2 Litegemini-3.1-flash-lite-image10512px, 1K20
Nano Banana 2gemini-3.1-flash-image14512px, 1K, 2K, 4K56
Nano Banana Progemini-3-pro-image-preview141K, 2K, 4K42

Two numbers fall out. Pro accepts 42 combinations against Nano Banana 2’s 56, and the 14 it is missing are exactly the fourteen ratios at 512px — Pro is the only one of the three that cannot render the smallest size, the size the two cheaper models both offer. And Pro overlaps with Lite in only 10 combinations: the ten ratios all three models share, at 1K and nowhere else.

The size you never measured

This tool reads your picture on a 192 × 192 grid — SAMPLE_SIZE = 192 in src/browser.js, a square canvas that every file is stretched onto, so 36,864 pixels is the entire evidence base for every word in the prompt. Set that against the one size tier the cookbook gives pixel dimensions for.

Cookbook 1K dimensions. The ten ratios here are the ones the cookbook publishes numbers for; the other four are listed as “Ultrawide / Panoramic” and “Extreme panoramic” with no pixel count at all.
Ratio1K framePixels× the 192 gridWhat the tool measured
1:11024 × 10241,048,57628.443.516%
2:3832 × 12481,038,33628.173.55%
3:21248 × 8321,038,33628.173.55%
3:4864 × 11841,022,97627.753.604%
4:31184 × 8641,022,97627.753.604%
4:5896 × 11521,032,192283.571%
5:41152 × 8961,032,192283.571%
9:16768 × 13441,032,192283.571%
16:91344 × 7681,032,192283.571%
21:91536 × 6721,032,192283.571%

Every published 1K frame is between 27.75 and 28.44 times the pixels this tool read. The shortest edge the cookbook prints is 672px, which is 3.5 times the 192px the measurement grid uses; the longest is 1536px, 8 times it. And the four ratios with no published dimensions at all — 1:4, 4:1, 1:8, 8:1 — are precisely the four that only Nano Banana 2 and Pro can render.

The shape, for twelve real picture sizes

The ratio this tool computes comes from the file’s real width and height, reduced by their greatest common divisor and capped at 60. Below, twelve common camera, phone and social sizes, each run through that function.

“Hit” means the size is exactly one of the fourteen official ratios. “Models” is the cookbook’s own per-ratio support column. The framing phrase is what this tool writes into the prompt.
Picture sizeTool’s --arOfficial hitModelsFraming phrase written
1080 × 10801:11:1all threesquare 1:1
1080 × 13504:54:5all threeportrait 3:4
1350 × 10805:45:4all threenear-square 4:3
1600 × 90016:916:9all threewidescreen 16:9
3840 × 216016:916:9all threewidescreen 16:9
2160 × 38409:169:16all threeportrait 2:3
1440 × 25609:169:16all threeportrait 2:3
828 × 179228:60none—tall vertical 9:16
750 × 133434:60none—portrait 2:3
2732 × 204860:45none—near-square 4:3
4000 × 30004:34:3all threenear-square 4:3
3440 × 144043:18none—ultra-wide panoramic

Eight of the twelve land exactly on an official string, and all eight sit in the set every model renders, so Pro is no harder to please than the others here. Four miss entirely: 28:60, 34:60, 60:45 and 43:18. Two of those four are ordinary phone screenshots, and one of them — 2732 × 2048 at 60:45 — is arithmetically almost exactly 4:3 but not quite, which is the sort of near miss that survives every sanity check you would do by eye. For those four you pick the nearest of the fourteen yourself.

One more mismatch worth knowing: the framing phrase is chosen by thresholds in src/describe.js, not by the ratio vocabulary. A 1080 × 1350 picture is written as “portrait 3:4” while its actual ratio is 4:5, and a 2160 × 3840 picture is written as “portrait 2:3” while its ratio is 9:16. Take the ratio from the --ar tail, not from the phrase.

The one ratio the tool writes under a different name

Sweeping every width and height from 200 to 4000 produces 2,188 distinct ratio strings from this tool. Of those 14.4 million pairs, 12,804 have a real ratio that is exactly one of the fourteen official ones. In 12,299 of those cases the tool writes the official string itself. In the remaining 505 it does not — and every one of the 505 is 21:9, written as 7:3, because the greatest common divisor of 21 and 9 is 3.

So a picture that really is 21:9 — 469 × 201, 476 × 204, 483 × 207 and 502 others — comes out of this tool as 7:3, which is not a string the request accepts. If the tail says 7:3, send 21:9.

What the finished request looks like

Put a generated line into the smallest correct Pro request — model, input and a generation_config holding aspect_ratio and image_size — and measure the two halves. The three pictures are the ones this site uses throughout: a night sky, a strongly back-lit field, and a text screenshot.

“Settings” is everything in the request except the generated text: the model id and the two image settings. Measured as JSON, one key ordering, no extra keys.
PictureShapePromptWhole requestSettingsSettings shareSupplies
night skyMidjourney319 chars45812827.9%1 of 3
night skyStable Diffusion336 chars47412726.8%0 of 3
night skyFlux273 chars41112730.9%0 of 3
night skyDALL·E219 chars35712735.6%0 of 3
back-lit fieldMidjourney291 chars43012829.8%1 of 3
back-lit fieldStable Diffusion308 chars44612728.5%0 of 3
back-lit fieldFlux247 chars38512733%0 of 3
back-lit fieldDALL·E203 chars34112737.2%0 of 3
text screenshotMidjourney266 chars40512831.6%1 of 3
text screenshotStable Diffusion283 chars42112730.2%0 of 3
text screenshotFlux238 chars37612733.8%0 of 3
text screenshotDALL·E219 chars35712735.6%0 of 3

The hand-written part is 127 or 128 characters of a 341 to 474 character request: between 26.8% and 37.2%, mean 31.7%. It is a third of the request, it never changes with the picture, and it is the third that decides the frame.

The same exercise against a model whose request has seven fields instead of five gives a different count entirely — see what a Grok image request asks for that a generated prompt cannot supply.

Six things to do about it

How these numbers were produced

Both sides were read, not guessed. The right-hand side is Google’s own cookbook notebook for these three models: the per-ratio support column, the per-size support lines, the 1K dimension table, and the model ids. Public documentation is the comparison, not the claim. The left-hand side is this repository run on this machine: src/palette.js for the ratio arithmetic, src/browser.js for the 192 grid, src/compose.js for the four shapes, src/describe.js for the framing thresholds, with the three pictures sampled to 192 × 192 in the same way the live tool does. The ratio sweep covered 14.4 million width/height pairs; the request sizes were measured as JSON built from each real output.

For the fourteen buckets this tool has to round into, see the twelve things that do not line up between this tool and a nano banana request; for the two sentence-shaped outputs, see the Flux prompt and the ChatGPT image prompt; for the shape whose tail carries the ratio at all, see the Midjourney prompt; and for what gets lost before any of this, see where your image goes when it is measured.