AI Image Wrong Aspect Ratio: Why 9:16 Comes Out 1:1 (Fix Per Platform)

You set 9:16 and got a square. Per-platform aspect syntax, supported-ratio lists, and UI overrides for Midjourney, ChatGPT, Gemini, SDXL and Flux, verified June 2026.

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?

SymptomMost likely causeJump to
You typed --ar 9:16 outside Midjourney and got a squareWrong syntax for the platformStep 1
ChatGPT keeps returning 1:1 no matter what you askOnly 3 sizes exist; ratio not requested clearlyStep 1 (ChatGPT)
Gemini ignores “16:9” and stays squarePhrasing not picked up / old Imagen pathStep 1 (Gemini)
Local UI ignores the prompt and outputs 1024x1024UI Width/Height overrides the promptStep 4
9:16 returns 1:1 but 2:3 worksExtreme ratio not in the model’s setStep 2 + Step 3
Pixels look right but the math is offYou set 768x1344 thinking it equals 9:16Step 5
Model output is correct, export is wrongAuto-export/preview re-cropStep 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

  1. Generate one test image with the corrected control.
  2. Run the exported file through Step 5’s aspect() (or any image-info tool) and confirm the reduced ratio matches your target.
  3. 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 --ar syntax, 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.

Tags: #Image generation #Debug #Troubleshooting