What a platform actually reads
When a link is pasted into Slack, LinkedIn, X or iMessage, that platform fetches the page and builds a card from its meta tags. It never runs your JavaScript and never sees your CSS - it reads the tags in the head and nothing else.
The fallback chain
Most platforms resolve in the same order, and this preview follows it:
- Title -
twitter:title, thenog:title, then<title> - Description -
twitter:description, thenog:description, then the meta description - Image -
twitter:image, thenog:image, then nothing
Which is why duplicating every Open Graph tag as a Twitter tag is usually wasted work. The one genuinely worth setting separately is twitter:card, because it decides between the large image and the small thumbnail.
The three failures that account for most broken cards
- A relative og:image. The crawler has no page context to resolve it against. Absolute HTTPS URL or nothing.
- An unreachable image. Behind auth, blocked in robots.txt, or served from a host that refuses unknown user agents.
- Aggressive caching. You fixed the tags and the old card persists for days. Facebook Sharing Debugger and LinkedIn Post Inspector force a re-scrape; X's cache just has to expire.
Not an SEO feature
None of these tags are ranking factors. They decide whether a link looks worth clicking when someone shares it - and a link that renders as a grey box with a bare URL gets shared, and clicked, measurably less.
To write the tags in the first place, use the meta tag generator instead.