Image sizes and crops

Embed
Preview of the card
<a href="https://forumulate.com/guides/image-sizes"><img src="https://forumulate.com/guides/_api/public/orgs/046a9bc0-d530-43ae-9bae-af7945008cda/spaces/36aa4df0-1e95-4cef-8ae9-795169441345/pages/a6364078-2010-47a2-b2cf-adf84a364b8d/social-card.svg?v=3e7ae33eec8b" alt="Image sizes and crops" width="600" height="315"></a>

Every picture slot on a reader page draws your upload into a box of its own shape. This page lists each slot, the shape of that box, the size worth uploading, and what happens to the parts of the picture that do not fit.

Three rules hold for all of them:

  • A picture that has to fill a box is cropped around its focal point. The box is drawn with object-fit: cover (or background-size: cover), centred on the focal point you set on the picture in the media library — the centre when you set none. Set a focal point on any picture whose subject is not in the middle, and keep words out of the edges.

  • A logo is never cropped. Logos and marks are drawn with object-fit: contain or at a fixed height with the width following, so the whole image always shows.

  • Upload the size below, not the size on screen. The reader serves our own uploads through the resizer at 256, 512 and 1024 pixels wide, and offers your original as the largest candidate for wide and high-density screens, so an original about twice the rendered width is what a retina screen gets. A picture hosted elsewhere is used exactly as it is.

The slots

Slot

Where the key lives

Box shape on the page

Upload

Crop

Blog post cover, on the post

coverUrl on the post

2:1 by default; post.cover.aspect picks 2:1, 16:9, 3:2, 4:3, 1:1 or original (no box: the picture's own shape). An image, gallery or video post format makes it 16:9 when no aspect is set. Width: the text column, or post.cover.width wide (up to the media breakout, 96rem), frame or full (the viewport)

2048 × 1024 for the default; 2560 wide for a wide or full cover

Cover, around the focal point

Blog post cover, on a card (index, tag pages, front-page feeds)

the same coverUrl

2:1 in the single-column feed layout (the default blog index), 3:2 in a grid, 21:9 for a magazine opener and a feed's hero lead, 1:1 for a thumb (image.size) and in phone rows; beside the words (image.position: start/end) the picture takes its image.span of the row and the card's height

1600 × 900 covers every one of these

Cover, around the focal point. image.aspect sets the shape (1:1, 4:3, 3:2, 16:9, 21:9, 2:1, original, or one per screen); image.focus keeps the start, center or end of the picture instead of the focal point; image.fit: contain shows all of it instead

Social card, generated

made for every space and every post with no image of its own; shaped by seo.socialCard

1200 × 630 (1.91:1)

Nothing to upload; the template's seo.socialCard.logoUrl is drawn top right in a 180 × 72 box (a wide logo of about 5:2 fills it)

The logo is fitted whole (never cropped)

Social card, your own

seo.socialImageUrl on a space; socialImageUrl on a post. A post with neither uses its cover

Served as uploaded; the networks that show it crop it to their own box

1200 × 630

Not cropped by us. SVG is never used as a share image (no network shows one); the generated card stands in

Forum category background, on a tile

backgroundUrl on the category

spaceCategories layout: tiles: the top half of a square tile (about 2:1 of the tile's width). grid and list: a strip 64 px tall across the tile. The /categories page: a strip 80 px tall

1600 × 600, no words in it

Background cover, around the focal point

Forum category background, on the category page

backgroundUrl

A banner as wide as the column (or shell/full), as tall as its title and description plus 24 px padding, under a 45% black shade

2400 × 600, no words in it

Background cover, around the focal point

Forum category logo

logoUrl on the category

Square: 24 px on a tile (tile.logoSize: 16–128), 20 px in rows, 28 px on the /categories page, 48 px in the category banner

256 × 256

Cover in a square, so a non-square logo loses its sides; upload it square

Blog tag cover

coverUrl on the tag

The head of the tag's landing page, across the column, 3:1 by default; theme.blog.tagHead.coverAspect picks 3:1, 2:1, 16:9, 3:2, or none (no cover). Also the tag page's share image

2400 × 800 for 3:1

Cover, around the focal point

Author avatar

the author's profile picture

A circle. Bylines: 24 px, 36 px stacked, 40 px in the author box, or avatarSize (up to 96 on the post). The author page: 80 px, or theme.blog.author.avatarSize (24–200)

400 × 400 square

Cover in the circle, centred: the corners are cut off, so keep the face in the middle. Served at twice the drawn size (a 96 px portrait gets the 256 px copy), so it is sharp on a high-density screen

Docs collection cover

coverUrl on the collection

The collection's landing page, 16:5, as wide as the page measure (56rem by default). Hidden by theme.docs.hub.cover: false

1800 × 560

Cover, around the focal point

Docs page cover

coverUrl in the page's details

Across the column at 1990:480 (about 4.1:1). Hidden by the page's hideCover

1990 × 480 or larger at that shape

Cover, around the focal point

Header logo (wordmark)

theme.logoUrl, theme.logoUrlDark, theme.mobile.logoUrl

28 px tall, the width following the picture's own shape; theme.chrome.header.logoHeight sets the height (12–120, or one per screen). On a phone a wide wordmark scales down to fit, keeping its shape

SVG; else a PNG at least three times the height you show it at, trimmed to the artwork

Never cropped (contain, anchored left)

Logo mark

theme.logoMark

A 28 × 28 square beside the wordmark (or instead of it on a phone, with chrome.logoPhone: "mark"). Also the icon of the installed app

SVG; else 512 × 512 PNG

Never cropped (contain)

Favicon

theme.faviconUrl

The browser tab

A square SVG, or a 512 × 512 PNG

Used exactly as uploaded

A site's header and footer take the same logo keys in the site's config.theme; the footer has its own footer.logo and footer.logoMark, which fall back to the header's (Sites).

One picture, many boxes

The same coverUrl is drawn 2:1 on the post, 3:2 in a grid card and 21:9 as a magazine opener, so a cover is cropped differently in each. A picture made at 2:1 with the subject in the middle third survives all of them. When one place needs a different crop, change that place's box rather than the picture: a card's image.aspect and image.focus, the post's post.cover.aspect, or original where you want no crop at all.

A post's cover can also stay off the post and on the cards only: set the post's coverPlacement field to card-only, or post.cover.show: false for every post.

Focal points

The media library lets you set a focal point on an uploaded picture: the part of it that must survive any crop. Every reader slot that crops a library picture centres its crop there — the post cover, every card (feed cards, the blog index, tag pages, magazine openers and tiles), release covers, forum category backgrounds on tiles, the /categories page and the category banner, the blog tag cover, and the docs collection, section-card and page covers. The same point is used where the API makes a cropped copy itself (a headless content entry's ?ar=…&fit=cover image) and in the library's thumbnails.

A picture without a focal point is cropped from the centre, as before. A picture hosted elsewhere has no focal point. Where an owner has chosen a position explicitly — a feed card's image.focus — that choice wins over the picture's focal point. A changed focal point reaches the reader within the hour (picture sizes and focal points are cached for that long).

The Forumulate teamUpdated