CoreCited
Technical

Open Graph protocol: every og tag, the X card, and what each platform reads

The Open Graph protocol explained: the required og tags, optional ones worth adding, how X (Twitter) cards relate, and which tags each platform reads.

AlexFounder & Developer12 min read

The Open Graph protocol is a set of meta tags that tells other apps what a page is when someone shares its link. Facebook created it in 2010. Today LinkedIn, Slack, Apple’s Messages, Pinterest and Google read some of its tags, and X falls back to them. The spec requires four og tags, and that part is easy. The harder part is that each platform reads its own subset, keeps the first card it built, and documents very little. X has taken its card documentation offline altogether. This page covers every tag, the X (Twitter) card, what each platform says it reads, and what Open Graph does and does not do for SEO and AI answers.

Before you change anything, look at what your page sends today. Platforms read the HTML your server returns, not the page you see in a browser. The free Open Graph checker reads a URL’s og and twitter tags, checks the image, and shows how the card is likely to look on LinkedIn, X, Facebook, Slack and WhatsApp.

Key takeaways
1The Open Graph protocol is a set of og: meta tags that turns a shared link into a card. Facebook created it in 2010.
2The spec requires four tags: og:title, og:type, og:image and og:url. Add og:description, og:site_name and og:image:alt too.
3X reads its own twitter: tags first and falls back to og tags. In practice you need one extra tag, twitter:card.
4Each platform documents a different subset, and most keep the first card they built. Fix the tags, then ask each one to fetch again.
5Google uses og:title, og:site_name and og:image to shape how results look. It does not document them as a ranking signal, and no AI company documents using them.
4
tags the Open Graph spec requires on every page
ogp.me, read Oct 2026
1 MB
of a page Meta reads for Open Graph tags; anything later is cut off
Meta, read Oct 2026
7 days
X cached a card after the link was posted, per its last published docs
X docs, archived Jan 2026
30 min
roughly how long Slack caches a link preview fetch
Slack, read Oct 2026

The four tags are in the spec[1]. Meta states its 1 MB cut-off in its crawler documentation[6]. X’s figure comes from an archived copy of its own docs, which are no longer online[7]. Slack’s comes from its robots page[13].

What the Open Graph protocol is

Definition · Open Graph protocol
A protocol that “enables any web page to become a rich object in a social graph”[1]. In plain words: a few tags in a page’s head that say what the page is called, what kind of thing it is, which image represents it and what its permanent URL is.

The spec says the protocol “was originally created at Facebook and is inspired by Dublin Core, link-rel canonical, Microformats, and RDFa”[1]. Facebook announced it at its f8 developer conference on 21 April 2010, alongside Like buttons that other sites could put on their pages[2]. On launch day, Dan Brickley told the W3C’s RDFa group that it put “structured data into Web sites to sit alongside a Facebook ‘Likes’ button”, so apps could tell whether a page was about a movie, a restaurant or a book[3]. The spec still lives at ogp.me, published under the Open Web Foundation Agreement, Version 0.9[1].

Each tag is a meta element in the page’s head. The tag name goes in a property attribute and the value in content, as in the spec’s own example, <meta property="og:title" content="The Rock" />[1]. People call them OG tags, og tags or Open Graph tags. They all mean the same lines.

The four required og tags

The spec is short on this point: “The four required properties for every page are” og:title, og:type, og:image and og:url[1]. Here is what each one does, and what the platforms add.

  • og:title is “The title of your object as it should appear within the graph”[1]. Meta asks for the title “without any branding such as your site name”[4]. Apple says the same for Messages, and points the site name to og:site_name instead[14].
  • og:type says what kind of thing the page is. The spec adds that “Any non-marked up webpage should be treated as og:type website”[1]. Meta also defaults to website, and notes the type “impacts how your content shows up in Feed”[4]. Use article for posts and website for most other pages.
  • og:image is “An image URL which should represent your object within the graph”[1]. Give a full URL, starting with https. Next.js, for one, marks its image URLs “Must be an absolute URL”[21]. Sizes for each platform are in OG image size.
  • og:url is “The canonical URL of your object that will be used as its permanent ID in the graph”[1]. Meta asks for “the undecorated URL, without session variables”[4]. Make it match your canonical tag, so shares of a tracking link still count for the real page.

Optional og tags worth adding

