Free tool
OG and meta tag checker
Paste a URL. You get the card as it will actually render on X, LinkedIn, Slack and Discord, a pass or fail on every tag that matters, and the corrected markup to paste back into your head.
In good shape
Checked coolify.io
13 pass, 2 worth a look, 0 to fix
Fetched in 572 ms with a browser User-Agent. The card image is 1024 by 512.
https://applauncher.dev/tools/og-meta-checker/?url=https%3A%2F%2Fcoolify.io%2F
Open it again after you ship the fixes and the report reruns against the live page.
Previews
How the link renders
Drawn from the tags we just read, with each network's own truncation applied. If a card looks wrong here, it looks wrong there.
coolify.io
Coolify
Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open...
Coolify
coolify.io
LinkedIn drops the description entirely, so the title has to carry the click.
Coolify
Coolify
Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku.
Coolify
Coolify
Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku.
Search result
What Google shows, and whether the page can be indexed at all.
-
Title tag Check
Coolify
7 characters. Under 30 leaves room on the table: say what the product does, not just its name.
<title>Coolify - what it does in four words</title> -
Meta description Pass
Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku.
129 characters, inside the 70 to 160 range.
-
Canonical link Pass
https://coolify.io/
Absolute and self-referencing.
-
Robots meta Pass
No robots meta, which means indexable by default. Adding max-image-preview:large gets you a bigger thumbnail.
<meta name="robots" content="index, follow, max-image-preview:large" />
Open Graph
Read by LinkedIn, Slack, Discord, Facebook, WhatsApp and almost everything else.
-
og:title Pass
Coolify
7 characters. Slack and Discord show roughly the first 70.
-
og:description Pass
Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku.
129 characters. LinkedIn truncates hardest, at about 100.
-
og:image Check
1024 x 512 PNG
1024 x 512 is a 2.00:1 ratio. Networks crop to 1.91:1, so the top and bottom of this image are being cut.
<meta property="og:image" content="https://cdn.coollabs.io/og-images/coolify.png" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" /> -
og:url Pass
https://coolify.io
Matches the page it is on.
-
og:type Pass
website
Declared as website.
-
og:site_name Pass
Coolify
Present, so the card carries your product name above the title.
X
X reads its own tags first and falls back to Open Graph.
-
twitter:card Pass
summary_large_image
Set to summary_large_image, the full-width card.
-
twitter:title Pass
Coolify
7 characters.
-
twitter:description Pass
Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku.
129 characters. X cuts at about 200.
-
twitter:image Pass
https://cdn.coollabs.io/og-images/coolify.png
Set explicitly.
Icons
The small mark beside the site name in a chat unfurl.
-
Favicon Pass
https://coolify.io/apple-touch-icon.png
8 icon links declared. Slack and Discord use it beside the site name.
Copy all
The corrected head block
Everything the page already got right is kept verbatim, so this can go in wholesale. Replace the placeholder image path if you do not have a card image yet.
<title>Coolify</title>
<meta name="description" content="Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku." />
<link rel="canonical" href="https://coolify.io/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Coolify" />
<meta property="og:title" content="Coolify" />
<meta property="og:description" content="Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku." />
<meta property="og:url" content="https://coolify.io/" />
<meta property="og:image" content="https://cdn.coollabs.io/og-images/coolify.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Coolify" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Coolify" />
<meta name="twitter:description" content="Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku." />
<meta name="twitter:image" content="https://cdn.coollabs.io/og-images/coolify.png" />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" /> Method
How this works
We fetch the page once, with a browser User-Agent, a 10 second timeout and a 1MB ceiling on the response. Many marketing pages serve something different to anything that looks like a crawler, so asking for the page the way a browser does is the only way to see what a person sees.
The head is then read for the title, meta description, canonical, robots meta, icon links, the full og: set and the full twitter: set. The card image is measured separately: a HEAD request for its type and weight, then a ranged request for the first 128KB, from which the pixel dimensions are read straight out of the PNG, JPEG, GIF or WebP header. Nothing is decoded and the whole image is never downloaded.
The thresholds are the ones that actually bite. Title 30 to 60 characters, because that is what Google shows without truncating. Description 70 to 160. og:image present, absolute and either 1200 by 630 or the same 1.91 to 1 ratio, because every network crops to it. twitter:card set to summary_large_image, without which X shows a small square thumbnail no matter how wide your image is. Canonical absolute and self-referencing. An icon link present, because the fallback is the first letter of your domain.
Every check that loses a point comes with the corrected tag, and the whole corrected head block is at the bottom of the report. Nothing is stored: the URL is in the address bar and that is the only copy.