Social Card Preview
See which card tags a published page actually serves, and which one each platform will use.
What this tool does
Social Card Preview takes the address of a published page, sends it to the OmniKitly processing service over an encrypted connection, and the service requests that page as an anonymous visitor. Out of the HTML that comes back it reads seven Twitter card tags — twitter:card, twitter:title, twitter:description, twitter:image, twitter:image:alt, twitter:site and twitter:creator — beside five Open Graph ones: og:title, og:description, og:image, og:url and og:site_name. Above that table sit three schematic cards, one each for X, LinkedIn and Slack, filled with the title, description and host the page would hand them.
The two tag namespaces are read by different places, which is why a link can unfurl properly in one app and arrive as a bare URL in the next. Each value is taken from the first tag that exists — twitter:title, then og:title, then the title element — so you see which fallback a platform lands on and not merely which tag is absent. The findings call out a twitter:card value outside summary, summary_large_image, app and player; a player card with no twitter:player; a card title past 70 characters or a description past 200; a twitter:site or twitter:creator that is not a valid @handle; a relative image path, with the absolute form worked out for you; and a page carrying no Open Graph tags at all.
What comes back is a reading of the markup, not a picture of the card. The image is named and never requested, so a URL that returns 404, a file too small for the wide layout, or one that crops badly all pass without comment. Only the first tag of each name is counted, which means a second og:image on the same page goes unmentioned, and og values written as name= rather than property= are accepted here without the objection the Open Graph report would raise. Nothing is executed either, so tags a single-page app writes after load read as missing.
The fetch is anonymous over http or https. It carries OmniKitly's own user agent, no cookies and no credentials, follows at most five redirects with every hop re-checked, stops after 512 KB, parses only as far as the closing head tag, and refuses private addresses, localhost and .local, .internal, .home or .lan hostnames. The URL you entered, the meta.json it produced and the job record are deleted together once the retention window passes — hours, not days.
How to use it
- Enter the page URL. The published address, http or https. The hostname is resolved before anything connects, and an address carrying a username and password is turned away.
- Set Page URL if an image path is relative. The one setting here. Left empty, the address the fetch finished on is used to resolve a relative twitter:image or og:image.
- Run the check. The URL travels to the processing service over an encrypted connection, and the page is requested with OmniKitly's own user agent and no cookies — so you see what an unauthenticated crawler sees.
- Read the cards, then the findings. Three schematic previews, the tag table, then the errors, warnings and notes. The raw fetch behind it — HTTP status, canonical, robots and the URL the redirects ended on — downloads as meta.json.
- Re-run after you deploy, then clear the platform's cache. A tag change does not reach an existing post. X's card validator, LinkedIn's post inspector and a fresh share in Slack each force a re-scrape.
Processing & privacy
Secure server processing. This operation requires temporary server processing.
Common use cases
Checking a link before you post it
One fetch says whether the card tags are on the live URL, rather than finding out from the preview in the composer.
A share preview showing the wrong title
The report shows which of twitter:title, og:title and the title element is actually present, so you know which one the platform fell back to.
Links that travel through a redirect
Campaign and shortened URLs land somewhere else. Up to five hops are followed and the tags are read from the page you end on, with that address named in meta.json.
Auditing one page per template
Run an article, a product and a listing URL. A template where og:image was never filled in shows as missing rather than inherited.
Questions
Does OmniKitly fetch the page rather than my browser?
It says my tags are missing, but I can see them in the browser
Does it render the card as an image?
I fixed the tags and the old preview still shows
Can I check a staging site or a page behind a login?
What is the difference between summary and summary_large_image?
The box says page HTML is accepted, and Load sample fills it with markup
Related tools
- Meta Tag Preview — See how your title and description look in search results.
- Redirect Checker — Follow a redirect chain and see every hop.
- WCAG Contrast Checker — Test colour pairs against AA and AAA thresholds.
- Favicon Generator — Generate a full favicon set from one source image.
- Open Graph Preview — Preview how a link unfurls on social platforms.
- Robots.txt Generator — Build a robots.txt with sensible defaults.