OG Pilot

Open Graph Checker & Debugger

Free open graph debugger and checker. Paste a URL to preview link cards on Facebook, X, LinkedIn, Slack, Discord, and WhatsApp, then fix a weak image.

Try:

Fix the card after you check it

This checker reads og:title, og:description, og:image, and the Twitter card tags, then previews the unfurl on Facebook, X, LinkedIn, Slack, Discord, and WhatsApp. A missing or tiny image is the usual reason a link looks unfinished. Generate a replacement, or publish the same image with the API or MCP, then run the URL again. The guide below compares Meta, X, LinkedIn, WhatsApp, Messages, and Slack, including the cases their own tools do not catch. Carrd sites upload the file under Publish β†’ Media. The Carrd social image guide walks through that step.

What each open graph debugger actually checks

An open graph debugger answers one question: what card will this URL get? An og image checker should also say whether the file is reachable, large enough, and the right type. Meta, LinkedIn, X, WhatsApp, Messages, and Slack do not share one tool, and they do not share one image rule. The tag names themselves come from the Open Graph protocol. That site defines properties. It is not a multi-network preview.

The table uses the vendor pages linked under it. Where a current doc does not state a size or a cache lifetime, the cell says so. This page does not fill those gaps with a round number.

ToolWhat it checksCache refreshImage sizeWhat it misses
Meta Sharing DebuggerFacebook 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 and a 30-day automatic update. Image bytes are cached by URL.At least 1200Γ—630 for high-res display. Minimum 200Γ—200. File must not exceed 8 MB. Stay close to 1.91:1.Does not preview X, LinkedIn, WhatsApp, Slack, or Messages. Does not draw a replacement image.
X card previewNo working official preview. The Card Validator preview was retired and not replaced in current X docs.No public refresh tool. A current cache lifetime is not in first-party docs this page can cite.No current Cards size table on docs.x.com to cite. Set twitter:card and an absolute https image.No official way to see the card or force a refetch. Falls back to og:* when twitter:* is absent.
LinkedIn Post InspectorThe preview LinkedIn will use, missing data, and when LinkedIn last fetched the page.Inspect requests a re-scrape. LinkedIn Help says that refresh applies to new posts. Existing posts keep the old card.Sharing module: at least 1200Γ—627, 1.91:1, at most 5 MB. Under 401 px wide shows as a thumbnail.Does not preview other networks. Does not update posts that already used the URL.
WhatsAppNo debugger. Compose a message and wait up to 10 seconds for a preview above the composer.The link-preview doc does not publish a refresh tool or a cache lifetime.Absolute URL, under 600 KB, at least 300 px wide, width/height of 4:1 or less. Tags in the first 300 KB of HTML.No multi-network check and no documented cache clear. A file Meta accepts can still be too big here.
Messages (iMessage)No public Open Graph debugger. TN3156 says Messages reads og:title and og:image for rich previews.TN3156 does not document a refresh tool or a cache lifetime.At least 900 px wide. Under 150 px wide may be ignored or shown as an icon. Page resource limited to 1 MB.No inspector. TN3156 says avoid text in the image because the preview size changes.
SlackNo public consumer debugger. Without an app unfurl, 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 debuggerPublic HTML, then og and twitter tags, then the image file. Previews Facebook, X, LinkedIn, Slack, Discord, and WhatsApp.Shows the tags it fetched. It does not clear Meta, LinkedIn, X, WhatsApp, Messages, or Slack.Flags files that are not 1200Γ—630, far from 1.91:1, over 1 MB, or not JPEG or PNG. The 1 MB line is ours, not Meta's or WhatsApp's.It is not those crawlers. It can resolve a relative image URL, which hides a bug other crawlers still hit.

Sources: Meta Sharing Debugger, Images in Link Shares (updated June 30, 2026: 1200Γ—630, 600Γ—315, 200Γ—200, 8 MB, 1.91:1), Sharing best practices (February 23, 2022: debugger refresh versus a standard 24-hour update), change an existing link (July 20, 2018: automatic updates can take 30 days; Graph API POST /?id={url}&scrape=true; use a new image URL), LinkedIn Post Inspector, make a site shareable, refresh a URL, WhatsApp link previews (updated May 21, 2026), Apple TN3156, Slack robots, and Slack unfurls. Meta's 24-hour note and 30-day note are both published. Scrape again, and change the image URL, instead of picking one interval.

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. These are the failures that survive a green debugger.

Stale caches. Meta caches the image by its URL and tells you to publish the new file at a new URL. LinkedIn's refresh does not rewrite posts that already went out. Slack's robots page puts the unfurl cache at around 30 minutes. X, WhatsApp, and Messages do not publish a button for this. Run the URL here to see the tags that are live now, then use the network's own tool where one exists. This checker does not call those tools.

Redirects. This checker follows up to five redirects and rejects a private hop. Share the final public URL anyway. og:url should be that page, not a tracking link. WhatsApp's doc asks for a canonical URL without session parameters.

Relative og:image URLs. WhatsApp requires an absolute image URL. This checker joins a relative URL to the page before it fetches the file, so a preview can look fine here and fail for a crawler that does not do that join. Publish https://….

Wrong content type. A login wall or a soft 404 often returns HTML where the image should be. The checker reports the response content type and flags anything that is not JPEG or PNG. A platform debugger often just shows a missing image. JPEG and PNG are this checker's preferred formats. Meta's image doc does not limit you to those two, and LinkedIn's ad specs (a different surface) allow JPG, PNG, or GIF.

