--- title: "Open Graph and Twitter Cards: The 2026 Pre-Publish Checklist" description: "Every meta tag that controls how your page renders when shared. Updated for what platforms actually use in 2026." url: https://devzap.io/blog/og-twitter-cards-2026-checklist/ published: 2026-04-29T00:00:00.000Z updated: 2026-04-29T00:00:00.000Z category: seo-performance tags: ["seo", "open-graph", "twitter-cards", "meta-tags", "social"] author: marco --- # Open Graph and Twitter Cards: The 2026 Pre-Publish Checklist > Every meta tag that controls how your page renders when shared. Updated for what platforms actually use in 2026. Every page you ship will eventually be shared somewhere. Slack, X, LinkedIn, iMessage, Discord, the iOS share sheet, every messaging app on the planet — they all read the same metadata to render a preview. Get that metadata right and your link travels well. Get it wrong and your page shows up as a 404 image with the wrong title. This is the 2026 version of the meta tags checklist — covering what platforms actually use, not what spec documents say from 2014. ## The real-world stack Modern apps consume three layers: 1. **Basic Meta** — ``, `<meta description>`, `<link rel="canonical">`. The fundamentals every search engine and many basic apps still rely on. 2. **Open Graph (OG)** — Facebook's spec, but the de facto default. Used by Slack, Discord, LinkedIn, iMessage, WhatsApp, and most modern apps. If you only have time for one social card spec, OG is it. 3. **Twitter Cards** — Twitter / X-specific. Falls back to OG when Twitter-specific tags are missing. Inheritance is the design pattern: OG falls back to Basic, Twitter falls back to OG. You only need to override when a platform-specific value differs from the default. ## The minimum viable set If you're shipping a single page tomorrow and have 5 minutes, output these and only these: ```html <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Your Page Title (under 60 chars) ``` That's it. Everything else is refinement. ## Image dimensions that actually work in 2026 Open Graph: **1200 × 630**, JPEG or PNG, under 8 MB. This is the dimension Facebook, LinkedIn, Slack, and X all crop most cleanly. Smaller images get scaled up and look bad. Larger images get cropped, often cutting off your title. For Twitter `summary_large_image`, the same 1200 × 630 works. For Twitter `summary` (small card), Twitter crops to a square — 144 × 144 minimum for the small image. Don't bother. Use `summary_large_image`. ## Generate covers programmatically Hand-designed cover images don't scale to a content site. Three options: 1. **At build time with Satori** — write JSX, render to PNG. Works in any Node environment. We use this approach in our blog. 2. **At request time with Vercel OG** — same idea but runtime, dynamic per request. Useful for user-generated content. 3. **Static template + variable text overlay in Figma** — fine for marketing pages with under 20 entries. What you should NOT do: - Output the same generic image for every page. - Skip the OG image entirely. (Empty preview = broken-looking link.) ## What 2026 apps actually consume | App | Reads | Notes | | ----------- | ---------------------------- | ---------------------------------------------------------- | | Slack | OG | Falls back to Twitter Cards if OG missing | | Discord | OG | Aggressive caching — purge with `/preview` | | LinkedIn | OG | Caches for ~7 days; force-refresh with their URL Inspector | | iMessage | OG + Apple-specific | Apple uses OG image for the rich preview | | WhatsApp | OG | Image must be JPEG (not PNG) for best results on Android | | Facebook | OG | Their own spec, naturally | | X / Twitter | Twitter Cards → OG | Twitter-specific tags win when both present | | Google SERP | Basic Meta + structured data | OG ignored for organic ranking | ## Common failures ### 1. The OG image returns a 404 Your `og:image` URL needs to be absolute and publicly accessible. `` doesn't work — apps don't know which domain to prefix. Always use the full URL: `https://yoursite.com/og-image.png`. ### 2. Title and description don't match what users see Search engines and social cards use the meta tags you provide, not the visible page content. If a user clicks through and the meta-description doesn't reflect the page, your bounce rate goes up. Keep meta descriptions accurate. Don't write meta titles that promise something the page doesn't deliver. ### 3. Caching surprises after you fix the tags Once a platform fetches your OG metadata, it caches the result for hours or days. Fixing a typo in your OG title doesn't immediately fix the social preview. Use platform debuggers to force a refresh: - [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/) - [Twitter Card Validator](https://cards-dev.twitter.com/validator) (still works in 2026 despite the X rebrand) - [LinkedIn Post Inspector](https://www.linkedin.com/post-inspector/) ### 4. Special characters break the rendering Quotes, ampersands, and angle brackets in your title or description need to be encoded. The [HTML Entities reference](/tools/html-entities/) covers the cases you'll hit. If you use a meta tags generator, encoding happens automatically. ### 5. Multi-image preview vs single-image preview `og:image` is repeatable — apps will pick the most relevant. Twitter only uses the first one. Most apps use the first. Optimize for the first; add additional images only if you have a specific use case. ## Build the tags interactively Hand-writing all of this for every new page is tedious. Use the [Meta Tags Generator](/tools/meta-tags-generator/) — it produces correct, ordered HTML with the inheritance chain handled, plus live previews of how Google SERP, Facebook, and Twitter will render the result. When you've shipped, use [DevZap's SEO Meta Inspector](/features/seo-meta-inspector/) to verify on the live page. It surfaces every meta tag the page actually exposes — useful when you want to confirm your CMS or framework rendered everything you expected. ## The minimum check before publish Before any new page goes live: - ☐ `` ≤ 60 chars, accurately describes the page - ☐ `<meta description>` 50–160 chars, accurate, compelling - ☐ `<link rel="canonical">` set to the canonical URL - ☐ `og:title`, `og:description`, `og:image`, `og:url`, `og:type` all set - ☐ `og:image` URL is absolute and returns 200 with a 1200×630 image - ☐ `twitter:card` set to `summary_large_image` - ☐ Visit Facebook Sharing Debugger and confirm the preview matches what you want This list takes 90 seconds. Skipping it costs hours when a launch tweet goes wide and the preview is broken.