May 2026·4 min read
OG Image Size Guide: What Actually Works in 2026
The short answer: 1200×630px. That's the safe universal size that renders correctly across every major platform. But if you want to know exactly why, and what the edge cases are — read on.
Platform reference
| Platform | Recommended | Notes |
|---|---|---|
| Twitter / X | 1200×628 | Card type must be summary_large_image |
| 1200×628 | Under 5MB. PNG or JPG. | |
| 1200×630 | Aspect ratio is the key — 1.91:1 | |
| Slack | 1200×630 | Reads og:image, shows in link previews |
| iMessage | 1200×630 | Reads og:image from the page |
| Discord | 1200×630 | Max 8MB. Animated GIF supported. |
The copy-paste meta tags
<!-- Open Graph --> <meta property="og:image" content="https://yoursite.com/og-image.png" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" /> <meta property="og:image:type" content="image/png" /> <meta property="og:image:alt" content="Your app description" /> <!-- Twitter / X --> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:image" content="https://yoursite.com/og-image.png" /> <meta name="twitter:image:alt" content="Your app description" />
Next.js: the easy way
In Next.js App Router, drop a opengraph-image.png (1200×630) into app/ and Next.js generates the tags automatically. For dynamic images per-page:
// app/opengraph-image.tsx
import { ImageResponse } from "next/og";
export const size = { width: 1200, height: 630 };
export const contentType = "image/png";
export default function OGImage() {
return new ImageResponse(
<div style={{ background: "#0a0a0f", width: "100%", height: "100%", display: "flex", alignItems: "center", justifyContent: "center" }}>
<h1 style={{ color: "white", fontSize: 64 }}>Your App</h1>
</div>,
{ ...size }
);
}Why your OG image isn't showing
- Cached by the platform — Twitter, LinkedIn, and Facebook cache OG images aggressively. Use their debugging tools to force a refresh: cards.twitter.com/validator, LinkedIn Post Inspector, Facebook Sharing Debugger.
- Relative URL in og:image — Must be an absolute URL (https://). Relative paths are ignored.
- Image behind authentication — The scraper can't access private images. Your OG image must be publicly accessible.
- File too large — LinkedIn rejects images over 5MB. Twitter rejects over 5MB. Keep it under 1MB in practice.
Generate a 1200×630 OG image in seconds
Upload your logo and Snappicon generates a production-ready OG image in your brand colors — with 6 layout templates for Pro users. Comes with copy-paste meta tags included in the ZIP.
Generate for free