The spec lists more optional tags. Five earn their place on almost every page.

  • og:description: “A one to two sentence description of your object”[1]. Meta says “usually between 2 and 4 sentences”[4], and X’s archived reference capped its own description at 200 characters[8]. One or two plain sentences suit all three.
  • og:site_name: “If your object is part of a larger web site, the name which should be displayed”[1]. Google’s site name system considers it too[17].
  • og:locale: the language and region, in the form language_TERRITORY, with en_US as the default. og:locale:alternate lists the other languages a page exists in[1][4].
  • og:image:width and og:image:height: Meta says these let its crawler “render the image immediately without having to asynchronously download and process it”[5].
  • og:image:alt: “A description of what is in the image (not a caption). If the page specifies an og:image it should specify og:image:alt”[1]. X used it as the fallback for its own image alt text[8].

Posts get a few more. When og:type is article, the spec adds article:published_time, article:modified_time, article:expiration_time, article:author, article:section and article:tag[1]. Next.js writes article:published_time and article:author for you when you set the type to article[21].

You can list more than one og:image. Where values conflict, the spec says “The first tag (from top to bottom) is given preference”[1]. Put the image you want first.

Every Open Graph tag, and what it does
From the spec at ogp.me and Meta's sharing guide, read 6 October 2026. The advice column is ours. Toggle columns.
What it saysIn the specOur advice
og:titleThe page's title, without your brandRequiredAlways
og:typeWhat kind of thing the page isRequiredarticle for posts, website for the rest
og:imageThe image for the cardRequiredAlways, as a full https URL
og:urlThe page's permanent, canonical URLRequiredAlways, the same as rel=canonical
og:descriptionOne or two sentences about the pageOptionalAlways
og:site_nameThe name of the whole siteOptionalAlways
og:localeLanguage and region, such as en_USOptionalWhen the page is not en_US
og:locale:alternateOther languages the page exists inOptionalMultilingual sites
og:image:width / heightThe image size in pixelsOptionalAlways
og:image:altWhat the image showsOptional, but the spec says it should be thereAlways
og:image:typeThe image's MIME typeOptionalNice to have
og:image:secure_urlAn https address for the imageOptionalOnly if og:image is http
og:determinera, an, the, auto or blank before the titleOptionalRarely needed
og:video / og:audioA media file that goes with the pageOptionalPages built around media
article:published_time / modified_timeWhen the article was first published, and last changedOptional, article typePosts
article:author / section / tagAuthor profile, site section, topic wordsOptional, article typePosts, if you have them
fb:app_idYour Facebook app ID, for Facebook InsightsNo: Meta's own tagOnly if you use Insights

X (Twitter) cards and the og fallback

X's card documentation is offline
X’s developer pages for Cards now redirect to the home page of docs.x.com, which has no Cards pages (checked 6 October 2026). Everything below about X comes from the last archived copies of X’s own pages, from January 2026[7][8][9]. X may have changed how cards work since then without saying so.

A Twitter card, now an X card, is X’s version of the same idea. Its tags start with twitter: and use a name attribute instead of property. X listed four card types: summary, summary_large_image, app and player[7]. For a web page the choice is between the two summary cards. The large one shows “a large, full-width prominent image” with the post[9].

X never asked you to repeat your Open Graph tags. Its guide said: “When the Twitter card processor looks for tags on a page, it first checks for the Twitter-specific property, and if not present, falls back to the supported Open Graph property.” Its parser also accepted the property attribute, “so there is no need to modify existing Open Graph protocol markup”[7].

One tag has no og twin: twitter:card. X’s reference says that if og:type, og:title and og:description exist but twitter:card is absent, “then a summary card may be rendered”[8]. “May” is not a promise, and summary is the small card. If you want the wide image, set twitter:card to summary_large_image. Note one more rule. X supported one card type per page, and if there were several, “the ‘last’ one in sequence will take priority”[7]. That is the opposite of Open Graph, where the first tag wins.

X card tags and their Open Graph fallback
From X's archived Cards markup reference and getting started guide (January 2026). Toggle columns.
Falls back toNotes from X's docs
twitter:cardNothingsummary, summary_large_image, app or player. Without it, a summary card may be rendered from og tags
twitter:titleog:titleMax 70 characters
twitter:descriptionog:descriptionMax 200 characters
twitter:imageog:imageUnder 5 MB. JPG, PNG, WEBP or GIF (first frame only). No SVG
twitter:image:altog:image:altMax 420 characters
twitter:siteNothingThe site's @username
twitter:creatorNothingThe author's @username

For summary_large_image, X gave a 2:1 aspect ratio, at least 300 by 157 pixels and at most 4096 by 4096[9]. X’s crawler, Twitterbot, follows robots.txt. If a page is blocked, no card is shown, and if only the image is blocked, the card has no image. X also cached a card for 7 days after the link was posted[7].

Which tags each platform reads

