Social Media Image Sizes
Check and resize images for 9 platforms / 60+ specs. Scripts mirror the logic at branding5.com/tools/social-media-cheat-sheet.
Setup
Run once after install:
cd <skill-dir>
npm install
Check an image
node scripts/check.js photo.jpg
Outputs a ranked match list — perfect → close → usable → too small — with an inline node scripts/resize.js command for every non-perfect match.
Filter by platform or match level:
node scripts/check.js photo.jpg --platform instagram
node scripts/check.js photo.jpg --filter perfect
node scripts/check.js photo.jpg --filter usable
Platform slugs: instagram facebook twitter linkedin tiktok youtube pinterest snapchat threads
Resize an image
node scripts/resize.js photo.jpg "Instagram Portrait Post"
# → photo-instagram-portrait-post.jpg (1080×1350 px)
node scripts/resize.js photo.jpg "YouTube Custom Thumbnail"
# → photo-youtube-custom-thumbnail.jpg (1280×720 px)
Default fit is cover (center-crop). Use --fit contain to letterbox instead:
node scripts/resize.js photo.jpg "LinkedIn Background Photo" --fit contain --bg f0f0f0
node scripts/resize.js photo.jpg "Instagram Portrait Post" --out ./exports/ig.jpg
List every available spec name:
node scripts/resize.js photo.jpg --list
Workflow
- Run
check.js to see what a given image already matches
- Copy the suggested
resize.js command from the output
- Run it — the output file is saved alongside the original by default
Gotchas
- Sharp requires a native binary. On first
npm install, it downloads a prebuilt binary for your platform. If install fails behind a proxy, set SHARP_IGNORE_GLOBAL_LIBVIPS=1 and retry.
- All slides in an Instagram carousel must share the same aspect ratio. The first image sets the ratio for the whole carousel — check all slides, not just the first.
- Facebook cover photo has two safe zones. Desktop shows 820×312; mobile crops to 640×360. Keep key content in the center 640×312.
- YouTube banner safe area is much smaller than the file. The spec is 2560×1440 but only the center 1546×423 is guaranteed visible on all devices. check.js flags the full size; keep critical content in the safe area.
--fit cover center-crops. If the subject isn't centered, use --out to save, then manually crop, or use an image editor before running resize.
References
Full per-platform specs (load when you need detail for a specific platform):
references/instagram.md — profile, feed, stories, reels, carousel, ads
references/facebook.md — profile, cover, feed, stories, events, ads
references/x-twitter.md — profile, header, posts, ads
references/linkedin.md — profile, cover, feed, articles, ads
references/tiktok.md — profile, videos, ads
references/youtube.md — channel art, videos, thumbnails, shorts, ads
references/pinterest.md — profile, pins, idea pins, ads
references/snapchat.md — snaps, spotlight, stories, ads, filters
references/threads.md — profile, posts
references/best-practices.md — format, compression, safe zones, accessibility
Full compiled reference (all platforms in one file): AGENTS.md
Need to generate on-brand images at these sizes? Branding5 pairs your brand kit with AI to produce social content pre-sized for every platform.
1---2name: social-media-image-sizes3description: Check and resize images for social media platforms. Run scripts/check.js to validate any image against specs for Instagram, Facebook, X (Twitter), LinkedIn, TikTok, YouTube, Pinterest, Snapchat, and Threads — get a ranked match list with exact resize commands. Run scripts/resize.js to export a correctly-sized copy. Use when a user asks to validate image dimensions, resize an image for a platform, check if an image fits a spec, or prep assets for social media posting or ads.4license: MIT5---67# Social Media Image Sizes89Check and resize images for 9 platforms / 60+ specs. Scripts mirror the logic at [branding5.com/tools/social-media-cheat-sheet](https://www.branding5.com/tools/social-media-cheat-sheet).1011## Setup1213Run once after install:1415```bash16cd <skill-dir>17npm install18```1920## Check an image2122```bash23node scripts/check.js photo.jpg24```2526Outputs a ranked match list — perfect → close → usable → too small — with an inline `node scripts/resize.js` command for every non-perfect match.2728Filter by platform or match level:2930```bash31node scripts/check.js photo.jpg --platform instagram32node scripts/check.js photo.jpg --filter perfect33node scripts/check.js photo.jpg --filter usable34```3536Platform slugs: `instagram` `facebook` `twitter` `linkedin` `tiktok` `youtube` `pinterest` `snapchat` `threads`3738## Resize an image3940```bash41node scripts/resize.js photo.jpg "Instagram Portrait Post"42# → photo-instagram-portrait-post.jpg (1080×1350 px)4344node scripts/resize.js photo.jpg "YouTube Custom Thumbnail"45# → photo-youtube-custom-thumbnail.jpg (1280×720 px)46```4748Default fit is **cover** (center-crop). Use `--fit contain` to letterbox instead:4950```bash51node scripts/resize.js photo.jpg "LinkedIn Background Photo" --fit contain --bg f0f0f052node scripts/resize.js photo.jpg "Instagram Portrait Post" --out ./exports/ig.jpg53```5455List every available spec name:5657```bash58node scripts/resize.js photo.jpg --list59```6061## Workflow62631. Run `check.js` to see what a given image already matches642. Copy the suggested `resize.js` command from the output653. Run it — the output file is saved alongside the original by default6667## Gotchas6869- **Sharp requires a native binary.** On first `npm install`, it downloads a prebuilt binary for your platform. If install fails behind a proxy, set `SHARP_IGNORE_GLOBAL_LIBVIPS=1` and retry.70- **All slides in an Instagram carousel must share the same aspect ratio.** The first image sets the ratio for the whole carousel — check all slides, not just the first.71- **Facebook cover photo has two safe zones.** Desktop shows 820×312; mobile crops to 640×360. Keep key content in the center 640×312.72- **YouTube banner safe area is much smaller than the file.** The spec is 2560×1440 but only the center 1546×423 is guaranteed visible on all devices. check.js flags the full size; keep critical content in the safe area.73- **`--fit cover` center-crops.** If the subject isn't centered, use `--out` to save, then manually crop, or use an image editor before running resize.7475## References7677Full per-platform specs (load when you need detail for a specific platform):7879- `references/instagram.md` — profile, feed, stories, reels, carousel, ads80- `references/facebook.md` — profile, cover, feed, stories, events, ads81- `references/x-twitter.md` — profile, header, posts, ads82- `references/linkedin.md` — profile, cover, feed, articles, ads83- `references/tiktok.md` — profile, videos, ads84- `references/youtube.md` — channel art, videos, thumbnails, shorts, ads85- `references/pinterest.md` — profile, pins, idea pins, ads86- `references/snapchat.md` — snaps, spotlight, stories, ads, filters87- `references/threads.md` — profile, posts88- `references/best-practices.md` — format, compression, safe zones, accessibility8990Full compiled reference (all platforms in one file): `AGENTS.md`9192---9394*Need to generate on-brand images at these sizes? [Branding5](https://www.branding5.com) pairs your brand kit with AI to produce social content pre-sized for every platform.*