You needed a 9:16 vertical for Reels and got back a 1:1 square. Or you typed --ar 21:9 for a cinematic shot and got 16:9. The image content is fine. The aspect is just wrong.
This is almost always a UI or parameter problem, not a model problem. Each platform parses aspect differently, some models silently ignore the flag, and a few don’t support extreme ratios at all.
Fastest fix: set the ratio in the platform’s own control, not in prose. Midjourney uses the --ar flag; ChatGPT and Gemini take a plain-language request (“make it 16:9”); local SDXL/Flux take explicit Width and Height fields. If you typed a Midjourney flag into a tool that isn’t Midjourney, it was eaten as text and ignored. Below is the per-platform syntax, the current supported-ratio lists (verified June 2026), and the override traps that cause a square to come back.
Which bucket are you in?
| Symptom | Most likely cause | Jump to |
|---|---|---|
You typed --ar 9:16 outside Midjourney and got a square | Wrong syntax for the platform | Step 1 |
| ChatGPT keeps returning 1:1 no matter what you ask | Only 3 sizes exist; ratio not requested clearly | Step 1 (ChatGPT) |
| Gemini ignores “16:9” and stays square | Phrasing not picked up / old Imagen path | Step 1 (Gemini) |
| Local UI ignores the prompt and outputs 1024x1024 | UI Width/Height overrides the prompt | Step 4 |
9:16 returns 1:1 but 2:3 works | Extreme ratio not in the model’s set | Step 2 + Step 3 |
| Pixels look right but the math is off | You set 768x1344 thinking it equals 9:16 | Step 5 |
| Model output is correct, export is wrong | Auto-export/preview re-crop | Step 6 |
Common causes, by hit rate
1. Aspect parameter written in unsupported syntax
--ar 9:16 is a Midjourney flag. Paste it into an SDXL UI, ChatGPT, or Gemini and it is treated as plain prompt text and ignored, so you get the model’s default (usually 1:1).
How to spot it: your aspect string is --ar X:Y and you are not on Midjourney.
2. The model has a fixed set of output sizes
Hosted models often expose only a few presets. ChatGPT’s image model (gpt-image-1, the replacement after DALL-E 3 was retired on May 12, 2026) outputs only 1024x1024, 1024x1536 (portrait), or 1536x1024 (landscape). There is no continuous ratio control and no --ar flag.
How to spot it: the docs or the size dropdown list only two or three fixed dimensions.
3. UI default overrides the prompt
You wrote 16:9 in the prompt, but the UI’s Width/Height (or a resolution dropdown) is set to a square. In ComfyUI, A1111, and Forge the explicit numeric fields always win over any text in the prompt.
How to spot it: the UI resolution fields do not match what you asked for in words.
4. Extreme ratio not supported by the model
Very wide or very tall ratios (32:9, 1:5) fall outside what a checkpoint was trained on. The model snaps to the nearest supported bucket.
How to spot it: 9:16 returns 1:1 but 2:3 works fine. The model has a constrained set.
5. Aspect set in pixels, and the math is off
You set 768x1344 thinking it equals 9:16. Do the math: 768/1344 = 0.571, which is 4:7, not 9:16 (= 0.5625). For SDXL this is intentional (768x1344 is the nearest 1-megapixel training bucket to vertical), but if you needed exact 9:16 you are slightly off.
How to spot it: divide width by height and compare to your target.
6. Output saved or exported in a different aspect
The model generated correctly, but a platform preview or auto-export re-cropped it (square Instagram preview, social card crop, etc.).
How to spot it: download the raw original PNG and check its real dimensions.
Shortest path to fix
Step 1: Use the right control per platform
# Midjourney (v7 / v8 — flag, no decimals)
"... --ar 9:16"
"... --ar 16:9"
"... --ar 1:1" (default)
"... --ar 21:9"
"... --ar 3:2"
# decimals are rejected: use 139:100, not 1.39:1
# ChatGPT (gpt-image-1) — plain language, 3 sizes only
"make this 9:16 vertical" -> 1024x1536
"make this 16:9 wide" -> 1536x1024
"square" -> 1024x1024 (default)
# no --ar flag; anything else snaps to the nearest of the three
# Gemini (Nano Banana 2 / Gemini 3.1 Flash Image) — plain language
"generate this in 16:9" # or 9:16, 4:3, 3:4, 2:3, 3:2, 5:4, 4:5, 21:9, 1:1
# API: set aspect_ratio in ImageConfig, e.g. aspect_ratio="16:9"
# SDXL via A1111 / Forge — set Width x Height in the UI
- 1:1 -> 1024x1024
- ~3:4 -> 896x1152
- ~2:3 -> 832x1216
- vertical (nearest bucket to 9:16) -> 768x1344
- ~4:3 -> 1152x896
- ~3:2 -> 1216x832
- 16:9-ish -> 1344x768
- ~21:9 -> 1536x640
# stay near ~1 megapixel; both dims divisible by 64
# Flux dev (ComfyUI)
- EmptyLatentImage / EmptySD3LatentImage node, set width and height
- dims divisible by 16 (32 is safest); min edge 1024; 0.2-2 MP range
Step 2: Generate at a supported ratio, then crop
For ratios no model supports cleanly (32:9, 5:1, extreme tall):
1. Generate at the nearest supported bucket (16:9, 21:9, or 9:16)
2. Open in Photoshop / Pixelmator / Photopea (free, browser-based)
3. Crop to the exact target aspect
4. Outpaint or upscale back to target dimensions if needed
Leave roughly 10% headroom around the subject in the prompt so the crop does not clip it.
Step 3: Check the model’s supported aspect list (June 2026)
Midjourney v7/v8: 1:1 plus --ar up to 4:1 (and 1:4 tall);
extreme ratios flagged experimental
gpt-image-1 (ChatGPT): ONLY 1024x1024, 1024x1536, 1536x1024
Gemini 3.1 Flash Image (Nano Banana 2): 1:1, 16:9, 9:16, 4:3, 3:4,
3:2, 2:3, 5:4, 4:5, 21:9
SDXL / SD 3.5: any ratio at ~1 MP, both dims divisible by 64
Flux: any ratio, dims divisible by 16, ~0.2-2 MP, min edge 1024
Note: Google’s older Imagen models are deprecated and scheduled to shut down on August 17, 2026; if a Gemini-side request keeps returning 1:1, you may be on the old Imagen path. Re-prompt with the ratio stated plainly, or use the aspect_ratio field via the API.
Step 4: Override UI defaults in local tools
In ComfyUI / A1111 / Forge the numeric fields beat the prompt:
- Set the Width / Height fields to your target; do not rely on prompt text
- In A1111/Forge also check Hires fix -> its target resolution can re-impose a ratio
- In ComfyUI confirm the EmptyLatentImage node, not just the prompt
- If they conflict, the UI fields win
Step 5: Sanity-check the pixel math
# Reduce width:height to lowest terms
from math import gcd
def aspect(w, h):
g = gcd(w, h)
return f"{w//g}:{h//g}"
aspect(1024, 1536) # -> "2:3" (gpt-image-1 portrait)
aspect(768, 1344) # -> "4:7" (SDXL vertical bucket, NOT exact 9:16)
aspect(1080, 1920) # -> "9:16" (exact)
For exact 9:16 use 1080x1920 (or 576x1024). For exact 16:9 use 1920x1080. On SDXL/Flux, round to the nearest bucket that satisfies the divisibility rule.
Step 6: Confirm the exported file’s real aspect
Download the raw PNG and check its true dimensions: Get Info in Finder, Properties in Explorer, or identify image.png (ImageMagick) / sips -g pixelWidth -g pixelHeight image.png on macOS. If the file dimensions differ from what you generated, an export or preview step is re-cropping. Bypass it by downloading the original rather than the previewed version.
How to confirm it’s fixed
- Generate one test image with the corrected control.
- Run the exported file through Step 5’s
aspect()(or any image-info tool) and confirm the reduced ratio matches your target. - Re-export through your real pipeline (Reels upload, social card, etc.) and re-check, since the crop can reappear at export (cause 6).
FAQ
Why does ChatGPT keep giving me a square no matter what I ask?
gpt-image-1 has only three output sizes: 1024x1024, 1024x1536, and 1536x1024. There is no custom ratio. Ask explicitly for “vertical 9:16” or “wide 16:9” so it picks the portrait or landscape preset; anything else defaults to square.
Why does Midjourney reject my --ar 1.85:1?
The --ar flag does not accept decimals. Convert to whole numbers, e.g. --ar 37:20 for 1.85:1 or --ar 139:100 for 1.39:1.
Gemini ignores “16:9” and stays at 1:1. What changed?
Gemini’s current image model (Nano Banana 2 / Gemini 3.1 Flash Image) does support 16:9 and nine other ratios, but the plain-text request is sometimes missed, or you hit the deprecated Imagen path. State the ratio clearly at the start of the request, or set aspect_ratio="16:9" via the API.
Why is 768x1344 not exactly 9:16?
768/1344 reduces to 4:7 (0.571), not 9:16 (0.5625). 768x1344 is SDXL’s nearest ~1-megapixel training bucket to vertical. For an exact 9:16 deliverable, generate at the bucket and then crop, or use 1080x1920 on a model that takes free dimensions.
My local UI ignores the aspect in the prompt entirely. Why? In ComfyUI, A1111, and Forge the numeric Width/Height fields override any aspect text in the prompt. Set the dimensions in the fields (Step 4), not in the prompt.
Prevention
- Keep a per-platform cheat sheet: Midjourney
--arsyntax, ChatGPT’s 3 sizes, Gemini’s 10 ratios, SDXL/Flux pixel buckets. - For a series, lock one aspect up front and never mix.
- Prefer “generate slightly larger, then crop” over “extreme ratio and hope.”
- Verify pixel dimensions against the intended ratio with the
aspect()check, do not eyeball.