Open Graph checker

Open Graph Checker & Debugger

Paste a public URL to preview the link card before you share it. This open graph debugger and og image checker reads the tags social platforms use: og:title, og:description, og:image, og:url, twitter:card, and twitter:image. It then shows how that card is likely to look on Facebook, X, LinkedIn, Slack, Discord, and WhatsApp.

Meta, LinkedIn, X, WhatsApp, Messages, and Slack do not share one debugger or one image rule. The tag names come from the Open Graph protocol at ogp.me. That site defines properties. It is not a multi-network preview. Where a current vendor doc does not state a size or a cache lifetime, this page says so instead of inventing a number.

If the image is the weak part, generate an OG image for the same URL, create an API key and read the API docs when the page should build that image on each request, or install MCP when an agent should call debug_open_graph and generate_og_image. Framework paths: the OG image API comparison, the Next.js OG image guide, the WordPress open graph plugin, how to change the OG image in WordPress, the Open Graph protocol on WordPress, and the Carrd social image guide.

What each open graph debugger actually checks

Tool What it checks Cache refresh Image size What it misses
Meta Sharing Debugger Facebook share preview and Open Graph warnings. Facebook login required. Running the URL in the Sharing Debugger refreshes scraped metadata. Meta publishes both a 24-hour update note (sharing best practices, February 23, 2022) and a 30-day automatic update (change-link doc, July 20, 2018). Image bytes are cached by URL. The change-link doc also documents Graph API POST /?id={url}&scrape=true and says to use a new image URL. Images in Link Shares, updated June 30, 2026: at least 1200 by 630 for high-resolution display, at least 600 by 315 for a larger link post, minimum 200 by 200, file must not exceed 8 MB, stay close to 1.91:1. Set og:image:width and og:image:height. Does not preview X, LinkedIn, WhatsApp, Slack, or Messages. Does not draw a replacement image. Existing shares keep the old preview until those shares are refreshed.
X card preview No working official preview. X retired the Card Validator preview and current X docs do not publish a replacement debugger. No public refresh tool. A current cache lifetime is not in first-party docs this page can cite. No current Cards size table to cite. Set twitter:card and an absolute https image. This checker suggests summary_large_image when the card tag is missing. No official way to see the card or force a refetch. X falls back to og tags when twitter tags are absent.
LinkedIn Post Inspector The preview LinkedIn will use, missing data, and when LinkedIn last fetched the page. Inspect requests a re-scrape. LinkedIn Help (refresh a URL) says that refresh applies to new posts. Existing posts keep the old card. Sharing module, make your website shareable: at least 1200 by 627, recommended ratio 1.91:1, at most 5 MB. Images under 401 pixels wide display as a thumbnail. Does not preview other networks. Does not update posts that already used the URL.
WhatsApp No debugger. The link-preview doc says to compose a message and wait up to 10 seconds. WhatsApp crawls with an HTTP GET. That doc does not publish a refresh tool or a cache lifetime. Absolute image URL, under 600 KB, at least 300 pixels wide, width/height of 4:1 or less. og:title, og:description, og:url, and og:image must sit in the head, inside the first 300 KB of HTML. og:url should be canonical, without session parameters. About 80 characters is enough for the description. No multi-network check and no documented cache clear. A file Meta accepts can still be too big for WhatsApp.
Messages (iMessage) No public Open Graph debugger. Apple TN3156 says Messages reads og:title and og:image for rich link previews. TN3156 does not document a refresh tool or a cache lifetime. At least 900 pixels wide. Under 150 pixels wide may be ignored or shown as an icon. Icons should be square and at least 108 pixels. The page resource is limited to 1 MB. Associated resources are limited to 10 MB. TN3156 calls these guidelines. No inspector. TN3156 says to avoid text in the image because the preview size changes by device.
Slack No public consumer debugger. Without an app unfurl handler, Slack crawls Open Graph and X card tags, plus oEmbed. Slack's robots page says unfurl responses are cached globally for around 30 minutes. The unfurl docs cited here do not publish a single og:image pixel size. Does not show Facebook, LinkedIn, or WhatsApp. Does not generate the image.
This open graph debugger Fetches public HTML, reads og and twitter tags, fetches the image, and previews Facebook, X, LinkedIn, Slack, Discord, and WhatsApp. Private hosts and localhost are blocked. Shows the tags it fetched now. It does not clear Meta, LinkedIn, X, WhatsApp, Messages, or Slack. Flags files that are not 1200 by 630, far from 1.91:1, over 1 MB, or not JPEG or PNG. The 1 MB line is this checker's recommendation. It is stricter than Meta's 8 MB and LinkedIn's 5 MB, and looser than WhatsApp's 600 KB. It is not those crawlers. It follows up to five public redirects. It also joins a relative image URL to the page before fetching, which can hide a relative-URL bug.

