All fix guides
WarningOn-Page SEO

Fix Multiple Title or Meta Description Tags

Your page's HTML contains more than one <title> element or more than one <meta name="description"> tag. A page should have exactly one of each. Search engines keep one and ignore the rest, but you don't fully control which one they keep, so the snippet Google or an AI engine shows can come from the wrong tag. This almost always happens when two systems inject metadata at once: a theme plus an SEO plugin, a layout template plus a page override, or a hardcoded tag next to a dynamic one. The fix is to find the second source and remove it so one canonical tag remains.

What this means

The HTML spec allows exactly one <title> element in a document, and <meta name="description"> is meant to appear once. Your audited page ships more than one of at least one of these. When a parser hits duplicates it doesn't merge or average them. It keeps one and discards the others.

In practice, browsers and Googlebot use the first <title> they find in the <head> and ignore later ones. Google has said extra title and description tags give no benefit over editing the single tag you already have. The risk is that the one it keeps may not be the one you carefully wrote.

Two patterns cause almost every case of this:

  • Two metadata sources firing at once. A WordPress theme outputs its own <title> and description while an SEO plugin (Yoast, Rank Math, AIOSEO) outputs another. Or a Next.js layout sets defaults and a page sets them again without deduping. Both land in the <head>.
  • A tag in the wrong place. A <title> or description <meta> pasted into the page <body>, or injected by a widget, embed, or script, counts as a second occurrence even though the intended one sits in the <head>.

This is different from duplicate title or description tags, which means two separate URLs sharing the same title or description text. This issue is one page carrying two or more tags in its own source.

Why it matters

You lose control of your search snippet. If Google keeps the first <title> and that one is a generic theme default like "Home | My Site" while your keyword-targeted title sits second, the good one never gets used. Descriptions behave the same way: the wrong one can win and drop your click-through from the results page.

It also signals a misconfigured template. Duplicate head tags usually mean every page on the site shares the same conflict, so one flag on one URL often points to a site-wide problem you can fix once at the template level.

AI answer engines are less predictable than browsers here. ChatGPT, Perplexity, and Google's AI Overviews read a page's title and description to label and cite sources, and some extraction pipelines parse the raw HTML rather than the rendered DOM. Conflicting tags make it ambiguous which string represents the page, so an AI engine may cite you with a stale or generic title, or skip the description. A single, clean set of metadata is the most reliable way to control how you appear in an AI-generated answer.

It can also break social previews. Some platforms fall back to <meta name="description"> when Open Graph tags are missing, and two competing descriptions make that fallback unpredictable.

How to fix it

  1. 1

    Confirm it in the raw HTML, not the rendered DOM

    View source (Ctrl/Cmd+U) or run curl on the URL, then search for <title and name="description" and count the matches. This matters because the DevTools Elements panel shows the deduplicated, rendered DOM and can hide the problem, while search engines and AI crawlers often read what the server actually sent. Note where each tag lives: both in <head>, or one leaked into <body>.

  2. 2

    Identify the two sources

    Duplicates nearly always come from two systems writing head tags. On WordPress that is usually the theme plus an SEO plugin. On a coded site it is a shared layout plus a per-page override, or a hardcoded tag left in the template next to a dynamic one. Temporarily disable one source (deactivate the SEO plugin, or comment out the layout default) and re-check the source to confirm which one produces the extra tag.

  3. 3

    Keep the SEO-managed tag, remove the other

    Pick one source to own metadata and disable the other. If you run Yoast or Rank Math, let the plugin own the title and description and stop the theme from printing its own. If a theme hardcodes <title> in header.php, remove that line and add add_theme_support('title-tag') so WordPress and the plugin emit a single tag. Don't try to make both tags identical; one still has to go.

  4. 4

    Remove stray tags from the body

    If a <title> or description <meta> appears inside <body>, it came from pasted content, a page-builder text block, an embed, or a third-party script. Delete it from the content or reconfigure the widget so it stops injecting head tags into the body. Metadata belongs only in <head>.

  5. 5

    Re-crawl and verify a single tag site-wide

    After the fix, re-fetch the raw HTML and confirm exactly one <title> and one <meta name="description">. Because this is usually template-level, spot-check a few page types: the home page, a post, an archive, a product page. Then re-run the audit and use Google Search Console's URL Inspection (Test Live URL) to confirm Googlebot now sees one clean set of tags.

