SEO Guide

How to Check Meta Tags: Where You Look Changes the Answer

View Source, DevTools, and Search Console show different things for the same page. Here's which to trust, what to look for, and how to fix it — with real cases we found on this site.

8 min read2026-10-23

You can check meta tags by viewing the page source (Ctrl+U) and searching for title, description, canonical, and OGP. But View Source shows the original HTML from the server, DevTools shows the page after JavaScript ran, and Search Console's URL Inspection shows what Google received — so the three can disagree. Judge canonical and robots by whether they're in the <head> of the original HTML, and confirm canonical reached Google with the user-declared canonical in URL Inspection.

Three Places to Check, Each Showing Something Different

WhereShowsGood forMisses
View Source (same as curl)The original HTML from the serverWhether canonical, robots, and OGP are there from the startTags added later by JavaScript don't appear
DevTools (Elements, Console)The page after JavaScript ranWhat the browser ended up withShows tags missing from the source HTML, so it's easy to think they're 'there'
Search Console URL InspectionWhat Google received, and Google's decisionWhether your canonical reached Google (user-declared canonical)No screen lists tags. Details only show for indexed URLs or live tests that pass

One rule decides it. For canonical, Google only accepts it in the <head>, and asks you to put it in the source HTML and not change it with JavaScript. So "I can see it in DevTools" doesn't count as a pass. The pass is the right value in the <head> of the original HTML.

What to Check, in Order: 5 Steps

  1. 1. View Source to see whether the tags are in the original HTML

    Open the source with Ctrl+U (Windows) or Command+Option+U (Mac), then search for <title, name="description", name="robots", rel="canonical", and og:. If canonical or robots aren't here, treat them as missing.

  2. 2. List the rendered tags from the DevTools console

    Paste the code below into the console. It lists the title, meta, and canonical tags on the rendered page and whether each sits in <head> or <body>. Tags that differ from step 1 were added or changed by JavaScript.

  3. 3. Compare with the HTML a social crawler gets

    Social crawlers read OGP. Fetch the page in a terminal with Facebook's crawler User-Agent (facebookexternalhit) to see the HTML that social networks receive. Some frameworks serve it differently from browsers.

  4. 4. Use URL Inspection to see whether canonical reached Google

    In Search Console's URL Inspection, check the user-declared canonical. If you set one but this is empty, Google didn't receive it. If the Google-selected canonical is a different URL, Google chose another page as canonical.

  5. 5. Run a checker for missing tags and lengths in one pass

    Finish with a checker. It reads the original HTML from the server, so it sees what step 1 sees; tags that exist only after rendering show as missing. Compare with step 2 to decide whether that's a real issue.

Step 2: code to paste in the console

[...document.querySelectorAll('title, meta[name], meta[property], link[rel="canonical"]')]
  .map((el) => ({
    where: document.head.contains(el) ? 'head' : 'body',
    tag: el.getAttribute('name') || el.getAttribute('property') || el.getAttribute('rel') || 'title',
    value: el.getAttribute('content') || el.getAttribute('href') || el.textContent,
  }))

Step 3: fetch as a social crawler

curl -s -A "facebookexternalhit/1.1" https://example.com/ | grep -oE '<(title|meta|link)[^>]*(og:|description|canonical|robots)[^>]*>|<title>[^<]*'

For reading curl output (and the trap of matching text inside scripts), see can AI crawlers read your SPA. For URL Inspection states, see Discovered – currently not indexed.

What Passes, and What Needs Fixing, Tag by Tag

TagPassesFix
titleUnique per page, main term near the frontMissing, duplicated across pages, or confused with an SVG title
meta descriptionSummarizes the page's answerMissing or identical everywhere. Not a ranking penalty — Google builds one from the text
meta robotsNo noindex on pages you want indexedA leftover noindex on a live page (often copied from staging)
link rel="canonical"In <head>, points to itself or the right representative URLIn <body>, changed by JavaScript, or pointing to another page
og:title / og:description / og:image / og:urlog:image is an absolute https:// URLRelative og:image or a 404 image — social crawlers won't show it
meta viewportHas width=device-widthMissing — the page renders zoomed out on phones
meta keywordsNo need to checkNot used by Google Search

Fix in order of what decides whether the page appears in search at all: robots (noindex) and canonical first, then title and description, then OGP and viewport. Even a clean title may not show as written — Google also uses headings, og:title, and other text to build the title link.

How to write each tag is covered in title tags, meta descriptions, canonical tags, and OGP tags. This article sticks to checking that they're present and actually delivered.

Pitfall 1: Meta Tags Landing in <body> (Measured on This Site)

