What this Open Graph checker does
Paste a URL and our server fetches the page once, the way a link preview crawler would. It reads every Open Graph and X card tag, plus the title, meta description, canonical URL and icons. Then it fetches the start of the og:image and reads the file itself: its real format, its width and height in pixels, and its size. You get an Open Graph preview for five platforms, a table of every tag, a list of what to fix in plain words, and a corrected set of tags to copy.
First, the limit. The cards are drawn by us, not by the platforms. We follow the tags each platform documents, in the order it documents them. Where a platform publishes nothing about a fallback, such as what LinkedIn shows when og:title is missing, the card still shows our best guess but labels it “our guess”. A layout can change on any platform any day. The tag checks and the image test do not depend on that.
We left Discord out. We could not find Discord documentation on which tags its link embeds read, and this tool only applies rules a platform has published.
Sources: ogp.me[1]; Meta[3]; Meta’s WhatsApp link preview guidance[6]. A 300 KB image limit for WhatsApp is often repeated online; Meta’s page says 600 KB.
The tags each platform reads
The Open Graph protocol, first created at Facebook, defines the tags most platforms use. Its four required properties are og:title, og:type, og:image and og:url. It adds og:image:alt and says “if the page specifies an og:image it should specify og:image:alt”. Where a tag repeats, “the first tag (from top to bottom) is given preference during conflicts”[1]. That last rule is why a theme and a plugin that both add tags cause odd cards: the first og:title wins, and it may be the wrong one.
Here is what each platform says it reads, and the limits it publishes:
| Platform | Reads | Published image limits | Refresh tool |
|---|---|---|---|
| LinkedIn[10][11] | og:title, og:description, og:image, og:url | At least 1200 by 627, 1.91:1, up to 5 MB. Under 401 px wide shows as a thumbnail. | Post Inspector |
| X[7][8][9] | twitter:card, then twitter:title, twitter:description, twitter:image, each falling back to its og: tag | Large card 2:1, 300 by 157 to 4096 by 4096. Summary 1:1, from 144 by 144. Under 5 MB; JPG, PNG, WEBP or GIF; no SVG. | None published |
| Facebook[2][3][4] | og:url, og:title, og:description, og:image; og:type defaults to website | At least 200 by 200; 600 by 315 for the large image; 1200 by 630 recommended; up to 8 MB; tags in the first 1 MB. | Sharing Debugger |
| Slack[13] | oEmbed, then Twitter Card and Open Graph tags | None published. Responses cached for around 30 minutes. | None published |
| WhatsApp[6] | og:title, og:description, og:url, og:image | Under 600 KB, at least 300 px wide, no wider than 4:1. The <head> within the first 300 KB of HTML. | None published |
Two of these surprise people. X does not need its own title, description or image tags: its markup reference lists og:title, og:description and og:image as the fallbacks[7]. What it does want is twitter:card. Without it, the reference says, “a summary card may be rendered” if og:type, og:title and og:description exist. That is the small card with a square thumbnail. For the wide image you need summary_large_image. The full tag list, and how X cards relate to Open Graph, is in our guide to the Open Graph protocol.
The other is WhatsApp. Meta’s page for it asks for og:title, og:description and og:url inside the <head>, and adds that “the <head> containing the HTML mark-ups must appear within the first 300KB of the HTML”[6]. A page that puts megabytes of inline script ahead of its meta tags can lose the preview. The checker measures where the first og: tag starts and warns past 300 KB. If WhatsApp is where your links go, our guide to WhatsApp link previews covers the rest.
<meta property="og:title" content="How to bake sourdough bread"> <meta property="og:description" content="A simple 24-hour recipe, with fixes for dense loaves."> <meta property="og:type" content="article"> <meta property="og:url" content="https://www.example.com/recipes/sourdough"> <meta property="og:site_name" content="Crumb"> <meta property="og:image" content="https://www.example.com/og/sourdough.jpg"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta property="og:image:alt" content="A sourdough loaf on a wooden board"> <meta name="twitter:card" content="summary_large_image">
The og:image test: size, shape and format
Most broken cards are broken images. So the og image checker does more than read the tag. It downloads the first 256 KB of the image and reads the size from the file’s own header. A PNG stores its width and height at a fixed place in its first chunk[17]. A GIF stores them in its screen descriptor[19]. WebP has three variants, each with its own layout[18]. A JPEG keeps them in its first frame header, often after a large block of camera data[20]. Reading the bytes, rather than trusting og:image:width and og:image:height, catches the page that claims 1200 by 630 but serves a 400 pixel thumbnail.
The og image test then checks the result against every published limit:
- Meta: at least 200 by 200, or Facebook will not use it; at least 600 by 315 for the large image; 1200 by 630 recommended; close to 1.91:1; no more than 8 MB[3].
- LinkedIn: at least 1200 by 627, 1.91:1, up to 5 MB. “Images less than 401 pixels wide display as a thumbnail image”[10].
- X: under 5 MB, as JPG, PNG, WEBP or GIF. “SVG is not supported.” The large card is 2:1 from 300 by 157; the summary card is 1:1 from 144 by 144[7][8][9].
- WhatsApp: under 600 KB, at least 300 pixels wide, and no wider than 4:1[6].
Meta also asks for og:image:width and og:image:height. They let its crawler “render the image immediately without having to asynchronously download and process it”[3]. Without them, the first share of a new page can appear with no image. The size question, crop safe zones included, has its own guide: OG image size for every platform.
Why a link preview is wrong or missing
When the checker shows a good card and the app still shows a bad one, the cause is usually one of these.
The platform cached an old card
Apps store the card they built the first time a link was shared. LinkedIn says that if you shared the same URL before, “the image might already have been stored in the cache and that’s what you see”, and points to its Post Inspector to refresh it[11][12]. Meta’s Sharing Debugger forces a fresh crawl[4], and Meta caches images by URL, so “use a new URL for the new image”[3]. Slack caches responses “for around 30 minutes”[13]. The LinkedIn side has its own walkthrough in our LinkedIn post preview guide.
The tags are added by JavaScript
Link preview crawlers read the HTML your server sends. Slack’s crawler fetches “as little of the page as it can”[13], and Meta’s documentation simulates its own crawler with a plain command-line request[4]. Tags that a script adds after the page loads are not in that HTML. This checker fetches the same way, so if your tags are missing here but present in your browser’s inspector, JavaScript is adding them.
The tags arrive too late, or twice
Meta says Open Graph properties must sit within the first 1 MB of the page[4], and WhatsApp within the first 300 KB[6]. Separately, duplicate tags from a theme and a plugin leave apps to pick one, and the protocol picks the first[1].
The image URL is relative, blocked or not an image
Meta’s WhatsApp page describes og:image as “an absolute URL”[6]. A relative path such as /og.png works in some apps and not others. An image behind a login, a hotlink block or a cookie wall loads in your browser and fails for a crawler. The checker fetches the image as a crawler would and reports the status code and content type it got.
Fixing Open Graph tags in Next.js
The checker gives every fix twice: as HTML tags and as a Next.js metadata export. In the App Router, the metadata object’s openGraph and twitter fields write these tags for you. Set metadataBase once in the root layout: it “allows URL-based metadata fields defined in the current route segment and below to use a relative path instead of an otherwise required absolute URL”[15]. That turns a relative image path into the absolute URL WhatsApp and others expect. For the image itself, an opengraph-image file in a route folder sets “a route segment’s shared image”[16]. This site builds its own cards that way. What else changes for AI crawlers on a Next.js site, including metadata that arrives late, is in our guide to Next.js SEO.
Open Graph, search results and structured data
Open Graph tags are for link previews, but they are not ignored by search. Google lists og:title among the sources it can use to build a title link in results[14]. The title element still matters more there. See your title and description at Google’s widths in the SERP preview.
What Open Graph does not do is describe your organisation, products or articles to search engines in detail. That is the job of structured data. The schema markup generator builds it. If LinkedIn is where you share most, our piece on LinkedIn and AI search covers what gets cited from there.
Before you share a page
Work through this with the result above. Your ticks are saved in this browser only.
Check every page on your site
This tool checks one URL. Share tags break site-wide: a template with no og:image, a plugin that duplicates og:title on every post, a product feed whose pages share one description. The GEO Audit crawls your site and runs 31 checks on every page, including the meta description that cards fall back to when og:description is missing.
The free account audits 10 pages with an email address and no card. Every limit is on the pricing page.
Questions people ask
What does an Open Graph checker do?
It reads the Open Graph and X card tags in a page's HTML and shows what each app would build from them when the link is shared. This one also fetches the og:image and reads its real format, pixel size and file size, checks them against each platform's published limits, and writes the missing tags for you in HTML and Next.js form.
What size should an og:image be?
1200 by 630 pixels, as a PNG or JPEG, under 600 KB. Meta recommends at least 1200 by 630 and close to 1.91:1. LinkedIn asks for at least 1200 by 627. Meta's WhatsApp guidance asks for under 600 KB. X's large card is 2:1, so it trims a little from a 1.91:1 image; keep text away from the edges.
Why is my link preview not updating?
The platform cached the card it built the first time someone shared the link. Fixing the tags does not change that card until the platform fetches the page again. LinkedIn's Post Inspector and Facebook's Sharing Debugger make them look again. Slack caches for around 30 minutes. Meta caches images by URL, so a new image needs a new image URL.
What are the required Open Graph tags?
The Open Graph protocol names four: og:title, og:type, og:image and og:url. Add og:description too: LinkedIn and Meta's WhatsApp guidance both list it, and without it most cards show no summary. Add og:image:width, og:image:height and og:image:alt for the image.
Do I need twitter: tags as well as Open Graph tags?
Mostly not. X's markup reference has twitter:title, twitter:description and twitter:image fall back to og:title, og:description and og:image. The one to add is twitter:card. Without it, X says a small summary card may be rendered; add twitter:card with the value summary_large_image for the wide image. X also documents a 70 character title and a 200 character description.
Why does WhatsApp not show my image?
Meta's WhatsApp guidance sets rules most sites miss: the image under 600 KB, at least 300 pixels wide, no wider than 4:1, and the <head> with the tags inside the first 300 KB of HTML. A large hero image reused as og:image is the usual cause. The checker flags each of these.
Is this the same as Facebook's Sharing Debugger?
No. The Sharing Debugger is Meta's own Open Graph debugger: it shows what Facebook's crawler saw and can force it to fetch again, which clears Facebook's cache. This tool cannot clear anyone's cache. It shows every platform at once, checks the image against each one's limits, and needs no login. Use both: this to fix the tags, the platform tools to refresh.