Example

<!-- CORRECT: one of each, in <head> -->
<head>
  <meta charset="utf-8">
  <title>Ergonomic Standing Desks, Adjustable Height | Acme</title>
  <meta name="description" content="Shop electric standing desks with programmable height presets, a 10-year warranty, and free shipping. Ships in 3 days.">
</head>

<!-- WRONG: theme default and plugin tag both output -->
<head>
  <title>Home | Acme</title>                       <!-- theme header.php -->
  <meta name="description" content="Welcome to Acme.">
  <title>Ergonomic Standing Desks | Acme</title>   <!-- SEO plugin -->
  <meta name="description" content="Shop electric standing desks...">
</head>

<!-- WRONG: a title that leaked into the body -->
<body>
  <title>Oops, this belongs in head</title>
  ...
</body>

A page should carry exactly one title and one meta description, both inside <head>. Remove any extras, including any that leaked into <body>.

Platform-specific steps

WordPress (Yoast / Rank Math / AIOSEO)

The SEO plugin and the theme are both writing head tags. Let the plugin own metadata: use a theme that declares add_theme_support('title-tag') and does not hardcode <title> or a description <meta> in header.php. If your theme hardcodes them, edit header.php through a child theme to remove those lines. Then clear any caching plugin or CDN and re-check view-source. Yoast, Rank Math, and AIOSEO each emit one title and one description on their own, so once the theme stops competing the duplicates disappear.

Shopify

Shopify themes output the title and SEO description from theme.liquid, usually via {{ page_title }} and a meta-tags snippet. Duplicates appear when an SEO or metafield app injects a second set, or when custom Liquid was added to the <head>. Open theme.liquid, confirm there is only one <title> and one description block, and check installed SEO apps for a title/description injection setting you can disable if the theme already handles it.

Wix / Squarespace

These platforms manage the primary title and description for you, so a second one almost always comes from custom code you added: a Squarespace Code Injection header snippet or a Wix custom <head> embed that contains its own <title> or <meta name="description">. Remove the tag from that injected code and let the platform's built-in SEO panel be the single source.

Next.js / React

In the App Router, set title and description once via the metadata export or generateMetadata, and don't also render a <title> in a component; Next dedupes its own Metadata API, but mixing it with a manual <title> in a layout can double up. In the Pages Router, make sure only one next/head per route sets them, and avoid a _document title colliding with a per-page one. For hand-written HTML, delete the extra tag from the template.

Free tool
Check this with the Meta Tag Checker

Frequently asked

Does having two title tags hurt my Google rankings?

Not as a direct penalty, but it hurts indirectly. Google keeps one tag and ignores the rest, and if it keeps the wrong one your snippet shows a weaker, less relevant title that lowers click-through. The extra tag adds nothing and risks the wrong one winning, so remove it and keep a single well-written tag.

Which title tag does Google use when there are two?

Browsers and Googlebot generally use the first <title> element in the <head> and ignore later ones. Don't rely on that ordering though: some crawlers and AI fetchers behave differently, and Google can rewrite titles anyway. The safe answer is to have exactly one so there is nothing to choose between.

Is this the same as duplicate title tags?

No. This issue means one page has more than one title or description tag inside its own HTML. Duplicate title tags means two different URLs share the same title text. They are separate problems with separate fixes, though both can appear on the same site.

Why does my WordPress site have two of each when I only set one in Yoast?

Your theme is printing its own title and description in header.php on top of what the SEO plugin outputs. Stop the theme from emitting them: remove the hardcoded tags and add add_theme_support('title-tag'), or use an up-to-date theme that defers to the plugin. Rank Math and AIOSEO produce the same conflict with older themes.

Will AI tools like ChatGPT or Perplexity get my page title wrong because of this?

They can. AI crawlers extract a page's title and description to label and cite it, and they don't all follow the browser's first-one-wins rule. With two competing tags an engine may cite you with the generic or stale one. A single clean title and description is the reliable way to control how you're represented in AI answers.

Does your site have this issue?

Run a free, AI-powered audit and we’ll flag this and 150+ other checks in about a minute. No signup.

No signup needed. Results in under 60 seconds.

Related fixes