Since Next.js 15.2, dynamically rendered pages start sending HTML without waiting for metadata, then stream the tags into the end of <body>. Only crawlers that can't run JavaScript get them in <head> as before. On October 23, 2026 we checked the five dynamically rendered pages on this site; only the shared audit result page had its tags in <body>. Here's what that page returned when fetched different ways.

User-AgentWhere title, description, canonical, og:title were
Browser (Chrome)End of <body>
GooglebotEnd of <body>
GPTBot (OpenAI)End of <body>
facebookexternalhit, Twitterbot, Slackbot<head>

We also opened the page in a browser and checked the finished page in DevTools: all four tags were still in <body>, not moved to <head>. The Next.js docs say they verified that bots which run JavaScript and inspect the full DOM, such as Googlebot, interpret this correctly. Google, on the other hand, states that canonical is only accepted in the <head>.

The call: there's no reason to leave canonical — which affects whether a page shows up at all — where two official sources disagree. The same day, we changed the Next.js config (htmlLimitedBots) so every request gets metadata in <head>. It only affects dynamic pages; our statically built articles and tool pages already had their tags in <head>.

If your site runs on Next.js, fetch the source with a browser User-Agent and with facebookexternalhit and compare. If <title> moves, streaming is happening.

Pitfall 2: Checkers Picking Up an SVG Icon's Title

SVG logos and icons often include a <title> element for screen readers. Browsers use the first <title> outside any SVG as the page title. Tools that search by tag name alone pick up the SVG's title too and mistake it for the page title.

Direbase's checker had this bug. It kept overwriting with the last <title> it found, so an SVG title in the body won. On October 23, 2026, we fed these three HTML patterns to the same Cloudflare Workers runtime as production, before and after the fix.

Page HTMLBeforeAfter
Title in <head>, plus a title inside an SVG logoThe SVG titleThe <head> title
No title in <head>; an SVG title, then the real title, in <body>The SVG titleThe real title
A title only inside an SVGThe SVG titleNo title (same as browsers)

If a checker shows an unfamiliar short title — often a site or logo name — check the source for a <title> inside an SVG first. The original HTML from step 1 outranks any tool.

Pitfall 3: "It's in DevTools, So It's Fine"

On sites that add canonical or description with a tag manager or JavaScript, DevTools shows the right values — but the source HTML has none, or different ones. Social crawlers don't run JavaScript, so OGP added later never reaches the share preview.

Google says that if you can't set canonical in the source HTML, leave it out of the source and set it only with JavaScript. The worst case is the source and JavaScript saying different things. Make "steps 1 and 2 agree" your pass/fail line.

Related Tools

Sources (checked October 23, 2026)

FAQ

What's the quickest way to check meta tags?▾
Open the page, view the source (Ctrl+U on Windows, Command+Option+U on Mac), and search for <title, name="description", rel="canonical", and og:. This is the original HTML the server sent. On sites that change tags with JavaScript, it can differ from what DevTools shows.
Can I check meta tags in Search Console?▾
There's no screen that lists them. In URL Inspection, compare the user-declared canonical with the Google-selected canonical to see whether your canonical reached Google. For title and description, look inside the HTML under View crawled page.
Why do title or canonical differ between View Source and DevTools?▾
View Source shows the original HTML from the server; the DevTools Elements panel shows the page after JavaScript ran. For canonical, Google asks you to put it in the source HTML and not change it with JavaScript. The safe state is when both match.
Is it a problem if meta tags appear in <body> instead of <head>?▾
For canonical, it can be. Google states that rel="canonical" is only accepted in the <head>. Since Next.js 15.2, dynamic pages may stream metadata into the <body>, and on this site's share pages the tags stayed in <body> even after rendering. A config option makes Next.js always put them in <head>.
Do I need to check meta keywords?▾
No. Google says the meta keywords tag isn't used by Google Search and has no effect on indexing or ranking. Prioritize title, description, robots, canonical, OGP, and viewport.
Why does a checker show a different title than the real one?▾
If an SVG icon on the page has its own <title> element, a tool can mistake it for the page title. Browsers use the first <title> outside any SVG. Direbase's checker had this bug; we fixed it on October 23, 2026.

See What's in the Original HTML, All at Once

Enter a URL to list title, description, canonical, and OGP with their lengths. Any tag that disagrees with DevTools is the place to fix.

Check your meta tags
今井政和

Written by

今井政和

SEO Director / Frontend Developer

SEO Director with 20+ years of web industry experience. Creator of Direbase and the official WordPress plugin "ORECTIC SEO CHECK." Author of a book on web strategy inspired by Edo-era merchant principles.

@imai_director