OpenGraph for AI-search citation cards
Perplexity, ChatGPT, and Google AI Overviews all build
citation cards around your links — the little source
chip with a thumbnail, title, and one-line description. This is
which og:* tags they actually pull, which they
ignore, and how to make sure your card gets clicked.
Why AI-search cares about OpenGraph
When Perplexity cites your page in an answer, it shows a citation card: a small preview chip with a thumbnail, title, hostname, and sometimes a one-line description. That card is how a user decides whether to click through to your actual page — or scroll past.
The card renderer needs three pieces of data: a headline, a one-sentence hook, and an image. It has three ways to get each:
- OpenGraph tags (
og:title,og:description,og:image) — deterministic, machine-parseable, and the format every card renderer looks at first. - HTML fallbacks (
<title>,<meta name="description">, first<img>). Used when OpenGraph is missing — but the first<img>is often a logo or avatar, which makes for a terrible card. - Model paraphrase. When both above fail, the model generates its own headline and summary from the page body. Slow, expensive, and unpredictable — often skipped.
The difference between path 1 and path 3 is roughly the difference between "gets clicked" and "gets skipped." Every AI-search-visible page should ship complete OpenGraph.
The copy-paste template
Paste inside <head> on every page. Swap in
your own values. Every field is either required or high-signal.
<meta property="og:type" content="article" />
<meta property="og:site_name" content="Acme Corp" />
<meta property="og:title" content="How we cut latency 40% with edge caching" />
<meta property="og:description" content="A postmortem-style walkthrough of the caching-layer redesign and its measured impact on p95 latency." />
<meta property="og:url" content="https://acme.example/blog/edge-caching-latency/" />
<meta property="og:image" content="https://acme.example/og/edge-caching-latency.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Latency graph showing 40% drop after caching-layer rollout" />
<!-- Optional but cheap: Twitter Card fallback -->
<meta name="twitter:card" content="summary_large_image" /> Every field, explained
| Tag | Required? | What AI card renderers use it for |
|---|---|---|
og:image | Critical | Card thumbnail. Single biggest driver of click-through. Absolute HTTPS URL, 1200×630, under 200KB. Missing this and Perplexity often skips your card entirely. |
og:title | Required | Card headline. Overrides the HTML <title>, useful when your <title> is SEO-stuffed (e.g. "Best Widget 2026 — Free Shipping — Acme Corp"). Write it as a clean human headline. |
og:description | Required | Card subtitle / hover preview. One sentence. Written for a human deciding whether to click. Different from your meta description (which is for search-result snippets). |
og:type | Recommended | article for blog posts and docs, website for hubs and landing pages, product for shop pages. Affects card layout — some renderers show a byline for article cards, none show one for website. |
og:site_name | Recommended | Brand anchor. Especially important on subdomain-heavy sites (blog.acme.com, docs.acme.com) where the hostname alone doesn't identify the brand. |
og:url | Recommended | Canonical URL for de-duplication. Matches the served URL exactly (trailing slash, casing). AI parsers use this to detect duplicate content across query-string variants. |
og:image:width / og:image:height | Optional | Lets renderers reserve card layout space before the image loads. Small perceived-perf win, no correctness impact. |
og:image:alt | Recommended | Accessibility text. AI parsers use it as the image caption when generating audio-first answers (voice assistants pulling from Google AI Overviews). |
What each AI answer engine actually pulls
| Engine | Card thumbnail | Card headline | Card subtitle |
|---|---|---|---|
| Perplexity | og:image → JSON-LD image → first <img> | og:title → <title> | og:description → model paraphrase |
| ChatGPT (browsing) | og:image → favicon | og:title → <title> | og:description → meta description → model paraphrase |
| Google AI Overviews | og:image → schema.org image | <title> → og:title | Model paraphrase (rarely uses og:description) |
| Claude (with tools) | Typically no thumbnail (text-only cards) | og:title → <title> | og:description → model paraphrase |
Bottom line: the same five tags —
og:image, og:title,
og:description, og:type,
og:site_name — cover the essential rendering path
for every citation card that matters today.
Verify it's actually parsed
- View source, find the tags. Open the page,
view source, search for
og:. Confirm every required tag is present and has a non-empty content attribute. Missing content attributes silently break parsing. - Run the official OpenGraph debugger. opengraph.dev — paste your URL, see exactly what a card renderer receives. Flags missing tags, oversized images, unreachable image URLs.
- Curl as PerplexityBot.
curl -A "PerplexityBot" https://yourdomain.com/some-page/ | grep 'og:'— proves the tags are server-rendered, not injected by JS after page load. Client-side hydration breaks AI-crawler previews. - Check the og:image resolves.
curl -I <og:image URL>must return200,content-type: image/pngorimage/jpeg, andcontent-lengthunder 200KB. 404s or WebP-in-jpeg-headers silently break every card. - Run the free AICite audit. It flags missing
OpenGraph tags, unreachable
og:image, and mismatchedog:urlas part of the 13-signal AI-search grade.
The 5 mistakes that silently break AI citation cards
- Relative
og:imageURLs. Every AI parser expects an absolute HTTPS URL. Relative URLs like/og.pngeither fail outright or resolve against the wrong base URL. Alwayshttps://yourdomain.com/og.png. - Injecting OpenGraph via JavaScript. React /
Vue single-page apps that set
document.headtags on route change are invisible to server-side card renderers. Server-side render (Next.js, Astro, Nuxt) or pre-render every page's<head>. - Single global
og:image. Shipping the same generic company logo as the card thumbnail for every page cuts click-through roughly in half compared to per-page dynamic OG images. Even a simple template with the page title over a brand-coloured background beats one static logo. - Oversized og:image. Over 5MB and most card renderers time out and skip the thumbnail. Over 200KB and Perplexity's card sometimes falls back to the favicon. Target under 200KB — quality 80 JPEG or optimised PNG.
- Mismatched
og:url. Settingog:urlto the non-trailing-slash version when your server redirects to trailing-slash (or vice versa) makes card renderers fetch the wrong URL. Match your served canonical URL exactly.
Check your site now
FAQ
Do I need per-page OG images or is one homepage image enough?
Per-page. The whole point of the citation card is to identify this specific page at a glance. One template with the page title text-overlaid on a brand background is a 30-minute build (or a 10-minute Cloudflare Workers dynamic OG image) and reliably lifts card click-through. A single logo used for every page is the most common OpenGraph mistake we see in audits.
What image format should I use for og:image?
PNG or JPEG. Not WebP or AVIF — Perplexity's and ChatGPT's card renderers still occasionally fail on modern formats. JPEG for photos, PNG for text-heavy template overlays. 1200×630, under 200KB, absolute HTTPS URL.
Does og:description replace meta description?
No. Different consumers. <meta name="description">
feeds classic Google search result snippets. og:description
feeds social and AI citation cards. Ship both. They can be
identical if you're constrained on time, but the ideal is
two versions: one written for search snippets (keyword-rich)
and one for cards (hook-y and human).
Does OpenGraph affect Google search ranking?
Not directly. Google uses OpenGraph for social-share previews and AI Overview source cards, not as a classical ranking signal. But card click-through in AI Overviews increasingly drives the traffic that used to come from position 1 — so skipping OG is effectively skipping the modern "top result."
Do OpenGraph tags work for images shared inside AI-generated PDFs / summaries?
Partially. When Perplexity or ChatGPT includes a citation
link in a longer-form answer that a user then exports (to
PDF, to email), the citation card is rendered once from
OpenGraph at generation time. If your og:image
URL later 404s, the exported PDF still shows the cached
thumbnail — but the live link in a browser will show a
broken card. Keep og:image URLs stable.
OpenGraph is the fourth of the four "files LLMs read" —
llms.txt, robots.txt,
sitemap.xml, and OG meta tags. Ship all four
correctly and you've covered the vast majority of the AI-search
readiness surface area. For the full 13-signal fix pack, see
the AICite Pro Report ($24, 30 seconds).