X documents a 7-day card cache; LinkedIn says allow 48 hours, or use its Post Inspector to refresh the
preview for new posts. First fix the tags and image in the page's <head>: refreshing a cache won't fix a missing
og:image, a blocked crawler or the wrong twitter:card type.
Checked on October 27, 2026.
What each network reads
| Card part | X reads | LinkedIn reads |
|---|---|---|
| Card type | twitter:card: summary_large_image or summary |
No card type |
| Title | twitter:title, else og:title |
og:title |
| Description | twitter:description, else og:description |
og:description |
| Image | twitter:image, else og:image |
og:image |
| Image description | twitter:image:alt, else og:image:alt |
Not documented |
| Page address | Not documented | og:url |
| Site attribution | twitter:site or twitter:site:id |
No equivalent in LinkedIn's list |
X's Cards markup reference
lists each twitter: tag beside the Open Graph tag it falls back to, and its
getting started guide
says X looks for the Twitter tag first, then the Open Graph one. So the og: title, description and image can serve
both networks; add a twitter: version where X should show something different. X's reference caps the title at 70
characters, the description at 200 and the image description at 420. Its own tags also cover:
- The card type.
twitter:cardhas no Open Graph equivalent. Without it, X's reference says a smallsummarycard may be drawn fromog:type,og:titleandog:description. For the wide image card, settwitter:cardtosummary_large_image. If a page has more than onetwitter:card, X uses the last. - Site attribution. The markup reference requires either
twitter:site(the site's X handle) ortwitter:site:id(its numeric X account ID); neither has an Open Graph fallback. - Name or property. X's examples use
name=; Open Graph uses"twitter:…" property=. X's guide says its parser falls back to"og:…" property, so existing Open Graph markup needs no change.
LinkedIn's shareable-website help lists four og: tags that
must exist: og:title, og:image, og:description and og:url. Its
URL troubleshooting help
says the share box relies on oEmbed and Open Graph, and without them may pull other content from the page. Neither
page mentions twitter: tags, so don't count on them for LinkedIn.
A shared head for LinkedIn and X's large-image card (replace the example handle with the site's own):
<title>How we cut our export time in half</title>
<meta property="og:title" content="How we cut our export time in half">
<meta property="og:description" content="Three changes, measured on real exports.">
<meta property="og:image" content="https://example.com/cards/export.jpg">
<meta property="og:image:alt" content="Export time falling from 40 to 18 seconds">
<meta property="og:url" content="https://example.com/blog/export-time">
<meta property="og:type" content="article">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@example">
Put the tags in the <head>, give each one once, and use a full https:/ address for the image. Tags a script adds
after the page loads may never be seen: neither network's documentation says its crawler runs scripts, and Flaghand's
reader doesn't.
What X draws today
Measured on x.com on October 26, 2026. X's documentation doesn't describe today's layout, and it can change.
- The large card (
summary_large_image): the image across the post at 1.91:1, 516 × 270 px on desktop, the title on one line in a dark label over its lower left corner, and "From example.com" under it. It shows no description. - The small card (
summary): X documents a square image crop. A large-card tag is not enough on its own: the page and image must also be reachable and meet X's requirements below.
X's guide adds that a post shows one card at most, that attached photos or video take its place, and that with several links the first one with a card is used.
What LinkedIn draws today
Measured on linkedin.com on October 26, 2026: a link in a feed post shows a 16:9 thumbnail, 128 × 72 px, beside the
title on up to two lines and the domain. LinkedIn's help doesn't say what it shows without og:title beyond "other
content from the page", so set it.
Image sizes, and what each card cuts
| X large card | X small card | ||
|---|---|---|---|
| Shape X or LinkedIn documents | 2:1 | 1:1 | 1.91:1, recommended |
| Smallest documented | 300 × 157 | 144 × 144 | 1200 × 627 |
| Largest documented | 4096 × 4096, under 5 MB | 4096 × 4096, under 5 MB | 5 MB |
| Drawn at (measured) | 516 × 270, 1.91:1 | Square crop (documented) | 128 × 72, 16:9 |
| A 1200 × 630 image | Shown whole | Cut 24% from each side | Cut 3% from each side |
X's large-card page and small-card page take JPG, PNG, WebP and GIF (only an animated GIF's first frame), not SVG, and ask for an image unique to the page rather than a site logo or author photo used across many pages. LinkedIn's sharing help gives the size and weight; its list of file types (JPG, PNG or GIF) is for single image ads, so a JPG or PNG is the safe choice for both networks.
A 1200 × 630 JPG or PNG works for both: X's large card shows all of it and LinkedIn's thumbnail trims only the sides. Keep words and faces away from the left and right edges, and don't depend on small text, since LinkedIn draws the whole image 128 px wide. The free image size checker shows how post photos and profile images crop.
Why the card doesn't show
X's archived troubleshooting guide names these causes:
robots.txt blocks X's crawler, Twitterbot. A blocked page shows no card; a blocked image shows no picture. To let X in while keeping other crawlers out, its guide's example starts with:
User-agent: Twitterbot Disallow:The server, host or firewall blocks it. X's guide mentions
.htaccessdeny rules and hosts blocking its addresses; bot protection that turns away unknown crawlers can do the same.The image can't be fetched: on a private or staging address, over the 5 MB X's crawler downloads, or smaller than the card's minimum.
The page is too large or its TLS too old: X's crawler reads up to 2 MB of the page and needs TLS 1.1 or later.
On LinkedIn, its help says a missing og: tag lets it pull other content; an image that meets the requirements but
still doesn't appear may mean the site blocks LinkedIn from pulling it or the image sits in a protected folder; an
address with spaces in it can't be shared at all; and for a company page, a "cannot display preview" error
may come from the landing page's SSL certificate.
Why the old card is still there, and how to refresh it
X: about seven days, with no guaranteed purge
X's archived getting started guide says a card is cached for 7 days after a link to the page is posted, and its troubleshooting guide says X re-reads the page's card tags roughly every seven days. That is a documented interval, not a promise that every card updates on the seventh day. The archived refresh workaround is also qualified:
- Fix the tags and check the page's HTML source. Confirm that both the page and image can be fetched without signing in.
- For a new post, the troubleshooting guide suggests making a new shortened URL with bit.ly and sharing that. It says
this may refresh the card; it is not a guaranteed purge. Its
?example is a way to generate another shortened URL, not a documented refresh button for the original address.x= test1 - If the image file changed but its address didn't, change the image's address in the tag too, for example
export: X caches images by their address. Make sure that address really serves the updated image..jpg? v= 2
X's documentation doesn't promise an immediate refresh of posts already published.
LinkedIn: 48 hours, or Post Inspector
LinkedIn's troubleshooting help says to allow 48 hours from the last time the address was shared before trying again, and that a developer who changed a site's tags should wait 48 hours for them to take effect. To refresh it sooner:
- Open LinkedIn's Post Inspector.
- Paste the exact address you plan to share.
- Inspect it and confirm that the new title, description and image are right.
LinkedIn's Post Inspector help says this changes the preview only for new posts with the link: posts already published keep the one they have.
When Flaghand posts the link
The two networks work differently, so Flaghand handles their link cards differently too.
LinkedIn. LinkedIn's Posts API doesn't read link previews for posts made through it: the app must send the card's thumbnail, title and description. So when you paste a link into a LinkedIn draft, or an agent creates a link card, Flaghand reads the page's head once:
- the title from
og:title, thentwitter:title, then the page's<title>, then the address itself; - the description from
og:description, thentwitter:description, thendescription; - the image from
og:image:secure_url,og:image,og:image:url,twitter:image, thentwitter:image:src, saved to your workspace if it's a JPEG, PNG, WebP or GIF. Otherwise the card has no image, with a warning, and you can upload one.
It reads only the <head>, keeps the first copy of each tag and runs no scripts. It can't read LinkedIn's own pages or
private network addresses. The card is saved with the draft and is part of what the owner approves with their passkey:
neither approval nor posting reads the page again. So LinkedIn's 48-hour cache and Post Inspector don't change a post
Flaghand makes, and neither does a tag you fix later. Remove the link and paste it again to read the page afresh (an
agent creates a new link card and puts it in the draft). An edit voids any earlier approval, so request approval again.
Because Flaghand falls back to twitter: tags, a page with only those can get a full card in Flaghand but not in
LinkedIn's own share box, which its help ties to oEmbed and Open Graph: give the page og: tags.
X. Flaghand posts the text with the link and sends X no card. X draws the card from the page when the post goes live, through its own cache. Check the page's tags and image before you request approval; a Flaghand preview can't purge X's cache or guarantee the card X will draw.
Flaghand's draft and media documentation covers link cards from the API, CLI and MCP. An agent drafts, checks and requests approval; only the owner approves, with their passkey in the desk. No agent token can approve, schedule or post.
Sources
- X's Cards documentation (archived):
markup reference
(each tag, its Open Graph fallback, title, description and alt lengths, image types),
getting started
(card types, the last
twitter:cardwins,propertyfallback, robots.txt, the 7-day cache, one card per post), summary card with large image and summary card (shapes, minimum and maximum sizes, 5 MB), and troubleshooting (crawler blocks, 2 MB pages, TLS, the seven-day re-read, the shortened-URL workaround and changing an image address). - LinkedIn Help: make your website shareable (the four
required
og:tags, 1200 × 627, 1.91:1, 5 MB), troubleshoot shared URLs (oEmbed and Open Graph, spaces, the 48-hour cache), use Post Inspector to refresh a URL (new posts only) and troubleshoot Page posts (the SSL certificate). - LinkedIn's Posts API (no link scraping for posts made through the API).
- Flaghand's measurements of x.com and linkedin.com, October 26, 2026, used by its post previewers: the large X card and LinkedIn thumbnail sizes, layouts and crops. Neither network publishes these, and either can change them.
- Flaghand's
scheduler/: which tags its LinkedIn cards read, in what order, and when.src/ link-cards .js