A nano banana prompt from an image: twelve things that do not line up
The request has eight fields, seven of them switches and one that carries content. This tool writes twelve measurement slots into a single string. Twelve of thirteen dimensions do not line up — and the one that needs arithmetic is the aspect ratio.
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 is not one of them, and this page does not pretend otherwise. Nothing below is a nano banana prompt that the tool writes; it cannot write one. What follows is a field-by-field comparison between the four shapes it does write and the request the nano banana models actually accept.
Put those two side by side and twelve of thirteen dimensions do not line up. The shape of the text is different, the weighting is different, where the aspect ratio lives is different, how the aspect ratio is expressed is different, whether there is a session at all is different, and the direction of the whole pipeline is reversed — this tool reads a picture and writes words, while the model takes words and writes a picture. The only dimension that lines up is the negative prompt: neither side has one.
One of the twelve needs arithmetic rather than a footnote. The ratio this tool computes is a number, taken from the file’s real width and height. The ratio the models accept is one of fourteen fixed strings. Sweeping every width and height from 200 to 4000 produces 2,188 distinct ratios from this tool, of which 13 appear in that list of 14.
How the twelve were found
Both sides were read, not guessed. The official side is the field list in Google’s own cookbook notebook for the nano banana models: the request goes through client.interactions.create(...) and takes model, input, response_modalities, previous_interaction_id, tools, and a generation_config holding image_generation_config.aspect_ratio, image_generation_config.image_size and thinking_level. That is eight fields, and only one of them carries content.
This side is the repository’s own code: src/compose.js for the four shapes, src/describe.js for the measurement slots, src/palette.js for the ratio, src/browser.js for the sampling grid. Every number in the tables below was produced by running that code, and the ratio sweep was run over 14.4 million width/height pairs.
The twelve
| Dimension | This tool’s four shapes | Nano banana request | |
|---|---|---|---|
| Shape of the text | comma tag list (Midjourney, Stable Diffusion) or short sentence run (Flux, DALL·E) | one natural-language instruction sentence | differs |
| Weighting | two of the four shapes parse brackets and :weight | no weight field anywhere in the request | differs |
| Where the ratio lives | Midjourney writes --ar 16:9 into the prompt tail | never in the prompt | differs |
| How the ratio is expressed | computed from the file, capped at 60 | 14 enumerated buckets | differs |
| Resolution | not in the prompt at all | image_size, four buckets | differs |
| Sessions | one shot, one string, no session | previous_interaction_id carries character and style across edits | differs |
| Image input | the picture is the input | input may carry up to 3 or 14 images alongside the text | differs |
| Search grounding | none | tools=[{"type":"google_search"}] | differs |
| Reasoning budget | none | thinking_level | differs |
| Where the result comes back | a string in a textarea | output_image.data, base64 | differs |
| How many content fields | 12 named measurement fields, 11 of which reach a prompt | 1 content field | differs |
| Fixed text | Stable Diffusion pins 27 characters at the front | nothing fixed | differs |
| Negative prompt | no shape emits one | no negative field | same |
Two of these are worth stating more precisely than a table row allows. Eight fields on the request, and only one of them has a counterpart here — aspect_ratio, and only partially, because it is present in just one of the four shapes and only as a tail string rather than a field. model has no counterpart because this tool has no model selector; it has four output shapes instead. image_size has no counterpart because the generated prompt never mentions a pixel dimension — measured across the four shapes, none of them writes a number like 1024×1024.
Pro narrows that gap rather than widening it. It is the only one of the three nano banana models that will not render the 512px size, and a prompt generated here supplies at most one of the three names its request asks for: see the three names a Nano Banana Pro request still needs you to type yourself.
Twelve named fields against one. describe() writes twelve: subject, framing, exposure, contrast, sat, temp, detail, dist, vert, paletteWords, mood, hint. Eleven of them are read by the composer; hint is computed and then never used. On the other side, seven of the eight request fields are switches and settings — modality, session id, tools, thinking level, ratio, size — and exactly one, input, carries the content. The measurement work this tool does has nowhere to go in that request except into that one string.
The one that needs arithmetic: the ratio
The ratio here is derived, not chosen. aspectParam() takes the file’s real width and height, divides both by their greatest common divisor, and if the larger side still exceeds 60 it scales both down to fit. The ratio the models accept is a string from a fixed list of fourteen: 1:1, 1:4, 1:8, 2:3, 3:2, 3:4, 4:1, 4:3, 4:5, 5:4, 8:1, 9:16, 16:9, 21:9.
So moving a ratio from one side to the other is not a translation, it is a rounding. Fifteen real-world dimensions, the ratio this tool produces for each, and the closest bucket the model will accept:
| File size | Real ratio | This tool: --ar | In the 14? | Nearest bucket | Error | Framing phrase this tool writes |
|---|---|---|---|---|---|---|
| 640×360 (the three sample pictures) | 1.7778 | 16:9 | yes | 16:9 | 0% | widescreen 16:9 |
| 1920×1080 | 1.7778 | 16:9 | yes | 16:9 | 0% | widescreen 16:9 |
| 1080×1920 | 0.5625 | 9:16 | yes | 9:16 | 0% | portrait 2:3 |
| 1024×1024 | 1.0000 | 1:1 | yes | 1:1 | 0% | square 1:1 |
| 4032×3024 (phone) | 1.3333 | 4:3 | yes | 4:3 | 0% | near-square 4:3 |
| 3024×4032 | 0.7500 | 3:4 | yes | 3:4 | 0% | portrait 3:4 |
| 6000×4000 (camera) | 1.5000 | 3:2 | yes | 3:2 | 0% | landscape 3:2 |
| 4000×6000 | 0.6667 | 2:3 | yes | 2:3 | 0% | portrait 2:3 |
| 1280×1024 | 1.2500 | 5:4 | yes | 5:4 | 0% | near-square 4:3 |
| 2560×1080 (ultrawide) | 2.3704 | 60:25 | no | 21:9 | −1.56% | ultra-wide panoramic |
| 1179×2556 (tall phone) | 0.4613 | 28:60 | no | 9:16 | +21.95% | tall vertical 9:16 |
| 1258×566 | 2.2226 | 60:27 | no | 21:9 | +4.98% | ultra-wide panoramic |
| 1500×1001 | 1.4985 | 60:40 | no | 3:2 | +0.10% | landscape 3:2 |
| 1913×977 | 1.9580 | 60:31 | no | 16:9 | −9.21% | widescreen 16:9 |
| 1000×999 | 1.0010 | 60:60 | no | 1:1 | −0.10% | square 1:1 |
Nine of the fifteen land on a bucket exactly. The six that do not are where the arithmetic bites, and the spread is wide: a 1258×566 crop is 4.98% away from the nearest bucket it is allowed to use, a 1913×977 screenshot is 9.21% away, and a 1179×2556 phone photo is 21.95% away. Nothing errors. The ratio simply has to become a different ratio, and the amount it changes by is not something the prompt tells you.
The full sweep behind that figure, and the pixel dimensions each accepted ratio produces at 1K, are both on the Nano Banana Pro page. This page keeps the ratio table and adds the one model whose ratio list is shorter.
The ten ratios that fit in 512px
Nano Banana 2 Lite is the cheapest of the three names and the only one with a short ratio list. It accepts ten of the fourteen — everything except 1:4, 4:1, 1:8 and 8:1 — and it renders two sizes, 512px and 1K. Ten ratios times two sizes is twenty combinations, ten of which are at 512px:
| Ratio | 512px | 1K | 1K frame |
|---|---|---|---|
| 1:1 | yes | yes | 1024 × 1024 |
| 2:3 | yes | yes | 832 × 1248 |
| 3:2 | yes | yes | 1248 × 832 |
| 3:4 | yes | yes | 864 × 1184 |
| 4:3 | yes | yes | 1184 × 864 |
| 4:5 | yes | yes | 896 × 1152 |
| 5:4 | yes | yes | 1152 × 896 |
| 9:16 | yes | yes | 768 × 1344 |
| 16:9 | yes | yes | 1344 × 768 |
| 21:9 | yes | yes | 1536 × 672 |
Three things follow. None of those ten 512px combinations can be rendered by Pro, because Pro has no 512px tier at all — that is where the two model lines stop overlapping. The four ratios Lite cannot take are the same four the cookbook lists without a frame, marked “Ultrawide / Panoramic” and “Extreme panoramic” instead of a pixel count. And the cookbook prints dimensions for one size tier only: 512px, 2K and 4K are named without a frame anywhere, so on the smallest tier the ratio you choose tells you nothing about the pixel count you will get.
Eight phrases against fourteen buckets
The ratio is not the only place the tool expresses shape. It also writes an English framing phrase, chosen by thresholds on the real ratio — eight phrases in all, from ultra-wide panoramic above 2.2 down to tall vertical 9:16 below 0.55. Those eight phrases and the fourteen buckets are two different partitions of the same axis, and they do not nest:
| Phrase this tool writes | Ratio range | Accepted buckets inside | Count |
|---|---|---|---|
| ultra-wide panoramic | 2.2 and up | 4:1, 8:1, 21:9 | 3 |
| widescreen 16:9 | 1.7 – 2.2 | 16:9 | 1 |
| landscape 3:2 | 1.4 – 1.7 | 3:2 | 1 |
| near-square 4:3 | 1.15 – 1.4 | 4:3, 5:4 | 2 |
| square 1:1 | 0.9 – 1.15 | 1:1 | 1 |
| portrait 3:4 | 0.7 – 0.9 | 3:4, 4:5 | 2 |
| portrait 2:3 | 0.55 – 0.7 | 2:3, 9:16 | 2 |
| tall vertical 9:16 | below 0.55 | 1:4, 1:8 | 2 |
Eight phrases cover fourteen buckets, and five of the eight cover more than one. The last row is the one to look at twice: the phrase is called tall vertical 9:16, yet the range it owns contains 1:4 and 1:8 — and not 9:16, which sits just above the boundary at 0.5625 and is therefore labelled portrait 2:3. The phrase is a description of a band, not a name for a bucket, and reading it as a bucket name is the easiest mistake to make on this axis.
The grid is always square
There is a second, quieter mismatch underneath the ratio. This tool never sees the picture in its own shape. The browser adapter creates a canvas whose width and height are both 192, then draws the image into it at 192 by 192 — so every file, portrait or panoramic, is stretched into the same 1:1 grid of 36,864 pixels before anything is measured. The original width and height survive only as two numbers passed alongside, and every ratio in this article is computed from those two numbers, not from the pixels.
The model works the other way round. Its ratio decides the shape of the output pixels: at the 1K setting the accepted buckets produce outputs from 768×1344 through 1024×1024 to 1536×672. So on this side the shape is a number that never touches the pixels, and on that side the shape is the pixels. That is the cleanest way to see why the ratio is the one dimension that needs arithmetic rather than a footnote: it is the only dimension where the two sides are describing the same property with different kinds of thing.
What crosses over and what has to be decided
- The measured phrases cross over. Exposure, contrast, saturation, temperature, detail and mood are plain English descriptions of what is in the file. Written into one sentence they are exactly what the model’s
inputfield expects — which is why the four shapes with the most slots are not automatically the best starting point here. - The ratio has to be rounded, and you have to decide how. Nine of the fifteen sizes above land on a bucket by themselves. For the rest, pick the nearest and accept the error, or crop to a bucket first. There is no field that takes
60:31. - Do not carry a weight across. Brackets and
:weightbelong to two of the four shapes here; there is no weight field on the other side, and the brackets would be read as ordinary characters. If a phrase needs emphasis in that request, it needs emphasis in the sentence. - Do not carry the framing phrase as a size.
widescreen 16:9is a description of a band from 1.7 to 2.2. It is not the same claim as the bucket named16:9, and pasting it into a ratio field will not work. - Keep the negative you were going to write. Neither side has a negative field. Nothing here emits one and nothing there accepts one, so if you have a list of things to avoid it belongs in the sentence, phrased positively.
- Expect the session to be the missing piece. Everything this tool produces is a one-shot string. The request can point back at a previous interaction to keep a character consistent across edits, and a single generated prompt cannot supply that.
Three questions about the mismatch
Three “People also ask” boxes, captured on 2026-10-02. The answers draw on two sources only: field names from Google’s cookbook notebook, and counts from the twelve dimensions in the table above.
What is the prompt for nano bananas?
For these models the prompt is a sentence, not a tag list. The request takes one input string plus seven fields that are switches rather than content, so there is no slot list to fill and no place to put a weight. From a picture, the useful half of what this tool measures is the descriptive half — exposure, contrast, saturation, temperature, detail, mood — which reads as ordinary English inside a sentence.
What are the best nano banana prompts?
Not a fixed list, because the content here is arithmetic on the file rather than a house style. What is worth knowing is where the two sides refuse to meet. The ratio is the clearest: this tool computes one from the real width and height and can produce 2,188 distinct values, while the request accepts 14, so a 1913×977 screenshot has to become 16:9 and move 9.21% to do it. Decide that rounding deliberately instead of letting it happen.
How to write a prompt for nano banana pro?
Pro is the one where the extra fields change the most: it accepts the long ratios from 1:4 and 1:8 up to 4:1 and 8:1 that the smaller model does not, it takes the 2K and 4K sizes, and it is one of the two models that accept the search-grounding tool and a reasoning level. None of that has a counterpart in a generated prompt — all four of the shapes this tool writes are a single unweighted string, and the size and ratio have to be set on the request, not written into the text.
Three places to go next: what a ComfyUI prompt does with the same line for the parser that reads brackets on the node side; where the weights go in a Stable Diffusion prompt for the shape most checkpoints were trained on; and the Flux prompt or the ChatGPT image prompt for the two shapes that end in sentences. The arithmetic behind the band this tool works in is on how to weight a prompt and write a negative.