Open Graph and Twitter cards: fix your share previews

Contents
  1. Which checks cover social tags?
  2. What is the minimum set of tags?
  3. What goes wrong most often?
  4. How do descriptions fit in?
  5. Key takeaways

When someone pastes your link into a chat or a feed, the app fetches your page and reads a few meta tags. If they are missing, it guesses, and the preview looks bad. findable tests the tags below.

Which checks cover social tags?

Check idWhat it tests
og_titleog:title is present
og_descog:description is present
og_imageog:image is present
og_urlog:url is present
twitter_cardA twitter:card meta is present
og_typeog:type is set
og_site_nameog:site_name is set
og_image_absoluteog:image is an absolute http(s) URL
og_url_matches_canonicalog:url matches the canonical URL

The last two are skipped when there is nothing to compare.

What is the minimum set of tags?

<meta property="og:type" content="article">
<meta property="og:site_name" content="Example Co">
<meta property="og:title" content="How to care for a ceramic mug">
<meta property="og:description" content="Wash, dry and store a hand-made mug so it lasts for years.">
<meta property="og:url" content="https://example.com/care">
<meta property="og:image" content="https://example.com/care-cover.jpg">
<meta name="twitter:card" content="summary_large_image">

Use summary_large_image for a wide picture and summary for a small one.

What goes wrong most often?

  1. A relative image path such as /cover.jpg. Scrapers do not resolve it the way your browser does. Use the full URL.
  2. og:url pointing at a different address than the canonical. Keep them the same. See canonical and duplicate content.
  3. Reusing one image and one description on every page.
  4. Setting the tags in JavaScript. Share scrapers usually do not run it, so put the tags in the served HTML.
  5. Forgetting that a platform cached an old preview.

How do descriptions fit in?

og:description can differ from your meta description, but they should agree. Write the meta description first: meta descriptions.

Key takeaways

FAQ

What is Open Graph?
Open Graph is a set of meta tags that tell chat apps and social networks which title, summary and image to show when someone shares your link.
Do I need both Open Graph and Twitter tags?
Most apps read Open Graph. The twitter:card tag chooses the card layout on X. findable checks that both are present.
Why does my old preview not update?
Platforms cache previews. Fix the tags first, then use the platform's own debugger or sharing tool to refresh the cache.
What image size should I use?
findable only checks that og:image exists and is an absolute URL. A wide image around 1200 by 630 pixels is a common choice, but check each platform's guidance.

How does findable score a page?

FamilyWeightQuestion it asks
SEO50%Can crawlers read and index this page?
AEO25%Is it easy to lift an answer from this page?
GEO25%Does the page give a generative model a reason to cite it?

The hosted audit waits up to 10 s for a page and fetches at most 5 MB. It reads robots.txt and llms.txt up to 512 KB each.

More guides

Every findable AEO Check ID and How to Fix It
All 35 AEO checks in findable explained, from aeo_faq to aeo_summary. See what each id tests, how loose the test is and how to fix it. AEO is 25% of the score.
Canonical Tags and Duplicate Content: How to Get Them Right
Use one canonical link per page that points to its own absolute URL. Learn the checks canonical, canonical_self and canonical_absolute and fix them.
FAQ Schema for Answer Engines: Markup and Checks
How to add FAQPage JSON-LD that answer engines can lift, and how findable tests aeo_faq, aeo_faq_count and faq_valid. Includes a working example.
Get Findable in 15 Minutes: A Step by Step Checklist
Install findable, audit a page and your site, fix the top failures, then add MCP, the web UI, the API and a CI gate. Every step has a copy-paste command.
Every findable GEO Check ID, Plus AI Crawler Checks
All 27 GEO checks in findable explained, plus the unscored Site checks for GPTBot, ClaudeBot and llms.txt. GEO is 25% of the score. Fixes included.
Image Alt Text, Dimensions and Lazy Loading Explained
Fix img_alt, img_dimensions, img_alt_quality, img_lazy_loading and img_modern_format. See what each image check in findable tests and how to pass.
JSON-LD Schema Basics: What findable Checks and Why
Learn what JSON-LD is, which schema.org types findable validates, and how to fix jsonld_valid, jsonld_context and empty or relative values.
llms.txt: What It Is and How findable Checks It
llms.txt is a plain Markdown file at your site root that points AI tools to your key pages. See the llms-txt check and how to write the file.
How to Write a Meta Description That Passes findable
Write a meta description of 120 to 160 characters, one per page, that matches the page. See the checks desc_exists, desc_length and desc_single.
robots.txt and AI Crawlers: GPTBot, ClaudeBot, PerplexityBot
How robots.txt rules decide whether GPTBot, ClaudeBot, PerplexityBot and Google-Extended can fetch your page, and how findable tests each one.
Every findable SEO Check ID and How to Fix It
A plain guide to all 98 SEO checks in findable, from title_length to csp. See what each id tests, when it passes and the fix. SEO is 50% of your score.
SEO vs AEO vs GEO: The Difference in Plain Words
SEO, AEO and GEO each target a different reader: a search crawler, an answer box, or a generative AI model. See what wins in each and how to check them.
Why AI Answer Engines Skip Your Site and How to Fix It
ChatGPT, Perplexity and Claude may ignore your pages for five fixable reasons, from robots.txt blocks to missing answers. Learn each cause and its check id.