Skip to content
Submit your app

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.

Try one: coolify.ioastro.build

93 / 100

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.

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.

X

coolify.io

Coolify

Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open...

LinkedIn

Coolify

coolify.io

LinkedIn drops the description entirely, so the title has to carry the click.

Slack

Coolify

Coolify

Self-hosting platform with superpowers. Deploy apps, databases & 280+ services to your server. Open-source alternative to Heroku.

Discord

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.

    Corrected markup
    <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.

    Corrected markup
    <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.

    Corrected markup
    <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.

Paste into your head
<title>Coolify</title>
<meta name="description" content="Self-hosting platform with superpowers. Deploy apps, databases &amp; 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 &amp; 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 &amp; 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.