Website Thumbnail Image Sizes in Pixels
Use 1200×630 px for most social previews, then match WordPress, Facebook, LinkedIn, and in-page thumbnail requirements.
For a social link preview, start with 1200 × 630 pixels (about 1.91:1), use JPG or PNG, and keep the file below 5 MB. That is a practical cross-network baseline. An in-page website thumbnail has no universal size: WordPress themes and site settings decide the rendered dimensions.
1. First decide which “thumbnail” you mean
| Use case | Recommended starting point | What controls the final display |
|---|---|---|
| WordPress post or card thumbnail | Use the theme’s registered image size | Theme code, Media settings, CSS, and the requested WordPress size |
| Facebook link preview | 1200 × 630 px for high-resolution displays | Open Graph tags, Facebook’s scraper, crop rules, and cache |
| LinkedIn link preview | 1200 × 627 px, approximately 1.91:1 | Open Graph data, LinkedIn’s rendering rules, and cache |
| Shared image across several networks | 1200 × 630 px, under 5 MB | The destination network may crop or pad the image |
Do not treat 1200 × 630 as a WordPress thumbnail default. It is a social-preview target. WordPress’s documented default generated sizes are 150 px for thumbnail, 300 px for medium, and 640 px for large; the full size is the original upload. Themes can register different sizes and crop behavior.
2. WordPress in-page thumbnail sizes
WordPress exposes named image sizes rather than one mandatory “website thumbnail” dimension. The default names are thumbnail, medium, large, and full. Check the active theme and the site’s Media settings before exporting assets.
How WordPress chooses a size
the_post_thumbnail('thumbnail')requests the registered thumbnail size.the_post_thumbnail('medium')andlargerequest those generated variants.- A theme can register a custom size with
add_image_size(). - WordPress can preserve proportions or crop to exact dimensions, depending on the size registration.
- CSS may display a smaller or larger box than the source bitmap, so inspect both the requested file and the rendered element.
<?php
// functions.php
add_image_size('card-thumbnail', 640, 360, true); // exact 16:9 crop
// template file
the_post_thumbnail('card-thumbnail', [
'loading' => 'lazy',
'alt' => get_the_title(),
]);
?>
Regenerate image variants after changing registered sizes so older uploads receive the new dimensions. Keep important subjects near the center because a hard crop can remove edges.
3. Social preview dimensions by platform
Cross-network baseline
WordPress.com recommends 1200 × 630 px, about 1.91:1, as a practical social-preview size. Use JPG or PNG and keep the file under 5 MB. Center important content to reduce crop problems. Open Graph fields such as og:title, og:description, and og:image tell networks which asset to fetch. See WordPress.com’s social preview guidance.
- Minimum image: 200 × 200 px.
- For larger images: at least 600 × 315 px.
- For high-resolution displays: 1200 × 630 px.
- Maximum file size: 8 MB.
- A ratio close to 1.91:1 reduces News Feed cropping.
Facebook may choose among several page images. Set an explicit featured image and og:image when your publishing setup permits it. If an old image remains, use Facebook’s Sharing Debugger to request a fresh scrape. See the Facebook thumbnail guidance.
- Minimum image: 1200 × 627 px.
- Recommended ratio: 1.91:1.
- Maximum file size: 5 MB.
- Images under 401 px wide display as a thumbnail in the sharing module.
WordPress.com’s LinkedIn guidance also describes a 200 px width threshold for the larger format. These are different rendering thresholds, so do not reduce them to one universal cutoff. LinkedIn can cache a previous image; use LinkedIn’s Post Inspector to inspect or refresh the share. See LinkedIn’s sharing-image requirements.
4. Safe export settings
| Setting | Recommendation | Reason |
|---|---|---|
| Canvas | 1200 × 630 px for broad social use | Matches the common 1.91:1 baseline |
| Format | JPG for photographs; PNG for sharp graphics or transparency | Balances quality and file size |
| File size | Below 5 MB; below 8 MB for Facebook’s stated maximum | Meets the stricter common limit |
| Composition | Keep faces, logos, and headings away from edges | Networks can crop or pad previews |
| Metadata | Set one explicit featured/social image | Reduces scraper selection ambiguity |
5. Generate a thumbnail yourself with Playwright
If you need a screenshot of a web page rather than a designed graphic, set the viewport to the exact pixel dimensions and capture the page or a selected element.
npm install playwright
npx playwright install chromium
// thumbnail.mjs
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1200, height: 630 }, deviceScaleFactor: 1 });
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await page.screenshot({ path: 'thumbnail.png', fullPage: false, type: 'png' });
await browser.close();
For a full-page image, use fullPage: true; for one card, locate it and call locator.screenshot(). A full-page capture is usually taller than a social-preview canvas, so resize or crop it deliberately rather than stretching it.
6. Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server. One GET request returns PNG, JPEG, WebP, or PDF, with options for full-page capture, element selectors, viewport and device presets, retina scale, custom CSS and JavaScript, waits, blocking rules, headers, cookies, user agents, geolocation, resizing, caching, signed links, async jobs, bulk capture, and more. Read the ScreenshotNeo API documentation for parameter details.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" \
-d access_key=YOUR_API_KEY \
--data-urlencode url=https://stripe.com \
-o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before capture. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed; response headers identify the page verdict and whether the shot was billed. Its MCP server includes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
7. Troubleshooting checklist
| Symptom | Likely cause | Fix |
|---|---|---|
| Image is cropped | Wrong aspect ratio or edge-aligned content | Export near 1.91:1 and keep key content centered. |
| Old image appears after replacement | Social scraper cache | Use Facebook Sharing Debugger or LinkedIn Post Inspector to re-scrape. |
| No large LinkedIn preview | Image below the platform’s larger-format thresholds | Use 1200 × 627 px and keep the file below 5 MB. |
| WordPress thumbnail dimensions differ | Theme or Media settings override defaults | Inspect registered sizes and regenerate thumbnails. |
| Screenshot contains a popup | Consent, newsletter, or chat overlay loaded before capture | Dismiss or hide the selector in Playwright, or use ScreenshotNeo’s cleanup options. |
| Screenshot API returns an error | Invalid key, inaccessible URL, timeout, or bot check | Check authentication, URL reachability, wait settings, and the response verdict headers. |
8. Performance, reliability, and cost
- Serve the smallest source that still meets the destination dimensions; oversized files increase transfer time.
- Use WebP or AVIF for in-page thumbnails when your browser support and CMS pipeline allow it; retain JPG or PNG for social systems that require them.
- Cache deterministic screenshots with a TTL when the source page changes infrequently.
- For many URLs, batch work and limit concurrency so your own workers do not exhaust memory.
- With ScreenshotNeo, cache hits and failed or unusable captures are not billed, and the
X-Page-VerdictandX-Billedheaders let you audit outcomes.
9. FAQ
Is 1200 × 630 the required size for every website thumbnail?
No. It is a practical social-preview baseline. An in-page thumbnail follows the CMS and theme’s registered dimensions.
Should I use 1200 × 630 or 1200 × 627 for LinkedIn?
Use 1200 × 627 when LinkedIn is the primary destination; use 1200 × 630 for a shared cross-network asset and verify the result.
Does changing the image URL force a refresh?
It can help, but social networks may still cache the page. Use the platform’s debugger or inspector to request a new scrape.
What dimensions should a WordPress featured image have?
Ask the active theme. Themes can register custom featured-image sizes, so there is no universal WordPress value.


