Open Graph and Twitter cards: fix your share previews
Contents
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 id | What it tests |
|---|---|
og_title | og:title is present |
og_desc | og:description is present |
og_image | og:image is present |
og_url | og:url is present |
twitter_card | A twitter:card meta is present |
og_type | og:type is set |
og_site_name | og:site_name is set |
og_image_absolute | og:image is an absolute http(s) URL |
og_url_matches_canonical | og: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?
- A relative image path such as
/cover.jpg. Scrapers do not resolve it the way your browser does. Use the full URL. og:urlpointing at a different address than the canonical. Keep them the same. See canonical and duplicate content.- Reusing one image and one description on every page.
- Setting the tags in JavaScript. Share scrapers usually do not run it, so put the tags in the served HTML.
- 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
- Put the five core tags plus
og:typeandog:site_namein the served HTML. - Make
og:imagean absolute URL. - Make
og:urlequal to the canonical. - Refresh the platform cache after you fix things.
- The full SEO list is in every SEO check.
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?
| Family | Weight | Question it asks |
|---|---|---|
| SEO | 50% | Can crawlers read and index this page? |
| AEO | 25% | Is it easy to lift an answer from this page? |
| GEO | 25% | 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.