Meta Tag Checker
See what your page looks like on Google, X, Facebook, LinkedIn and Slack — each builds its card from a different chain of tags, so they genuinely differ.
A browser is not allowed to read another site's page, so this request goes through our server. The page is fetched, its head is read, and it is thrown away — nothing is stored or logged.
Enter a page URL to see its tags and how the link will look.
Table of contents
How to check a page's meta tags
- 1
Give it a URL
Any public page. The request goes through our server, because a browser is forbidden from reading another site's HTML — that is a rule of the web, not a choice we made. The page is fetched, its head is read, and it is thrown away.
- 2
Look at the previews first
The five cards are not the same picture five times. Each platform resolves a different chain of tags, so a page can look right on Facebook and blank on X.
- 3
Work through the errors
Errors are things that are broken — a missing title, a relative og:image, a stray noindex. Warnings are things that will cost you something: a description that gets cut off, a card that shows small when it could show large.
- 4
Copy the corrected tags
The last block rebuilds your tags with the gaps filled in. It is built from what you already have, so it is a patch rather than a blank form.
Why five previews and not one
Most checkers draw one card and label it "preview". That is a guess, because no two platforms resolve the same tags. The differences are not subtle and they are not edge cases — they are the reason a link looks right in one place and broken in another.
Google reads <title> and the meta description, and ignores Open Graph entirely. A page with immaculate og:title and no <title> shares beautifully and appears in search with nothing at the top.
X prefers its own tags and falls back to Open Graph. So twitter:title silently overrides og:title — which is useful when you want a different headline there, and confusing when you set it once years ago and forgot.
Facebook, LinkedIn and Slack read Open Graph, then fall back to the plain title and description. They are forgiving, which is why a page with no Open Graph at all still shows something — just not what you would have chosen.
Those chains are written down as code here, and each one is covered by its own test. That is the part worth trusting: the pictures are only as good as the rules behind them.
How long is too long
The honest answer is that nobody can tell you exactly. Google truncates on pixel width, not character count — roughly 600 pixels — so a title in capitals runs out well before one in lower case, and a title full of narrow letters survives longer than the count suggests.
The conventional proxies are 50–60 characters for a title and 120–160 for a description, and that is what the warnings here use. Treat them as "this will probably get cut", not as a limit. Front-load the important words either way: a truncated title that still says what the page is costs you nothing, and one that gets cut mid-brand-name costs you the click.
Being too short is a real miss too, and less often flagged. A 20-character description is a fifth of the space search results will give you, handed back for nothing.
Frequently asked questions
No. This is the one tool on zeal.tools that makes a request on your behalf, and it says so on screen rather than burying it. A browser is forbidden from reading another origin's HTML — that is what CORS is — so the fetch has to happen on our server. It requests the page, reads the head, parses it and throws the rest away. Nothing is written to disk, nothing is logged, and only the parsed result comes back to you. The endpoint deliberately never returns the page's own HTML, so it cannot be used as a proxy either.
Because they are built differently. Google reads only <title> and the meta description and ignores Open Graph completely. X prefers its own twitter: tags and falls back to Open Graph. Facebook, LinkedIn and Slack read Open Graph, then fall back to the plain title and description. A page with a perfect og:title and no <title> looks fine when shared and blank in search — that is exactly the sort of thing this catches.
Almost always because it is a relative path. Your browser resolves /og.png against the page it is on, but a crawler fetches that URL cold, with no page for context, so it has to be absolute — https://example.com/og.png. This flags it as an error rather than a warning for that reason. The other common causes are an image behind a login, one that redirects, or one over the platform's size limit.
Because twitter:card is missing or set to summary. X defaults to the small card; the wide one only appears if the page explicitly asks for summary_large_image. It is one line, and it is the single most common reason a link looks worse on X than everywhere else.
Around 50–60 characters for a title and 120–160 for a description. Those are conventions rather than hard limits: Google truncates on pixel width, not character count, so a title full of capitals runs out sooner than one in lower case. Treat the warnings here as "this will probably get cut", not as a rule.
No. It reads the HTML as delivered, which is what most crawlers see. If your tags are injected client-side they will show as missing here — and that is worth knowing, because they are missing as far as several crawlers are concerned too. Facebook and X do not run your JavaScript before building a card.
Not directly — the page has to be reachable from the internet, since our server is what fetches it. A staging site behind basic auth or on localhost will not work. If you need that, the MCP tool accepts raw HTML instead of a URL, and the whole thing is MIT licensed if you would rather run it yourself.
Because it found a robots meta tag saying so, and that instruction beats everything else on the page. It is reported first for that reason. If it is not deliberate, it is usually a staging setting that shipped to production — which is a bad afternoon, and worth catching here.
No. No sign-up, no ads, no limit worth mentioning, and nothing installed. It is MIT licensed, and the parser is a few hundred lines you can read — worth doing if you are curious why it is a hand-written scanner rather than a pile of regular expressions.
API — for scripts and agents
The same audit behind a free REST endpoint. No API key, no sign-up. Returns the tags, the findings with severities, and the resolved card for all five platforms.
curl 'https://zeal.tools/api/v1/meta?url=https://example.com' Useful in CI: fail a build when a page ships with a stray noindex or loses its og:image. MCP clients can add https://zeal.tools/mcp and call check_meta_tags, which also accepts raw HTML so an agent can check a page it just wrote.
The Zeal Promise
Non-negotiable, on every tool we ship.
- No sign-up — ever
- No watermarks on any output
- No ads near the download button
- Works fully on mobile
- Privacy-first: processing stays in your browser
- Open source (MIT) — audit it, contribute, self-host
- Zero runtime dependencies in tool logic