Aspect ratio and canvas shape: a cross-tool syntax guide

Aspect ratio and canvas shape: a cross-tool syntax guide

How to set aspect ratio and canvas shape in Midjourney V7/V8.1 (--ar), Flux dev/schnell/Pro (width/height API params), SDXL (resolution buckets + micro-conditioning), and SD3/SD3.5 — with a cross-tool copy-paste reference table and use-case ratio lookup.

AI Image Prompt Tip
May 28, 2026 · 12:00 AM
1 subscriptions · 10 items
Every tool defaults to a 1024×1024 square. Change that and you're not just reshaping the frame — you're speaking a different syntax, triggering different internal conditioning, and on SDXL, activating a hidden parameter layer most users never touch. This guide covers the exact flags and parameters per tool, the traps that cause silent quality degradation, and a copy-paste reference card you can bookmark.

Midjourney V7 / V8.1: --ar flag syntax

Midjourney uses a flag you append to the end of any prompt: --ar width:height (or the equivalent --aspect width:height). 1
Midjourney aspect ratio examples grid — five ratios from 1:1 to 9:16 side by side
Midjourney's own AR demo grid. Left to right: 1:1, 4:3, 2:3, 16:9, 9:16 — same prompt, different canvas shapes. 1
a misty harbor at dawn, long exposure --ar 16:9
The syntax itself is unchanged from V6 through V7 through V8.1. 2 What does change between versions is the output pixel resolution at each ratio:
Aspect ratioV7 initial pxAfter upscale
1:11024 × 10242048 × 2048
4:31232 × 9282464 × 1856
2:3896 × 13441792 × 2688
16:91456 × 8162912 × 1632
Source: 3
V8.1 removes the traditional upscaler entirely. Passing --hd renders natively at 2K (2048 px on the long edge), but it caps the maximum ratio at 4:1. 2 Need a wider panorama? Drop the --hd flag and you get the full 14:1 ceiling back at standard resolution.

Two traps worth knowing

The decimal trap. --ar 1.39:1 is invalid. Midjourney only accepts whole integers. Convert: 1.39:1--ar 139:100. Anamorphic widescreen (2.39:1) → --ar 239:100. 4
The extreme-ratio caveat. Midjourney's own documentation flags anything very wide or very tall as experimental: "Extremely wide and tall aspect ratios are experimental and may produce unpredictable results." 4 In practice, 7:1 and above starts introducing subject duplication and composition drift. Test before committing to extreme ratios on a paid job.

Flux dev / schnell / Pro: width and height, no --ar flag