What an og image checker still misses

Platform tools tell you what they stored. They do not tell you that the next network will store something else.

Fix the card with the API or MCP

Create an API key, sign the request on your server, and put the returned URL in og:image and twitter:image. Then check the public URL again.

POST https://ogpilot.com/api/v1/images
Content-Type: application/json

{"token":"YOUR_JWT_TOKEN"}

Required JWT claims: iss (verified domain), sub (API key prefix).
Optional: iat, template, title, description, path.
Pass iat when you want the documented 24-hour cache window.
Domain verification for the API is a DNS TXT record.
import { configure, createImage } from "og-pilot-js"

configure((config) => {
  config.apiKey = process.env.OG_PILOT_API_KEY
  config.domain = process.env.OG_PILOT_DOMAIN
})

const imageUrl = await createImage(
  {
    template: "blog_post",
    title: "Post title",
    description: "Post summary",
    path: "/pricing",
  },
  { iat: Math.floor(Date.now() / 1000) },
)
Remote MCP URL: https://ogpilot.com/mcp
Transport: Streamable HTTP
Auth: OAuth 2.1 with PKCE

debug_open_graph
{ "url": "https://example.com/pricing" }

Returns score, score_label, meta_tags, image
(url, content_type, byte_size, width, height, aspect_ratio),
issues, and suggested_meta. Read-only.

generate_og_image
{ "url": "https://example.com/pricing" }
Optional style. Default is auto-detect.

Debug, compress, and palette work on a guest connector session.
generate_og_image needs a signed-in account with an active plan.
A trial is not enough. The tool returns plan_required and does not start a checkout.

Prefer an official SDK over hand-rolled JWT signing. See /docs and /docs/mcp. The same API is what /og-image-api compares with @vercel/og, and what /nextjs-og-image-generator calls from generateMetadata. /wordpress is the plugin path for posts, pages, and WooCommerce.

Open graph debugger questions

What is an open graph debugger?

An open graph debugger fetches a public URL and shows the title, description, and image a social app uses for the link card. This page is also an og image checker. It reads the Open Graph and Twitter card tags, then previews Facebook, X, LinkedIn, Slack, Discord, and WhatsApp. It does not clear those apps' caches.

Does the Meta Sharing Debugger check X, LinkedIn, and WhatsApp?

No. Meta's Sharing Debugger previews a Facebook share and requires a Facebook login. LinkedIn has Post Inspector. X retired the Card Validator preview. WhatsApp's link-preview documentation tells you to compose a message and wait. This page is one pass across those networks.

What does an og image checker miss?

A tag list can miss a stale platform cache, a redirect hop, a relative og:image, an image URL that returns HTML, a file Meta accepts and WhatsApp rejects, a missing twitter:card, and one homepage image reused on every URL. Use the API or MCP when each URL needs its own image.

How do I refresh a cached link preview?

Use the tool that owns the cache. Meta's Sharing Debugger refreshes scraped metadata, and a new image URL avoids the cached bytes. LinkedIn Post Inspector refreshes new posts only. Slack caches unfurls for around 30 minutes. X, WhatsApp, and Messages do not publish a refresh tool in the docs cited here. This checker does not refresh those caches.

Can I debug Open Graph tags with MCP?

Yes. The remote server is https://ogpilot.com/mcp. debug_open_graph takes a public url and returns a score, meta tags, image details, issues, and suggested meta tags. generate_og_image takes a url and an optional style. Setup is at /docs/mcp.

Which image size should an og image checker expect?

There is no single official size. Use Meta's 1200 by 630 guidance for Facebook, LinkedIn's 1200 by 627 sharing module, WhatsApp's 600 KB absolute image, and Apple's 900-pixel width for Messages. X does not publish a current size table this page can cite. This checker's 1 MB warning is its own recommendation.