How to remove a duplicate title tag from a WordPress page
A WordPress page prints two <title> elements when two things each believe they own the title: usually a theme with a hard-coded <title> in header.php alongside WordPress's own title-tag output, or two SEO plugins active together. Find the source of each, keep the one WordPress generates, and delete the other.
HTML allows one title per document. With two, browsers use the first and search engines choose for themselves, so the title you edit may not be the one being read. This is a different problem from many pages sharing the same title text.
Step by step
1. Count the titles in the head
View the page source and search for <title. Or count from a terminal, looking only at the head:
curl -s https://example.com/a-post/ | sed -n '/<head/,/<\/head>/p' | grep -c "<title"
The answer should be 1. Restricting the check to the head matters: inline SVG icons in the page body often contain their own <title> elements for accessibility, and those are not document titles. An audit tool that counts every <title in the HTML will report a false alarm on such pages.
2. Compare the two titles
Print them:
curl -s https://example.com/a-post/ | sed -n '/<head/,/<\/head>/p' | grep -o "<title[^<]*</title>"
Their content is a clue. Identical text suggests the theme calls WordPress's title function twice. A plain "Post Title – Site Name" next to a customised one suggests the theme printing its own alongside an SEO plugin's. Two customised but different titles suggest two SEO plugins.
3. Check the theme's header.php
Open the active theme's header.php (classic themes only) and search for <title>. Themes written before WordPress 4.1 typically contain:
<title><?php wp_title( '|', true, 'right' ); ?></title>
If the theme, a child theme or a plugin also declares add_theme_support( 'title-tag' ), WordPress prints a second title through wp_head(). The modern method is the theme support line and no <title> in the template.
4. Remove the hard-coded title
Copy header.php into a child theme if you have not already, delete the <title>...</title> line, and make sure this is in the child theme's functions.php:
add_action( 'after_setup_theme', function () {
add_theme_support( 'title-tag' );
} );
Confirm wp_head() is still called just before </head>. From then on, core or your SEO plugin builds the single title. Block themes have no header.php and always let WordPress print the title, so a duplicate there comes from a plugin.
5. Check for two SEO plugins
Go to Plugins → Installed Plugins and look for more than one plugin that manages titles and meta tags, including "lite" SEO features bundled in a theme framework or a page builder. Two of them active together print duplicate descriptions, canonicals and social tags as well as titles. Choose one, import settings into it if needed, and deactivate the other. Hydrogen SEO's Tools → Import SEO Data reads the titles and descriptions other SEO plugins stored; the order of steps is in fixing duplicate meta output.
6. Look for code that echoes a title
If neither applies, search the theme and custom plugins for <title and for functions hooked to wp_head that print one. Header-injection plugins and "insert code in head" boxes in theme options are common hiding places: someone pasted a full set of meta tags, title included, into a global header field years ago.
7. Verify across page types
Purge the cache and run the count again on the homepage, a post, a category archive and a search result. Each must return 1. Different templates can carry different mistakes, and the homepage is the one most often hand-edited.
How Hydrogen SEO handles the title
The plugin does not print a <title> element of its own. It supplies the title text through WordPress's pre_get_document_title filter, and through wp_title for older themes, so whichever element the theme or core prints carries the plugin's title. That means installing it never adds a second element. If two exist, both were there before, and the steps above still apply.
Why it matters
When the first title in the source is the stale, hard-coded one, your edits appear to do nothing: the SEO title you write is printed second and ignored by browsers. Search engines may pick either, or write their own. Removing the duplicate is what makes title changes take effect predictably. After the fix, expect search results to update as pages are recrawled, not at once.
Common questions
Is having two title tags bad for SEO?
It makes the result unpredictable. Search engines may use either title or generate their own, and browsers show the first. Keep exactly one.
Why does my audit report multiple titles when I only see one?
The tool is probably counting title elements inside inline SVG images in the page body. Only a title inside the head is the document title.
Do block themes have this problem?
Rarely. Block themes have no header.php and WordPress prints the title for them. A duplicate there points to a plugin or injected header code.