SEO and reference
Social media image sizes: dimensions and ratios
Social media image sizes: exact ratio and pixels of each format, which size to use for every goal, and how to generate them all from one image with the API.
- social media image sizes
- social media dimensions
- aspect ratio
- centered crop
- 1080x1080
- 1080x1920
- image API
What this guide covers
SocialCutter takes one master image and returns a cropped version for each destination. A destination is a platform and format pair: instagram + post, tiktok + cover, youtube + thumbnail.
The API covers 6 platforms, and this is the real response of GET /api/v1/platforms, the same table used by the web dashboard, the REST API and the MCP server. The pixels in the “Size” column are the exact dimensions of the output file, not a suggestion.
Image sizes by platform
| Platform | Format | Aspect ratio | Size (pixels) | What it is for |
|---|---|---|---|---|
post | 1:1 | 1080x1080 | Square feed post | |
story | 9:16 | 1080x1920 | Story and vertical video | |
landscape | 1.91:1 | 1080x566 | Horizontal feed post | |
post | 1.91:1 | 1200x630 | Timeline post and link card | |
story | 9:16 | 1080x1920 | Vertical story | |
cover | 2.63:1 | 820x312 | Page cover | |
| X (Twitter) | post | 16:9 | 1200x675 | Image post in the timeline |
| X (Twitter) | header | 3:1 | 1500x500 | Profile header |
post | 1.91:1 | 1200x627 | Feed post | |
cover | 5.9:1 | 1128x191 | Profile or page cover | |
| YouTube | thumbnail | 16:9 | 1280x720 | Video thumbnail |
| YouTube | banner | 16:9 | 2560x1440 | Channel banner |
| TikTok | cover | 9:16 | 1080x1920 | Vertical video cover |
These are the sizes SocialCutter generates. They are not a copy of the networks’ help pages: they are the real output catalogue of the API, and you can query it yourself at https://api.socialcutter.theboomer.dev/api/v1/platforms. If a network changes its upload requirements, always check its official help center before publishing.
You can print the table from the terminal:
curl -s "https://api.socialcutter.theboomer.dev/api/v1/platforms" | jq
Which size to use for each goal
| Goal | Destination | Size and ratio |
|---|---|---|
| Square feed post | instagram + post | 1080x1080 (1:1) |
| Story or vertical video | instagram + story, facebook + story | 1080x1920 (9:16) |
| Horizontal timeline post | twitter + post | 1200x675 (16:9) |
| Post with a link card | facebook + post, linkedin + post | 1200x630 and 1200x627 (1.91:1) |
| X profile header | twitter + header | 1500x500 (3:1) |
| LinkedIn cover | linkedin + cover | 1128x191 (5.9:1) |
| YouTube video thumbnail | youtube + thumbnail | 1280x720 (16:9) |
| YouTube channel banner | youtube + banner | 2560x1440 (16:9) |
| TikTok video cover | tiktok + cover | 1080x1920 (9:16) |
| Image for a website or blog | no destination: use the master | Whatever the CMS needs |
If the goal is to cover the most slots at the lowest cost, the best pair is 1:1 + 9:16: it covers the square feed and every vertical story and cover for 2 uses.
There is no 4:5 in the catalogue
The 4:5 ratio is widely used in the Instagram feed, but no 4:5 destination exists in the API. There are two honest options:
- Crop the 4:5 separately. At a width of 1080 pixels, an exact 4:5 measures 1080x1350. No destination produces it: crop it in your editor before or after.
containoverinstagram+post. The whole image is fitted inside the 1:1 canvas and the gap is filled withbackground_color, without cropping anything from the original. The resulting file is still a 1080x1080 square: you gain the uncropped image, not a 4:5.
What you will not find is a fit_mode that turns a 1:1 into a 4:5. It does not exist.
Generate every size from a single image
From the web
- Open the dashboard at https://dash.socialcutter.theboomer.dev.
- Upload the master image (5 MB maximum) or paste its public URL.
- Tick the destinations you need from the table above.
- Pick the fit mode:
coverto crop,containto fit the whole image. - Download one image per destination from the history.
From the API: one request, several sizes
curl -s -X POST "https://api.socialcutter.theboomer.dev/api/v1/images/process" \
-H "X-API-Key: sc_your_key" \
-H "Content-Type: application/json" \
-d '{
"source": { "type": "url", "value": "https://example.com/master.jpg" },
"destinations": [
{ "platform": "instagram", "format": "post" },
{ "platform": "instagram", "format": "story" },
{ "platform": "linkedin", "format": "post" },
{ "platform": "youtube", "format": "thumbnail" }
],
"options": { "fit_mode": "cover", "format": "webp", "quality": 85 }
}' | jq
That request costs 4 uses (1 per destination) and returns four URLs, one per destination, each with its platform, format and dimensions. For a local file, upload the binary as multipart:
curl -s -X POST "https://api.socialcutter.theboomer.dev/api/v1/images/process/upload" \
-H "X-API-Key: sc_your_key" \
-F "file=@./master.jpg" \
-F 'destinations=[{"platform":"instagram","format":"post"},{"platform":"tiktok","format":"cover"}]' | jq
From an LLM or agent (MCP)
With the MCP server connected you write no HTTP: ask “process this image for Instagram post, LinkedIn post and TikTok cover” and the model calls the process_image tool with those destinations. The MCP exposes 28 tools over the same API.
Fit modes
fit_mode | What it does |
|---|---|
cover | Scales and crops the excess with a centered crop. This is the default. |
contain | Fits the whole image and pads the gap with background_color. |
fill | Stretches the image to fill the gap; it may distort it. |
stretch | Forces the exact dimensions. |
None of the four analyses the image content. The cover crop is geometric and centered.
Common mistakes
| Mistake | What actually happens | What to do |
|---|---|---|
| Uploading a 1:1 image where a 9:16 slot goes | The centered crop drops the top and bottom edges, or the framing is not what you expected | Request the story or cover destination (1080x1920) and check the framing before publishing |
| Text cut off at the edge | cover crops the excess from the center: whatever touches the edge is lost | Leave a margin around the text in the master, or use contain |
| Blurry image from upscaling | A small master upscaled to the YouTube banner (2560x1440) loses detail | Start from an original at least 2560 px wide for that destination; never request sizes larger than the master |
| 413 error on upload | The file is over 5 MB | Shrink the master or serve a lighter version over a URL |
| Expecting it to crop the important part | The image content is not analysed: nothing decides what matters | Frame the subject near the center of the master |
| Expecting the image to appear published | The API only generates files and returns URLs | Publish through the social network API, your CMS or your automation tool |
What SocialCutter does not do
- It is not a photo editor. It does not fix colour or exposure, does not remove backgrounds, does not compose text over the image and does not retouch anything. It produces cropped and scaled versions of the image you give it.
- It does not decide the framing. The crop is centered and deterministic: the image content is not analysed, nothing decides which part matters.
- It does not post to social networks. It returns file URLs. Publishing belongs to the caller.
- It does not accept files over 5 MB on upload.
For retouching, compositing or montage, use a photo editor; for the exact size of each network, use SocialCutter.
Next steps
- Automation: Automating social media images: the 4 real paths
- Terminal: Process images with the API from the terminal (curl)
- LLMs and editors: Use SocialCutter from your LLM or editor with MCP
- No-code: Automate image resizing with n8n
- WordPress: Integrate SocialCutter with WordPress and WooCommerce
- API reference: https://docs.socialcutter.theboomer.dev
Frequently asked questions
What size is a square Instagram post?
1080x1080 pixels, a 1:1 aspect ratio. It is the instagram + post destination in the catalogue, and the output file has exactly those dimensions.
Does SocialCutter generate the 4:5 format?
No. The catalogue has no 4:5 destination. An exact 4:5 has to be cropped separately; as a fallback, contain over instagram post fits the whole image into the 1:1 canvas and pads with background_color, but the resulting file is still square.
How many sizes can I get from a single image?
As many destinations as you ask for in one request, up to the 13 destinations available across the 6 platforms. Each destination costs 1 use, and duplicate destinations in the same request are not charged twice.
Does the crop detect the face or the main subject?
No. The crop is centered and deterministic: the image content is not analysed, so nothing decides which part matters. It works well with product photos, screenshots and creatives with the subject near the center.
Why does my YouTube banner look blurry?
Because the banner is 2560x1440 pixels. If you start from a smaller master, upscaling to that size loses detail. Always start from an original at least 2560 pixels wide when you request that destination.
Does the API publish the image to the social network?
No. The API generates the correctly sized files and returns one URL per destination. Publishing is up to you or to the tool that calls the API.