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

97 / 100

In good shape

Checked astro.build

14 pass, 1 worth a look, 0 to fix

Fetched in 37 ms with a browser User-Agent. The card image is 1200 by 630.

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

astro.build

Astro

Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-...

LinkedIn

Astro

astro.build

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

Slack

Astro

Astro

Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between.

Discord

Astro

Astro

Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between.

Search result

What Google shows, and whether the page can be indexed at all.

  • Title tag Check

    Astro

    5 characters. Under 30 leaves room on the table: say what the product does, not just its name.

    Corrected markup
    <title>Astro - what it does in four words</title>
  • Meta description Pass

    Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between.

    107 characters, inside the 70 to 160 range.

  • Canonical link Pass

    https://astro.build/

    Absolute and self-referencing.

  • Robots meta Pass

    max-image-preview:large

    Indexable.

Open Graph

Read by LinkedIn, Slack, Discord, Facebook, WhatsApp and almost everything else.

  • og:title Pass

    Astro

    5 characters. Slack and Discord show roughly the first 70.

  • og:description Pass

    Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between.

    107 characters. LinkedIn truncates hardest, at about 100.

  • og:image Pass

    1200 x 630 JPEG, 739 KB

    Exactly 1200 x 630, 739 KB. That is the size every network crops to.

  • og:url Pass

    https://astro.build/

    Matches the page it is on.

  • og:type Pass

    website

    Declared as website.

  • og:site_name Pass

    Astro

    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

    Astro

    5 characters.

  • twitter:description Pass

    Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between.

    107 characters. X cuts at about 200.

  • twitter:image Pass

    https://astro.build/og/astro.jpg

    Set explicitly.

Icons

The small mark beside the site name in a chat unfurl.

  • Favicon Pass

    https://astro.build/favicon.svg

    2 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>Astro</title>
<meta name="description" content="Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between." />
<link rel="canonical" href="https://astro.build/" />

<meta property="og:type" content="website" />
<meta property="og:site_name" content="Astro" />
<meta property="og:title" content="Astro" />
<meta property="og:description" content="Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between." />
<meta property="og:url" content="https://astro.build/" />
<meta property="og:image" content="https://astro.build/og/astro.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Astro" />

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Astro" />
<meta name="twitter:description" content="Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between." />
<meta name="twitter:image" content="https://astro.build/og/astro.jpg" />

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