Quick answer: use a 400×400 avatar (circular crop), a 1500×500 banner (3:1), and post images at 1080×1080 square, 1200×627 landscape (1.91:1), or 627×1200 portrait (4:5). A post can hold up to four images, and each image is limited to roughly 1–2 MB depending on the client.

How Bluesky handles images

Unlike the big platforms, the Bluesky app does not aggressively reformat your images into a fixed feed shape. The timeline shows a thumbnail at the image's natural ratio up to a capped height, and the lightbox opens the full upload. That means tall portrait images survive, but the timeline thumbnail gets short — a 4:5 post is the practical ceiling before the preview becomes a narrow strip.

The file system under the hood is the AT Protocol's blob storage, with upload limits around 1 MB on most clients and 2 MB on newer ones. Oversized files either fail or get compressed unpredictably, so export lean.

The full spec table

Asset Dimensions Ratio Limit
Avatar 400×400 (1000×1000 source) 1:1 Circular crop, ~1 MB
Banner 1500×500 (3000×1000 retina) 3:1 ~1 MB
Post image, square 1080×1080 1:1 Blob limit ~1–2 MB
Post image, landscape 1200×627 1.91:1 Blob limit ~1–2 MB
Post image, portrait 627×1200 4:5 Blob limit ~1–2 MB
Link card 1200×630 1.91:1 Pulled from og:image
Max images per post 4 — —

Avatar

The avatar displays as a circle in the timeline, on replies, and in profiles. A 400×400 upload is the documented target, but nothing stops you from uploading a larger 1000×1000 source so it stays sharp on retina screens. The center 70% of the square is what survives the circular mask — keep faces and logos inside it, and avoid putting text in the corner.

The banner runs at a 3:1 ratio, 1500×500 on the standard canvas and 3000×1000 on retina. It is a shallow strip, so the same composition rules apply as the X header: logos and taglines centered, nothing critical at the far left, because the avatar overlaps the lower-left area on many profile layouts.

Post images

The timeline preview behaves differently for each ratio:

  • Square (1080×1080) gives the largest, most predictable thumbnail.
  • Landscape (1200×627, 1.91:1) matches Open Graph and doubles as a link card.
  • Portrait (627×1200, 4:5) is the tallest ratio that still previews well; full 9:16 uploads collapse to a thin strip.

Multi-image posts show a 2×2 grid. With three or four images, each cell is cropped hard — square sources look cleanest, and grids composed in one design (one background, one type system) read as a deliberate set rather than four unrelated screenshots.

Bluesky link cards are generated from the page's Open Graph metadata, including the image. A 1200×630 og:image renders as a proper landscape card; a missing or square image gives an empty or cramped card. The Open Graph image size guide covers the tag itself. Since Bluesky users lean technical and click through more than most feeds, a readable card with a real title is worth more than a decorative hero.

Screenshots and the dev audience

Bluesky's audience is disproportionately developers and indie hackers, and the most-shared images on the network are product screenshots and code-adjacent charts. For those, PNG is the better format — JPEG turns UI text and code into colored mush. A practical workflow is to generate the screenshot card at landscape 1.91:1 so it doubles as the link card; Neatico can build the card and the matching post set from the same product description.

Frequently asked questions

What ratio are Bluesky post images? Square 1:1, landscape 1.91:1, and portrait 4:5 all display well in the feed. Portrait taller than 4:5 gets a short timeline thumbnail, even though the full image opens in the lightbox.

How many images can a Bluesky post have? Four. They display as a 2×2 grid with three or four images, so square sources crop the cleanest.

What is the Bluesky avatar and banner size? Avatar 400×400 shown in a circle; banner 1500×500 at 3:1, with a 3000×1000 retina source accepted.