Quick answer: design Threads photos at 1080×1080 (square) or 1080×1350 (4:5) for maximum feed height, keep files under roughly 100 KB for best results, and use up to 20 photos per carousel. The 9:16 vertical canvas does not work the way it does on Stories — Threads crops it.

How Threads actually displays images

Threads is a text-first network built on Instagram's account system, and its image rendering borrows from the Instagram feed rather than Stories. A 1:1 square renders edge to edge with no crop. A 4:5 portrait gets the most vertical space in the feed. Full 9:16 Story images get center-cropped to roughly 4:5, so heads and bottom captions disappear unless you account for it.

This catches people who batch-publish the same vertical Story file to every platform. On Threads that file looks broken. The rule is simple: vertical Stories stay on Stories; Threads gets square or 4:5.

The size table

Asset Dimensions Ratio Notes
Single photo (square) 1080×1080 1:1 Safest, never cropped
Single photo (portrait) 1080×1350 4:5 Maximum feed height; 1440×1800 export for retina
Carousel 2–20 photos 1:1 or 4:5 JPG/PNG, lean files (~100 KB)
Link preview (landscape) 1200×628 1.91:1 Pulled from Open Graph
Link preview (square) 640×640 1:1 Some placements
Profile photo 320×320 or larger 1:1 Circular crop

Carousels

Threads supports up to 20 photos per post, and the swipe behavior is familiar to anyone on Instagram. The first slide decides whether anyone swipes — it needs a reason to continue, whether that is a visible number ("3 things…"), a question, or a before/after teaser. Keep the whole carousel in one ratio. Mixing square and portrait slides forces the viewer to mentally re-crop on every swipe, and the post jumps around in the frame.

For launch weeks, a natural pattern is five slides: product shot, problem, how it works, proof or numbers, and the call to action. The last slide is where most indie carousels go quiet — they just end.

When you paste a URL into a thread, the preview image is not uploaded anywhere on Threads. It is pulled from the page's Open Graph tag, so the 1.91:1 landscape preview comes from the same 1200×628 image that serves X, LinkedIn, and most other networks. If your page's og:image is missing or square, Threads shows an awkward crop or no card at all. The Open Graph image size guide walks through the tag and the dimensions; the aspect ratio explainer covers why 1.91:1 keeps appearing across platforms.

Text and safe area

Threads overlays fewer controls than TikTok, but the feed itself adds your name, handle, the time, and the reply/like/repost row under the image. A 4:5 photo displays at roughly 1080 wide, but the visible card is shorter once that chrome is attached. Keep the message in the central 80% of the frame and away from the bottom 10%, because that is where the UI hugs the image.

Making the same launch work on Threads and elsewhere

Threads posts are most often part of a multi-platform launch set: a 4:5 carousel for Threads and Instagram, a square version for feeds, and a 1.91:1 link card. Generating the ratios as one set rather than resizing at the end is the faster path, and Neatico produces the ratio variants together from a single product description.

Frequently asked questions

Does Threads support 9:16 images? You can upload them, but the feed displays them cropped to around 4:5. Use 1080×1350 portrait for the tallest clean image; save 9:16 for Stories.

What is the Threads carousel limit? 20 photos per post. Five to eight slides usually outperform longer sets, which see a steep drop-off after the first few swipes.

Why is my link preview blank or cropped? Threads reads the page's og:image. Set a 1200×628 image, and use a sharing debugger to refresh the cache after you update it.

Is Threads the same image size as Instagram? The feed formats overlap — square and 4:5 match Instagram's feed — but Story and Reel sizes do not carry over. If you build a set for the whole network, check the social media image sizes hub first.