Pixel-Level Live SimulationGoogle SERP · X · LinkedIn · WhatsAppNext.js 15+ App Router Metadata🔒 100% Client-Side

OpenGraph, Twitter Card & SERP Live Preview

Simulate your previews live for Google search results, X (Twitter Large Card), LinkedIn, WhatsApp and Facebook. Check character and image limits instantly and copy type-safe Next.js 15+ App Router metadata code.

A Guide to Optimizing OpenGraph, Twitter Cards and SERP Appearance

How often a piece of content is clicked when shared on social networks and messaging apps (CTR) matters as much to its success as its search ranking. OpenGraph (og:) and Twitter Card (twitter:) meta tags turn your link into a card with a high-resolution cover image, an engaging title and a compelling summary when it is shared on X (Twitter), LinkedIn, WhatsApp, Facebook, Slack or Discord.

1. Character and Image Standards for Social Networks and Google SERP

Each platform truncates meta tags with its own limits. The gold standards for cross-platform compatibility:

PlatformIdeal Title LimitIdeal Description LimitRecommended Image SizeCard Type / Format
Google SERP (Desktop & Mobile)50 - 60 characters140 - 158 characters1200x675 px (16:9)Standard SERP Result Card
X (Twitter)~70 characters125 - 150 characters1200x630 px (1.91:1)summary_large_image
LinkedIn~60 characters~150 characters1200x627 pxRich Professional Card
WhatsApp & Telegram~50 characters~100 characters1200x630 px (< 300KB)In-Message Preview Bubble
Facebook & Slack~65 characters~150 characters1200x630 pxStandard OG Card

2. Type-Safe Metadata Architecture in the Next.js 15+ App Router

In the Next.js App Router you can define metadata with export const metadata: Metadata, or with generateMetadata for dynamic pages:

// app/blog/[slug]/page.tsx import type { Metadata } from 'next' export async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> { const post = await fetchPost(params.slug) const pageUrl = `https://ismailhakkieren.com/blog/${params.slug}` const ogImageUrl = post.image || 'https://ismailhakkieren.com/images/default-og.jpg' return { title: `${post.title} | İsmail Hakkı EREN`, description: post.summary, alternates: { canonical: pageUrl, }, openGraph: { title: post.title, description: post.summary, url: pageUrl, siteName: 'İsmail Hakkı EREN', images: [ { url: ogImageUrl, width: 1200, height: 630, alt: post.title, }, ], type: 'article', publishedTime: post.publishedAt, }, twitter: { card: 'summary_large_image', title: post.title, description: post.summary, images: [ogImageUrl], creator: '@ismailhakkieren', }, } }

3. Resetting Social Network Caches

After you change the cover image or title on your site, platforms may keep showing the old image. The official cache reset tools:

LinkedIn Post Inspector

Refreshes the old OG image on LinkedIn’s servers within seconds.

Facebook Sharing Debugger

Refreshes Facebook and WhatsApp metadata with the "Scrape Again" button.

X (Twitter) Card Validator

Paste the URL into the post composer to confirm the card has updated.

Frequently Asked Questions (FAQ)

OpenGraph tags make your website show up as a rich, professional card with a title, description and cover image when it is shared on social media and messaging platforms.
For the sharpest display on every social network, images of 1200x630 pixels with a 1.91:1 aspect ratio are recommended.
In the Next.js 13+ App Router, place an export const metadata: Metadata object, or a dynamic export async function generateMetadata(), at the top of your page files (page.tsx or layout.tsx).
WhatsApp may not fetch the preview image when the image file is larger than 300 KB or when the link does not support HTTPS.
WhatsApp does not cache images larger than 300 KB or links with an invalid HTTPS certificate. Make sure your image is 1200x630 pixels, in optimized WebP or compressed JPG format.
For modern content marketing, summary_large_image is strongly recommended. A large banner image catches users’ attention and can increase the organic click-through rate up to 3x.
For shares with UTM tags or filters (e.g. ?utm_source=twitter), the canonical tag is required so that search engines do not count the same content as a duplicate and social shares are consolidated under one main URL.