Every platform builds its card from the same tags, but each documents a different subset. This table lists only what each platform says in its own documentation. Platforms we could not find documentation for are left out. WhatsApp has a guide of its own: WhatsApp link preview not showing.

What each platform documents
From each platform's own docs, read 6 October 2026 (X: archived January 2026). Sources below the table. Toggle columns.
Tags it documentsImage notesWatch out for
Facebook (Meta)og:url, og:title, og:description, og:image, og:type, og:locale. fb:app_id for InsightsAt least 1080 px wide for best display, 600 px at minimum. Send width and heightTags after the first 1 MB are cut off. Images are cached by URL
Xtwitter:card, then falls back to og:title, og:description, og:image and og:image:altLarge card: 2:1, 300 x 157 to 4096 x 4096, under 5 MB, no SVGTwitterbot follows robots.txt. Cards cached 7 days
LinkedInog:title, og:image, og:description, og:urlAt least 1200 x 627, ratio 1.91:1, up to 5 MB, JPG, PNG or GIFA refresh does not change posts already published
SlackoEmbed, plus Open Graph and X card tagsFetches the image to check it is validCached for around 30 minutes. Does not honour robots.txt
Apple Messagesog:title, og:image, og:site_name, og:video (or twitter:player:stream)At least 900 px wide. Under 150 px may show as an iconRuns no JavaScript and follows no meta redirects. Page limit 1 MB
PinterestOpen Graph or schema.org, for Rich PinsNot covered on that pageWith several Rich Pin types on a page, product wins, then recipe, then article
Google Searchog:title, og:site_name and og:image, as some inputs among manyDiscover: at least 1200 px wide, with max-image-preview:largeGoogle's systems choose. Your tags are a hint, not an instruction

Sources: Facebook[4][5][6]; X[7][8][9]; LinkedIn[10][11]; Slack[12][13]; Apple[14]; Pinterest[15]; Google[16][17][18][19].

Slack’s developer docs put it simply: Slack “crawls the URL, looks for common OpenGraph and X (formerly known as Twitter) Card metadata, and renders some micro-approximation of the content”[12]. Slack also explains why it ignores robots.txt. It is “not a crawler”, because it does not follow links and acts on behalf of a person[13].

Two rules follow from the table. First, put the tags in the HTML your server sends, near the top of the head. Meta says Open Graph properties “need to be listed before the first 1 MB” of a page[6], and Apple says Messages previews do not run JavaScript, so “metadata must be available directly on the linked page”[14]. Tags added by a script after the page loads may never be seen. Second, expect caching. Each platform keeps the card it built, for its own length of time.

Open Graph vs schema.org structured data

They look alike, since both describe a page in a form machines can read. But they serve different readers. Open Graph is for apps that build a card when a link is shared. Schema.org structured data is, in Google’s words, “a standardized format for providing information about a page and classifying the page content”[20]. Google uses it for rich results, and recommends the JSON-LD format[20].

