Social share preview
Write to this and nothing is cut on Facebook, LinkedIn, Slack, Discord or X.
Rendered in your browser · nothing is uploaded
A single link card checked against the tightest limits across Facebook, LinkedIn, X, Slack and Discord: about 70 characters of title and 158 of description, on a 1200 × 630 image. Fit those and nothing is cut anywhere, whichever platform someone pastes the URL into. Seven surfaces are selectable in the panel: that link card, Open Graph as Facebook renders it, an X summary_large_image, a Google responsive search ad at 30 characters of headline and 90 of description, a Facebook ad at 40 and 125, an Instagram post, and the 3:4 profile grid tile. The card, the image shape and the character counter all follow whichever one is chosen, so a headline can be measured against 30 and then against 70 without leaving the page or holding two numbers in your head.
How to use the social share preview
Writing to the tightest limit rather than to each platform separately is the practical approach, because the tags are shared: you set one og:title and every platform truncates it its own way. Facebook shows around 88 characters of title, LinkedIn rather less, Slack shows more description than either, and X drops the description entirely on several surfaces and lays the title over the image. Fitting the shortest means nothing is cut anywhere. The other half of the job is the image, and the constraint there is that the platforms crop differently: 1.91:1 on Facebook and LinkedIn, closer to square in some chat apps, so a design whose text runs to the edges loses it somewhere. A centred composition inside a 1200 × 630 image survives all of them. Three failures are worth more attention than truncation, because they turn a rich card into a bare link. A relative og:image URL fails silently, since scrapers do not resolve it. A single-page app that sets its tags with JavaScript usually gets nothing, because most scrapers do not run scripts. And Facebook caches what it fetched, so a corrected tag does not change the preview until the URL is re-scraped in their Sharing Debugger, or LinkedIn’s Post Inspector for that side. Copy is cut on paid and native surfaces too, and the numbers there are tighter than the link card’s: an Instagram caption folds at about 125 characters behind "more", a Facebook ad hides everything past 125 behind "See more", and a Google responsive search ad is rejected outright above 30 characters of headline or 90 of description. Each of those is a surface in the picker at the top of the panel, so switching to one moves the counter to its limits and redraws the card at its shape. What you have typed stays put across the switch, which is the point: one headline, measured against every limit that will cut it.
What people use it for
- Checking the Open Graph card Facebook, Slack and Discord will build
- Checking an X summary_large_image card before posting the link
- Working out which tags produce a link preview at all
- Trimming a title that fits Facebook but is cut on LinkedIn
- Diagnosing a link that pastes as a bare URL with no image
- Writing a responsive search ad headline against the 30-character limit
- Getting a Facebook ad hook in front of the 125-character "See more" fold
- Writing ad copy to the tightest limits so it runs anywhere without a rewrite
- Checking where an Instagram caption is cut at 125 characters
- Seeing what the centred 3:4 profile grid crop takes off the sides of a portrait post
Questions
The tightest: about 70 characters of title and 158 of description. Then nothing is cut anywhere.
og:title, og:description, og:image and og:url, in the head of the page being linked to. X falls back to these when the twitter: tags are absent.
Facebook caches Open Graph data. Re-scrape the URL in their Sharing Debugger; LinkedIn has a Post Inspector that does the same.
Usually a relative og:image URL, which scrapers do not resolve. It has to be absolute. Facebook’s Sharing Debugger is the closest thing to a general link preview tester: it reports what it actually fetched, which is normally enough to find the fault.
1200 × 630. Keep the important part in a centred square, since some chat apps crop toward square.
Facebook and LinkedIn use 1.91:1; some chat apps crop toward square. Keep the important part centred.
No. The platform scrapes the destination, so the tags have to come from there.
Most scrapers do not run JavaScript. The tags have to be in the server-rendered HTML.
The scraper cannot reach it. Anything behind a login or blocked in robots.txt gets no preview.
Not usually. X falls back to Open Graph, though setting twitter:card to summary_large_image explicitly is worth doing. X retired its own card validator, so the remaining way to test one is to paste the link into a draft post and look at it.
X drops it on several surfaces and shows the image with the title over it, so the image carries the card.
The small card puts a square thumbnail beside the text; the large one runs the image full width with the title over it and takes several times the space in a timeline. Set twitter:card to summary_large_image unless you have a reason not to.
No, and it cannot be. Platforms cut by rendered pixel width, so a title in capitals or wide letters cuts earlier than a character count suggests. Treat the limit as a guide and leave a few characters of margin.
About 125 characters before "more". Line breaks count against that, and hashtags at the top consume it entirely.
Yes, to a centred 3:4 tile, which it has been since January 2025 rather than a square. A 4:5 portrait gives up about three percent off each side there; a square is the shape that now loses 12.5.
Thirty per headline and ninety per description. Over either and the ad is rejected at upload rather than truncated.
About 125 characters of primary text on most placements, and 40 characters of headline before it truncates.