Flux has no flag syntax. Canvas shape is controlled at the API call level via width and height integers. [[cite:5|FLUX.1 [dev] API Docs – fal.ai|[https://fal.ai/models/fal-ai/flux/dev/api]]](https://fal.ai/models/fal-ai/flux/dev/api]])
On fal.ai, the image_size parameter accepts two formats:
# Preset enum
image_size = "landscape_16_9"

# Or pass exact pixel dimensions
image_size = {"width": 1456, "height": 816}
Available presets: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. Default: landscape_4_3. [[cite:5|FLUX.1 [dev] API Docs – fal.ai|[https://fal.ai/models/fal-ai/flux/dev/api]]](https://fal.ai/models/fal-ai/flux/dev/api]])
On HuggingFace diffusers, width and height are direct pipeline arguments (both default to 1024): 5
pipe(
    prompt="a misty harbor at dawn, long exposure",
    height=816,
    width=1456,   # ~16:9
    guidance_scale=3.5,
    num_inference_steps=50,
)
The total pixel budget for Flux dev and schnell is 0.1 to 2.0 megapixels. 6 A 1456×816 canvas is 1.19 MP — inside the range and matching the V7 16:9 output for a clean cross-tool comparison.

Flux Pro 1.1 and Ultra add a dedicated aspect_ratio parameter

If you're working through the Flux Pro API (not dev/schnell), version 1.1 introduced a proper aspect_ratio string enum with nine presets: 21:9, 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 9:21. [[cite:8|FLUX1.1 [pro] API Docs – fal.ai|[https://fal.ai/models/fal-ai/flux-pro/v1.1/api]]](https://fal.ai/models/fal-ai/flux-pro/v1.1/api]]) Default is "1:1".
# Flux Pro 1.1 via fal.ai
aspect_ratio = "16:9"
Flux Pro 1.1 Ultra extends this to 4 megapixels (up to 2048×2048), marketed as 2K resolution, at $0.06 per image. [[cite:9|FLUX1.1 [pro] ultra – fal.ai|[https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra]]](https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra]])
FLUX.1 multi-ratio output grid — official Black Forest Labs demo showing aspect ratio variability at 0.1–2.0 MP
Official FLUX.1 demo grid showing canvas proportions across the 0.1–2.0 MP range — the model handles non-square canvases natively without a dedicated AR flag. 6

SDXL: resolution buckets and the micro-conditioning layer

SDXL does use width and height parameters — but picking arbitrary dimensions is where things go wrong.
SDXL was trained on specific resolution buckets, each close to 1 megapixel (1024² ≈ 1,048,576 px) and each dimension divisible by 64: 7
Target ratioWidth × Height
1:1 (square)1024 × 1024
4:3 (landscape)1152 × 896
3:4 (portrait)896 × 1152
16:9 (widescreen)1344 × 768
9:16 (mobile)768 × 1344
~2:5 (ultrawide portrait)640 × 1536
~5:2 (ultrawide landscape)1536 × 640
Passing a non-bucket size like 1280×720 — a perfectly valid 16:9 ratio — will produce noticeably blurrier, less compositionally stable output because the model was never trained at that exact size. 8 Stick to the buckets.

The micro-conditioning parameters: original_size, target_size, crops_coords_top_left

The SDXL paper introduced three conditioning signals that carry through to inference. Most users leave them at defaults and never notice — but they directly affect how the model frames subjects in non-square canvases. 9 7
original_size (default (1024, 1024)): Tells the model what resolution the "source material" would have been. Setting it to (256, 256) while outputting at 1024×1024 makes the result look deliberately lo-fi — simpler patterns, softer detail — because the model behaves as if it's upscaling a small image.
target_size (default (1024, 1024)): Relates to aspect-ratio fine-tuning. The documentation states it directly: "target_size conditioning comes from finetuning SDXL to support different image aspect ratios." 7 For non-square canvases, match target_size to your actual output dimensions: if you're generating 1344×768, set target_size=(1344, 768).
crops_coords_top_left (default (0, 0)): Zero coordinates correspond to centered subjects and complete faces. Shift to (256, 0) and subjects drift rightward. Most portrait use cases should stay at (0, 0).
A practical non-square setup in diffusers:
pipe(
    prompt="portrait of a woman in soft window light",
    height=1152,
    width=896,                       # 3:4 portrait bucket
    original_size=(1024, 1024),
    target_size=(896, 1152),         # match your actual output
    crops_coords_top_left=(0, 0),
    guidance_scale=5.0,
    num_inference_steps=30,
)

What SDXL does NOT do well at non-square ratios

At extreme buckets (640×1536 or 1536×640), SDXL is prone to subject duplication — the same person or object appearing twice in the frame. This is an architectural behavior, not a prompt error. Using a LoRA trained at 1024×1024 on a 768×1344 canvas can amplify anatomy distortion. Resolution bucket adherence is the first line of defense.

SD3 / SD3.5: simpler interface, same width/height syntax, no micro-conditioning

SD3 uses the same width and height parameters (default 1024×1024) but removes the entire micro-conditioning system. 10 No original_size, no target_size, no crops_coords_top_left.
SD3.5 Large recommends guidance_scale=3.5 (versus SDXL's typical 5.0–7.0), and was designed around its MMDiT architecture and Rectified Flow inference path. 11
The tradeoff: the simpler interface means less knob-turning, but SD3's known prompt-adherence weakness (widely reported across the community) may be more pronounced at non-square canvases where the model has no dedicated conditioning pathway to anchor subject placement. For portrait-vs-landscape shots where compositional precision matters, SDXL with correct bucket sizing and target_size matching will generally give more predictable framing than SD3.
SDXL negative_original_size conditioning comparison — three outputs with (128,128), (256,256), (512,512)
SDXL micro-conditioning in action: the same prompt with negative_original_size set to (128,128), (256,256), and (512,512). Increasing the value progressively sharpens the perceived image quality. 7

Common use-case ratios

Before the copy-paste table — the ratios worth knowing by name: 12
RatioPrimary use case
16:9YouTube, HD video, widescreen desktop
9:16Instagram Stories, TikTok, Reels
4:3Standard web images, presentations
3:2Film photography, art prints
2:3Portrait photography, photo frames
21:9Cinematic ultrawide (anamorphic look)
3:1Twitter / X profile banner
1:1Instagram feed, square print

Cross-tool copy-paste reference

GoalMJ V7 / V8.1Flux dev/schnell (diffusers)Flux Pro 1.1 (fal.ai)SDXLSD3 / SD3.5
16:9 widescreen--ar 16:9height=816, width=1456aspect_ratio="16:9"height=768, width=1344height=768, width=1344
9:16 mobile--ar 9:16height=1456, width=816aspect_ratio="9:16"height=1344, width=768height=1344, width=768
1:1 square--ar 1:1 (default)height=1024, width=1024aspect_ratio="1:1"height=1024, width=1024height=1024, width=1024
4:3 landscape--ar 4:3height=896, width=1232*aspect_ratio="4:3"height=896, width=1152height=896, width=1152
3:4 portrait--ar 3:4height=1232, width=896*aspect_ratio="3:4"height=1152, width=896height=1152, width=896
21:9 cinematic--ar 21:9height=640, width=1456*aspect_ratio="21:9"height=640, width=1536height=640, width=1536
Anamorphic (2.39:1)--ar 239:100height=640, width=1536*(not a preset, use width/height)height=640, width=1536height=640, width=1536
* Flux dev/schnell: no preset for these exact ratios — use custom {width, height} objects. Stay within the 0.1–2.0 MP total budget. † SDXL/SD3: nearest trained bucket. Use target_size=(width, height) in SDXL to match.
For SDXL non-square outputs, always add:
target_size=(width, height),   # match your actual output dimensions
crops_coords_top_left=(0, 0),

The one rule to internalize

Aspect ratio is not a framing afterthought. The canvas shape is part of the generation prompt — the model's internal attention distributes subjects differently at 9:16 versus 16:9, and on SDXL, wrong dimensions bypass the conditioning system entirely and land in an unconditioned state. Pick the bucket first, then write the prompt for that shape.
Cover image: AI-generated illustration

Add more perspectives or context around this Drop.

  • Sign in to comment.