Open Graph vs Twitter Card tags: do you need both?
In the Twitter Card vs Open Graph question, the short answer is: you need Open Graph tags, plus one Twitter Card tag. X (formerly Twitter) reads og:title, og:description and og:image when its own twitter: versions are missing, so you don't have to repeat them. What X can't take from Open Graph is the card type, so add <meta name="twitter:card" content="summary_large_image"> to get the big image card. Add other twitter: tags only when you want X to show something different.
What each set of tags does
Open Graph is a set of og: meta tags that Facebook introduced. It has become the common standard for link previews, read by Facebook, LinkedIn, WhatsApp, Slack, Discord and many other apps.
Twitter Cards are X's own tags, starting with twitter:. They do the same job on X, and add a few X-only settings such as the card type and your X username.
| Open Graph | Twitter Cards | |
|---|---|---|
| Tag prefix | og: |
twitter: |
| Attribute | property="og:title" |
name="twitter:title" |
| Read by | Facebook, LinkedIn, WhatsApp, Slack, Discord and most apps | X, and some other apps as a fallback |
| Card type | no equivalent | twitter:card (summary, summary_large_image, app, player) |
| Needed on X? | yes, as the fallback for title, description and image | only twitter:card is really needed |
How X falls back to Open Graph
X's card documentation describes the order: when X looks for a tag, it first checks for the Twitter-specific one, and if it isn't there, it uses the matching Open Graph tag. In practice:
| X looks for | If missing, X uses |
|---|---|
twitter:title |
og:title |
twitter:description |
og:description |
twitter:image |
og:image |
twitter:card |
nothing; set it yourself |
twitter:site (your @username) |
nothing; optional |
X also says its parser accepts property= on twitter: tags, so a slip there won't break anything. The documented form is name= for twitter: tags and property= for og: tags.
Twitter Card vs Open Graph: the tags you actually need
For most pages, this is a complete and tidy set:
<meta property="og:type" content="article">
<meta property="og:url" content="https://example.com/blog/my-post">
<meta property="og:site_name" content="Example">
<meta property="og:title" content="My post title">
<meta property="og:description" content="One or two sentences about the page.">
<meta property="og:image" content="https://example.com/images/my-post-1200x630.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="What the image shows">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@yourbrand">
That's nine Open Graph lines and two X lines. twitter:site is optional; leave it out if you don't use X.
Our Meta Tag Generator writes this set from a short form, so you don't have to type it.
When adding more twitter: tags makes sense
Add twitter:title, twitter:description or twitter:image only when you want X to show something different from the other apps:
- A different image. The large card on X is shown at about 2:1, slightly wider than the 1.91:1 used by Facebook and LinkedIn. If your image has text near the top or bottom edge, a separate 2:1
twitter:imageavoids the trim. (One 1200 × 630 image with the important part in the centre usually does the job; see the right og:image size.) - Different wording. Shorter text for X's audience, for example.
- Alt text on X. X documents its own
twitter:image:alttag for describing the image.
If you add them, keep them updated. Old twitter: tags left behind after a redesign are a common reason why X shows a different picture from Facebook.
Choosing summary or summary_large_image
| Card type | What it looks like | Image rules (from X's card docs) |
|---|---|---|
summary |
small square image beside the title | 1:1, at least 144 × 144 px, under 5 MB |
summary_large_image |
big image above or behind the title | 2:1, at least 300 × 157 px, under 5 MB |
For blog posts, product pages and landing pages, summary_large_image gets the most attention. summary suits pages where a logo or icon is the only image you have.
Common mistakes
- No
twitter:cardat all. X may show only a small card, or none. One line fixes it. - Only
twitter:tags, no Open Graph. X will be fine, but Facebook, LinkedIn and WhatsApp won't find an image. Always haveog:image. og:tags written withname=. The Open Graph standard usesproperty=, and some apps ignoreog:tags written withname=.- Duplicate tags from two plugins. If your theme and an SEO plugin both output tags, you can end up with two titles or two images. Keep one source.
- Tags added by JavaScript. Social apps read the server's HTML and don't run scripts.
How to check your tags
X no longer shows card previews in its old Card Validator, so it's harder to test before posting. Enter your page address in our Open Graph Preview instead. It shows the X card next to Facebook, WhatsApp, LinkedIn, Slack and Discord, tells you when twitter:card is missing or invalid, notes when X will show only the small card, and flags a twitter:title over about 70 characters or a twitter:description over 200. It also lists every og: and twitter: tag it found and gives you a recommended tag block to copy.
For your other meta tags (title, description, canonical, robots), run the page through our Meta Tag Checker. And if you want rich results in Google rather than nicer social cards, that's a job for structured data: our Schema Generator builds it.
X caches card data, and its documentation says this lasts about a week, so changes may take time to appear on links that were already posted. For Facebook and LinkedIn you can force a refresh; see how to make Facebook refresh an old preview.
Quick checklist
- Full Open Graph set:
og:title,og:description,og:image,og:url twitter:cardset tosummary_large_imageog:tags useproperty=,twitter:tags usename=- Extra
twitter:tags only when X should differ, and kept up to date - One source of tags, rendered on the server
Frequently asked questions
Does X use Open Graph tags?
Yes. X looks for its own twitter: tags first, and uses og:title, og:description and og:image when they are missing.
What happens if I leave out twitter:card?
twitter:card is the tag that tells X which card to show, and it has no Open Graph equivalent. Without it you may get only a small card or none, so set it to summary_large_image.
Should twitter: tags use name or property?
X's tags are written with name=, while Open Graph uses property=. X's parser also accepts property=, but name= is the documented form.
Do Open Graph or Twitter Card tags help Google rankings?
No. They control how links look when shared on social apps. For search results, structured data such as schema.org markup is what adds rich results.
Tools in this guide
#open graph#twitter card#x#meta tags
Related guides
All →Why WhatsApp link previews show no image, and the fix
WhatsApp link preview not showing image? See the usual causes (missing og:image, a heavy file, a relative URL, a blocked bot) and how to fix…
12 Nov 20265 min readWhy LinkedIn shows no preview for your link
LinkedIn post preview not showing? Learn which og: tags LinkedIn needs, its image size rules, why it may be blocked, and how Post Inspector…
12 Nov 20265 min readWhy Facebook shows the wrong image when you share a link
Facebook share wrong image? Learn why Facebook picks the wrong picture or an old one for your link, and how to fix your og:image tag and…
12 Nov 20265 min read