Oversized images. Meta allows up to 8 MB. LinkedIn's sharing module allows 5 MB. WhatsApp wants the image under 600 KB. This checker flags files over 1 MB because that is its own recommendation, which is stricter than Meta and looser than WhatsApp. A file that passes Meta can still fail WhatsApp. The MCP tool compress_image resizes a public image URL. Its default dimensions are 1200Γ—630.

Missing twitter:card. X no longer offers the Card Validator preview, so a Facebook-only debugger will not mention the gap. This checker subtracts from the score when twitter:card is missing and still draws an X preview from the tags it found. The suggested meta block defaults that card to summary_large_image.

One image for every URL. A homepage screenshot does not describe a pricing page or a post. Put the tags in the first HTML response. WhatsApp only reads markup inside the first 300 KB, and a crawler that does not run the app will not see tags inserted after load. When each URL needs its own card, generate it. The OG image API returns a CDN URL for og:image. The Next.js guide shows that URL from generateMetadata. The WordPress plugin writes the tags for posts, pages, and WooCommerce products.

Fix the card with the API or MCP

The checker above tells you the image is weak. These calls replace it. Create an API key, sign requests on your server, and put the returned URL in og:image and twitter:image. Then run the same public URL through the checker again. Domain verification for the API is a DNS TXT record, documented at /docs.

API request

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.
Sign the JWT on your server. Docs: https://ogpilot.com/docs

JavaScript SDK

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) },
)

// Put imageUrl in og:image and twitter:image, then re-check the page.

POST https://ogpilot.com/api/v1/images takes a JSON body field token. Required JWT claims are iss and sub. Pass iat when you want the documented 24-hour cache window. The SDK call matches the OG image API guide. Prefer an official SDK over hand-rolled signing.

MCP: debug, then generate

Remote MCP URL: https://ogpilot.com/mcp
Transport: Streamable HTTP
Auth: OAuth 2.1 with PKCE
Docs: https://ogpilot.com/docs/mcp

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 works on a guest connector session.
generate_og_image needs a signed-in account with an active plan.

debug_open_graph is the read-only inspect tool. generate_og_image builds the replacement. Both are on the remote server at https://ogpilot.com/mcp. Connector steps for Claude and ChatGPT developer mode are on /docs/mcp. A trial is not enough for generation. The tool returns plan_required and does not start a checkout.

Create an API key, or install MCP

Check the live URL on this page first. If the image is the weak part, generate a replacement and publish that URL. Read the API docs for JWT claims, and the MCP guide for the connector. Carrd still uploads a file. The Carrd social image guide is that path.

  • Create an API key

    Sign image URLs from your server after the domain is verified.

  • Install MCP

    Add https://ogpilot.com/mcp and call debug_open_graph, then generate_og_image.

  • Generate one image

    Build a 1200Γ—630 card for the URL you just checked, before you wire auth.

  • OG image API

    Hosted API next to @vercel/og and a DIY Satori pipeline.

  • Next.js OG images

    Metadata file, ImageResponse, or this API from generateMetadata.

  • WordPress plugin

    Generated og:image for posts, pages, and WooCommerce, without a theme secret.

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 og:title, og:description, og:image, og:url, twitter:card, and twitter:image, 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 and does not publish a replacement debugger in current X docs. WhatsApp's link-preview documentation tells you to compose a message and wait, not to open a debugger. 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. This checker reports content type, dimensions, and file size, and it follows up to five public redirects. It does not purge Meta, LinkedIn, X, WhatsApp, Messages, or Slack. 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. Meta's change-link documentation also describes a Graph API scrape and says to put a replacement image on a new URL, because image bytes are cached by URL. LinkedIn Post Inspector refreshes the preview for new posts. Existing LinkedIn posts keep the old card. Slack's robots page says unfurl responses are cached 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, Streamable HTTP, OAuth 2.1 with PKCE. debug_open_graph takes a public url and returns a score, meta tags, image details, issues, and suggested meta tags. It is read-only. generate_og_image takes a url and an optional style and returns a hosted image. Debug, compress, and palette work on a guest connector session. Image generation needs a signed-in account with an active plan. Setup is at /docs/mcp.

Which image size should an og image checker expect?

There is no single official size. Meta's images documentation says at least 1200 by 630 pixels for high-resolution display, at least 600 by 315 for a larger link post, a 200 by 200 minimum, a file no larger than 8 MB, and an aspect close to 1.91:1. LinkedIn's sharing module wants at least 1200 by 627, a 1.91:1 ratio, and at most 5 MB. WhatsApp wants an absolute image under 600 KB, at least 300 pixels wide, with width divided by height of 4:1 or less. Apple's TN3156 says Messages images should be at least 900 pixels wide. X does not publish a current size table this page can cite. This checker 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, not Meta's cap or WhatsApp's cap.

Marketers, turn every share into a client win

Connect OG Pilot to your clients’ domains, auto-generate branded OG images, and prove the click-through lift with built-in analytics. No more designer bottlenecks, no more launch delays. Just scroll-stopping previews that close retainers faster.

⚑️Unlimited refinements for campaignsπŸ“ŠClient-ready analytics dashboards

Ready to onboard your next app?

Start a trial and ship OG images that earn clicks.

🌐

7-day free trial. No credit card required.