Open Graph and schema.org side by side
From the Open Graph spec and Google's structured data and site name docs. Toggle columns.
Main readersFormatWhat it controlsGoogle's documented use
Open GraphSocial networks and chat apps that build link cardsmeta tags in the headThe share card: title, image, descriptionOne input for title links, site names and the preferred image
schema.orgSearch enginesJSON-LD (Google's pick), Microdata or RDFaWhat the page is about, in detail: author, product, price and moreRich results, and the most important signal for your site name

They do overlap in places. For site names, Google says its system considers og:site_name, “However, WebSite structured data is most important, if you want to specify a preference”[17]. For a page’s preferred image, Google accepts either og:image or the schema.org property primaryImageOfPage[18]. Pinterest says the most common formats for Rich Pins are “Open Graph and Schema.org”[15].

So use both, and make them agree: the same title, the same image and the same name everywhere. Build the JSON-LD with the free schema markup generator, and see the entity SEO guide for how structured data tells engines who you are.

Do og tags affect SEO or AI answers?

Start with what Google documents. It reads three Open Graph tags, and all three are about how a result looks.

  • og:title is one of the sources Google uses to write title links, next to the title element and headings[16]. Our guide to title tags covers why Google rewrites them.
  • og:site_name is one of the inputs to the site name shown with results[17].
  • og:image is one way to suggest a preferred image, for example “a text result image or the preview image in Discover”[18]. Discover asks for images at least 1200 px wide, set with schema.org markup or og:image, and enabled by the max-image-preview:large setting[19].

Now the caveat. None of those pages describes Open Graph as a ranking signal, and we found no Google statement that says it is one, or that it is not. Google calls its choice of site name and image “completely automated”; your tags are one input among several[17][18]. Claims that og tags boost rankings have no Google source behind them. A good card may earn more clicks when a link is shared, but we know of no study that measures how many, so we give no number.

For AI answers, the facts are thinner still. OpenAI, Anthropic and Perplexity document their crawlers and how to control them. None of their pages, read on 6 October 2026, mentions Open Graph or meta tags[25][26][27]. Meta separates its crawlers: facebookexternalhit fetches links shared on Facebook, Instagram or Messenger, while meta-externalagent crawls for uses “such as training foundation AI models”, and meta-webindexer works on Meta AI search results[6]. It does not say which of them read og tags.

So the honest answer is this. AI crawlers fetch your HTML, and your og tags are in it. Whether any AI engine uses them is not documented. What is documented points one way. Vercel and MERJ found that none of the major AI crawlers they measured render JavaScript, and advise server-rendering “meta information (titles, descriptions, categories)”[28]. Send the tags from the server, and write og:title and og:description as an accurate summary of the page. That is what any reader, human or machine, will take from them.

How to add Open Graph tags

Wherever the tags come from, the result is the same few lines in the head. Pick your setup.

The four required tags, the optional ones worth having, and one X tag. Use full URLs for the image and the page[1][7].
Open Graph and X card tags
<head>
  <!-- The four tags the Open Graph spec requires -->
  <meta property="og:title" content="Open Graph protocol explained" />
  <meta property="og:type" content="article" />
  <meta property="og:image" content="https://www.example.com/images/open-graph-card.png" />
  <meta property="og:url" content="https://www.example.com/blog/open-graph" />

  <!-- Optional, and worth having on every page -->
  <meta property="og:description" content="The four required tags, the useful optional ones, and how X cards fit in." />
  <meta property="og:site_name" content="Example" />
  <meta property="og:locale" content="en_US" />
  <meta property="og:image:width" content="1200" />
  <meta property="og:image:height" content="630" />
  <meta property="og:image:alt" content="A link card built from og tags" />
  <meta property="article:published_time" content="2026-10-11T12:00:00Z" />

  <!-- X: one tag of its own. Title, description and image fall back to og -->
  <meta name="twitter:card" content="summary_large_image" />
  <meta name="twitter:site" content="@example" />
</head>

One Next.js catch. Since version 15.2, generateMetadata can be streamed after the page starts to load. For “HTML-limited bots” such as facebookexternalhit, Next.js still puts the metadata in the head[21]. Our Next.js SEO guide shows what that means for AI crawlers.

How to test and refresh a card

Test in two steps. First, see what the page sends, with the Open Graph checker or your browser’s view source. Then ask each platform to fetch the page again, because each one keeps the card it built first.

  • Facebook. The Sharing Debugger “will show which meta tags the crawler scrapes as well as any errors or warnings”, and running it triggers a new scrape. But images “are cached based on the URL and won’t be updated unless the URL changes”[4]. A new image needs a new file name.
  • LinkedIn. Post Inspector refreshes the card for new posts. “The preview for any existing posts with this URL will remain the same”[11]. More in LinkedIn post preview.
  • X. Its archived docs say a card was cached for 7 days after the link was posted[7]. Get the tags right before a launch post, not after.
  • Slack. Fetches are cached for around 30 minutes[13]. Wait, then share the link again.
Myth
Open Graph tags are a Google ranking factor.
What is true
Google documents using og:title, og:site_name and og:image for how results look. We found no Google statement that any of them affects ranking.
Myth
You need a full set of twitter: tags as well as og tags.
What is true
X's docs said it falls back to og:title, og:description, og:image and og:image:alt. The one tag worth adding is twitter:card.
Myth
Schema markup makes Open Graph unnecessary, or the other way round.
What is true
They serve different readers. Social and chat apps read Open Graph; Google's rich results read schema.org. Use both, with the same facts.
Myth
Fixing the tags fixes every card already shared.
What is true
LinkedIn says existing posts keep their old preview, and Facebook caches images by URL. Fixes reach new shares.
Four tags get you a working card. Everything after that is about which title and image each platform picks, and how long it remembers them.
Before you share a page
0/8

Checking a whole site

A checker covers one URL at a time. Across a site, the problems that weaken share cards and search results alike are usually duplicated titles and descriptions, copied from a template. CoreCited’s Site Audit crawls your site, flags pages that share a title or meta description, and checks each page’s JSON-LD. It does not check og tags, so pair it with the free checker for those. The free account audits 10 pages, and every limit is on the pricing page.

Questions people ask

What is the Open Graph protocol?

It is a set of meta tags, such as og:title and og:image, that tells other apps what a page is when its link is shared. Facebook created it in 2010. Social networks and chat apps read the tags to build the link card: the title, image and description you see under a shared link.

What are the required Open Graph tags?

The spec at ogp.me requires four on every page: og:title, og:type, og:image and og:url. Most pages should also have og:description, og:site_name and og:image:alt, plus og:image:width and og:image:height so Facebook can show the image straight away.

What is the difference between Open Graph and a Twitter card?

Open Graph tags start with og: and are read by many platforms. Twitter card tags, now X card tags, start with twitter: and are X's own. X's documentation said it checks its own tags first and falls back to the Open Graph ones, so you rarely need to repeat the title, description or image.

Do I need twitter: tags if I already have og tags?

Usually just one: twitter:card. It has no Open Graph equivalent. X's archived docs say a page with og:type, og:title and og:description but no twitter:card may get a small summary card. Set twitter:card to summary_large_image if you want the wide image.

Do Open Graph tags help SEO?

Google documents using og:title for title links, og:site_name for site names and og:image to pick a page's preferred image. All three shape how a result looks. We found no Google statement that Open Graph is a ranking signal, so treat it as a display input, not a ranking lever.

Is Open Graph the same as schema markup?

No. Open Graph describes the share card for social and chat apps. Schema.org structured data describes the page in detail for search engines, and is what Google uses for rich results. Use both, and keep the title, image and site name the same in each.

Why does the old image still show after I changed og:image?

Platforms cache the card they built first. Facebook caches images by URL, so give the new image a new file name and re-scrape it in the Sharing Debugger. LinkedIn's Post Inspector refreshes the card for new posts only. X's docs said cards were cached for 7 days.

Do AI assistants read Open Graph tags?

Nobody documents it. OpenAI's, Anthropic's and Perplexity's crawler pages do not mention Open Graph or meta tags. Their crawlers fetch your HTML, and the tags are in it, but whether any engine uses them is unknown. Server-render the tags and keep them accurate either way.

Keep reading

Sources

[1]The Open Graph protocol — ogp.me, read 6 October 2026
[2]Facebook's Open Graph: a Clever Advertising Move — MIT Technology Review (Erica Naone), 22 April 2010
[3]Facebook: RDFa in Open Graph Protocol — W3C public-rdfa mailing list (Dan Brickley), 21 April 2010
[4]A Guide to Sharing for Webmasters — Meta for Developers, read 6 October 2026
[5]Best Practices (sharing) — Meta for Developers, read 6 October 2026
[6]Meta Web Crawlers — Meta for Developers, read 6 October 2026
[7]Getting started with Cards — X Developer Platform (archived copy; the live page now redirects), snapshot 1 January 2026
[8]Cards markup — X Developer Platform (archived copy; the live page now redirects), snapshot 16 January 2026
[9]Summary Card with Large Image — X Developer Platform (archived copy; the live page now redirects), snapshot 12 January 2026
[10]Make your website shareable on LinkedIn — LinkedIn Help, read 6 October 2026
[11]Use Post Inspector to refresh URL — LinkedIn Help, read 6 October 2026
[12]Unfurling links in messages — Slack developer docs, read 6 October 2026
[13]Slack Robots — Slack API, read 6 October 2026
[14]TN3156: Create rich previews for Messages — Apple Developer, republished 30 April 2024
[15]About Rich Pins — Pinterest Developers, read 6 October 2026
[16]Influencing title links in Google Search — Google Search Central, updated 10 December 2025
[17]Site names in Google Search — Google Search Central, updated 10 December 2025
[18]Image SEO best practices — Google Search Central, updated 2 March 2026
[19]Get on Discover — Google Search Central, updated 9 March 2026
[20]Intro to how structured data markup works — Google Search Central, updated 10 December 2025
[21]generateMetadata — Next.js docs, updated 25 August 2026
[22]opengraph-image and twitter-image — Next.js docs, updated 9 July 2026
[23]How to add Facebook's Open Graph meta tags — Yoast help center, read 6 October 2026
[24]How to customize your Facebook appearance with Open Graph meta tags — Yoast help center, read 6 October 2026
[25]Overview of OpenAI crawlers — OpenAI, read 6 October 2026
[26]Does Anthropic crawl data from the web, and how can site owners block the crawler? — Anthropic, updated 7 April 2026, read 6 October 2026
[27]Perplexity Crawlers — Perplexity docs, read 6 October 2026
[28]The rise of the AI crawler — Vercel and MERJ (vendor study of Vercel's network), 17 December 2024

Find out where you actually stand

One real question, real AI engines, and the answer they gave — including who was named in it. No account, no card.