TLDR
Make every slide 1080×1350 px (4:5 portrait) — the safe default. Instagram allows up to 20 slides per carousel, one shared ratio (a Mixed option exists, with trade-offs). Square (1080×1080) works but earns less screen; native 3:4 (1080×1440) is also supported. Keep faces and headlines away from the left and right edges — the profile grid previews posts at 3:4, which slightly trims the sides of 4:5 slides.
The numbers
1080×1440 px (3:4) — supported since Instagram's 2025 ratio change; matches the grid preview
One ratio per carousel is the rule that trips people up: Instagram applies a single frame to the whole set, so a portrait slide and a landscape slide can't coexist at full bleed. There is a Mixed setting with real trade-offs — we covered it in detail in can an Instagram carousel mix aspect ratios.
Why 4:5 portrait wins
Feed ranking is an attention auction, and screen area is the bid. On a phone, a 1080×1350 post is roughly 25% taller than a square one — that's 25% more of the viewport your content occupies while someone decides whether to swipe. Landscape is worse still: it renders as a short letterboxed strip.
There's no algorithmic bonus for portrait; the advantage is mechanical. More pixels on screen → longer dwell before the scroll decision → more swipes started. Carousels compound this because every swipe is a fresh engagement signal.
Use square only when the same slides must also serve a placement that requires 1:1 — some ad formats, other platforms' grids — and the reuse is worth the feed-height tax. (LinkedIn, notably, is not a reason to go square: it recommends the same 1080×1350 portrait, just packaged as a PDF — see the LinkedIn carousel size specs.)
The 3:4 grid crop nobody mentions
Since Instagram moved profile grids to 3:4 previews, your 4:5 posts get trimmed at the sides on your own profile page: a 4:5 image is slightly wider than a 3:4 tile, so the grid removes about 6% of the total width — roughly 3% from each side. The feed still shows the full 4:5 — only the grid thumbnail crops.
The practical rule: treat the outer ~5% of the slide's width on each side as a margin. Keep headlines, faces, and your hook inside that central region, and let backgrounds and decorative elements bleed to the edges. Your slide then works in both places without a redesign — full-width in feed, cleanly trimmed in the grid.
This matters most for slide one: it's the slide that represents the whole carousel in the grid, and a hook that loses its edge characters is a hook that doesn't fire.
How many slides should you use?
Twenty is the ceiling, not the target. The engagement pattern on carousels is front-loaded: slide one decides whether anyone swipes at all, and completion drops with every additional slide. Eight to ten slides is the range where the story feels substantial but people still reach the CTA at the end.
A useful test when trimming: if a slide doesn't either advance the argument or set up the next swipe, it's padding — cut it and the completion rate thanks you.
Export settings that keep slides sharp
We render carousel exports all day; these are the failure modes we actually see:
- Wrong canvas size, "fixed" by scaling. A 800×1000 design upscaled to 1080×1350 is soft before Instagram ever touches it. Design at final size.
- Low-quality JPG. Instagram re-compresses every upload. Feed it a compressed source and the artifacts stack. Export PNG or top-quality JPG.
- Text near the edges. Sharpness aside, edge text collides with the grid crop and with Instagram's UI overlays (the slide counter sits top-right).
- Preview/export mismatch. Some tools render the editor preview and the exported file through different pipelines, so what you approved isn't what uploads. This one is invisible until you compare at 100% zoom — do that once with any carousel maker you evaluate.
Never think about dimensions again
xcarousel treats sizes as a solved problem: pick Instagram, and the canvas is 1080×1350 from the first slide; the export is a pixel-exact capture of exactly what you saw in the editor. Switch the same carousel to LinkedIn's format and the design adapts automatically instead of getting stretched. Generate one from your next post idea and check the output against every number on this page.