Free tool

Link preview checker

Paste a link and see the card Slack, X, LinkedIn and Facebook will build from it — before you post it somewhere you cannot edit. Every problem with the tags is listed underneath, including the image ones you only find out about after publishing.

Reads the page's Open Graph and Twitter card tags. Usually under a second.

How it decides what each platform shows

Every platform falls back differently when a tag is missing, and that is where cards go wrong. The rules used here are the documented ones: the title comes from og:title, then twitter:title, then the <title> element. The description comes from og:description, then twitter:description, then the meta description. The image comes from og:image, then twitter:image — and if neither exists, there is no card image at all, which is what the grey panels above are telling you.

The tags are read by one endpoint that fetches the page and returns its <title> plus every meta element in the head. The image is then loaded by your own browser, which is the only way to measure it — those dimensions never touch a server. Built with the Hyperlambda Generator, and callable by your own agents over MCP. Run the platform yourself:

curl -fsSL https://hyperlambda.dev/docker-compose.yaml | docker compose -f - up

The whole backend, printed

No preview service, no scraping API. This page calls one endpoint, and this is that endpoint in full — generated from a plain-English description and verified before it was saved:

.arguments
   url:string
validators.mandatory:x:@.arguments/*/url
http.get:x:@.arguments/*/url
html2lambda:x:@http.get/*/content
.meta
for-each:x:"@html2lambda/*/html/*/head/*/meta/*/\\@content/."
   .name
   if
      exists:x:"@.dp/#/*/\\@property"
      .lambda
         set-value:x:@.name
            get-value:x:"@.dp/#/*/\\@property"
   else
      set-value:x:@.name
         get-value:x:"@.dp/#/*/\\@name"
   unwrap:x:+/*/*/*
   add:x:@.meta
      .
         .
            name:x:@.name
            content:x:"@.dp/#/*/\\@content"
yield
   title:x:@html2lambda/*/html/*/head/*/title/*/#text
   meta:x:@.meta/*

The property-before-name rule is the whole trick: Open Graph tags use property, Twitter and the classics use name, and a reader that only looks at one of them misses half the card. Describe an endpoint in a sentence, and the Hyperlambda Generator writes and deploys it — then it is a tool your own agents can call over MCP.

More free tools

Checking a link’s preview card is one of nine free tools here, each with the handful of backend lines that powers it printed on the page. See all of them — no signup on any of it.

Questions

Why does my card still look wrong after I fixed the tags?

Because every platform caches what it scraped the first time, often for days. This tool always reads the page live, so it shows the truth — but Slack, X, LinkedIn and Facebook will keep serving their cached copy until it expires or you push them to re-scrape with their own debugging tools.

What image size should I use?

1200 by 630 is the safe answer: it is the 1.91:1 ratio the large card formats expect, and it is comfortably above every platform's minimum. Below 200 pixels on a side, some platforms drop the image entirely and fall back to a small card with no picture.

Why does it say no tags found on a site I know has them?

Some sites refuse requests that do not look like a browser, and return an empty page or an error instead. The real social crawlers get the same treatment surprisingly often, which is itself worth knowing — if this tool cannot read your tags, there is a decent chance a scraper cannot either.

Does it check the image really loads?

Yes. Your browser fetches the image from wherever the tag points, so a URL that is relative, broken, behind authentication or blocked by hotlink protection fails here the same way it will fail for everyone else.