Skip to the tool
OnPageKit

Meta Tag Analyzer

Reads the head of pasted HTML and grades every tag in it.

paste the head, or the whole page

Nothing leaves this tab. A page cannot read another site’s HTML, so a URL box would mean a server in the middle holding your address.

Title length
0
Description
0
Open Graph
0/5
Twitter
0/4
hreflang
0
Duplicates
0
Errors
3
Warnings
3
html lang
not declared
title
not declared
description
not declared
charset
not declared
viewport
not declared
robots
not declared
canonical
not declared
og:title
not declared
og:description
not declared
og:image
not declared
og:url
not declared
og:type
not declared
twitter:card
not declared
twitter:title
not declared
twitter:description
not declared
twitter:image
not declared
hreflang
not declared
  • ErrorNo title tag. The single most important line of the head is missing.
  • WarningNo meta description. Google will assemble a snippet from the body text, and it will not be the sentence you would have chosen.
  • ErrorNo charset declaration. The browser guesses, and the guess is what turns an apostrophe into three symbols.
  • ErrorNo viewport meta. Mobile browsers fall back to a desktop-width layout and zoom out, and mobile-first indexing sees that.
  • WarningThe html element declares no lang. Screen readers pick a pronunciation from the system instead of from the page.
  • NoteNo canonical link. Not required, and Google picks one anyway, but declaring it is how you decide which URL wins.
  • WarningMissing Open Graph tags: og:title, og:description, og:image, og:url, og:type. Without them a shared link renders as a bare URL.
  • NoteMissing Twitter card tags: twitter:card, twitter:title, twitter:description, twitter:image. X falls back to Open Graph, so only twitter:card really changes the layout.

Everything runs in your browser. Nothing you type is sent to a server.

Found a bug in this tool? Report it.

Share this tool

What the meta tag analyzer reports

Paste a page's source and this meta tag analyzer reads the head: the title and its length, the meta description and its length, charset, viewport, the robots directives, the canonical link, the Open Graph and Twitter card tags, the lang on the <html> element, every declared hreflang, and any tag that appears more than once.

Each finding is graded. An absent canonical is a note; a title over the truncation point is a warning; a missing charset, a duplicated tag or a noindex directive is an error, because each of those changes what happens to the page rather than how it looks.

Analysing is not generating

If what you need is the markup itself, the Meta Tag Generator writes it for you with a SERP preview beside the fields. This page answers the opposite question: something is already live, and you want to know what is really in its head. The two intentions rarely arrive at the same moment, which is why they are two pages.

Why paste, and where to get the source

A script in your browser cannot read another origin's HTML — the security model forbids it, and the sites you want to inspect do not opt out. The alternative on offer elsewhere is a server that fetches your URL on your behalf and keeps a record of it. Copying the source sidesteps that, and it is the only method that works on a page behind a login or on a build that has not shipped.

Take the source with Ctrl+U, or copy the head from DevTools if a tag manager injects anything. Paste the whole document if you like; everything outside the head is ignored, and markup inside comments or <script> blocks is skipped so a templated example does not register as a real tag.

The tags that change behaviour

charset decides how bytes become characters. Without it the browser guesses, and a wrong guess is where mojibake comes from. It must be the first thing in the head, inside the first kilobyte.

viewport is what stops a phone rendering your page at desktop width and shrinking it. Since indexing is done with a mobile crawler, a page without it is being judged in the state it looks worst.

robots is the only tag here that can remove a page from search on its own. noindex withdraws it; nofollow stops every link on it from passing anything, internal navigation included; none does both. The analyzer treats any of them as an error precisely because the tag is invisible in the rendered page.

canonical does not force anything. It tells Google which address you would prefer among several that serve the same content, and Google usually agrees. Two canonical links on one page, however, cancel each other out, which is why duplicates are reported.

The tags that only change the presentation

Title and description are not ranking factors, and it is worth saying plainly. What they control is the sentence a searcher reads before deciding whether to click, and Google reserves the right to rewrite either one. Descriptions are rewritten more often than titles because a query-specific snippet from the body is frequently more useful than a generic summary.

That is not an argument for skipping them. When your description is used, it is the only piece of sales copy in the result, and it costs a minute.

Open Graph does not touch search at all. It decides whether a link pasted into Slack, WhatsApp or LinkedIn expands into a card or stays a naked URL, and the difference in click-through is large enough that it belongs on every page you expect anyone to share.

Once the head is clean, the Heading Structure Checker does the same job for the body, and the Mixed Content Checker finds the assets still loading over plain HTTP.

Frequently asked questions

Why does Google show a different title from the one I wrote?

Because it treats your title element as a strong suggestion rather than an instruction. Google confirmed in 2021 that it rewrites the displayed link text when it thinks something else describes the page better, and the independent studies published since put the rewrite rate somewhere around six pages in ten. The most common causes are titles padded with boilerplate, titles stuffed with repeated terms, and titles so short that the H1 is more informative. Writing a clear title that matches the page is the only lever you have, and it is a good one.

Does the meta keywords tag do anything at all?

Not for Google, which said publicly in 2009 that it does not use the tag for ranking, and not for Bing beyond treating obvious stuffing as a negative signal. Some internal site searches and a handful of smaller engines still read it. If the tag is already there it is doing no harm; there is simply no reason to write a new one.

What is the safe length for a title and a description?

Titles are truncated by pixel width rather than character count, but around 60 characters is the point where a desktop result usually runs out of room, and that is the threshold this analyzer uses. Descriptions have more slack: roughly 110 characters before the snippet looks thin, roughly 160 before the tail is cut. Neither is a ranking factor. Both decide how much of your own writing appears in the result.

How do I know a noindex is deliberate?

You usually do not, which is exactly why it is worth checking. A noindex on a thank-you page, a filtered listing or an internal search result is correct. The same directive on a live product page is almost always a staging configuration that shipped, and it is invisible until traffic falls off a cliff a fortnight later. The analyzer flags every one it finds, because a false alarm costs a glance and a missed one costs a quarter.

Should I add both Open Graph and Twitter card tags?

Open Graph is the one that matters, because Facebook, LinkedIn, WhatsApp, Slack and X all read it. X only needs twitter:card to choose between a small thumbnail and a large image; it falls back to Open Graph for the title, description and picture. So five Open Graph tags plus twitter:card covers the whole field, and duplicating everything under a twitter prefix buys nothing.

Related tools

Updated