An SEO plugin, an audit report or our on-page check has flagged a page: the title is missing or too long, there is no meta description, the page has two H1 headings or none, or the headings jump from H2 to H4. Or you searched for your own site and the result showed a title you never wrote, or the same title on every page.
None of these will take a site offline, and none of them is a quick route to the top of Google. They matter because the title and description are what people read before they decide to click, and the headings are how screen reader users and search engines understand what a page is about. They are also some of the easiest problems on a website to fix, once you know which part of WordPress is producing each one. This guide is for site owners and designers working on WordPress with Rank Math or Yoast and a theme or page builder such as Breakdance, Elementor, Divi or the block editor (Gutenberg).
What each one is
| Item |
Where it lives |
What search engines do with it |
What screen readers do with it |
| Page title |
The <title> tag in the page head. Not visible on the page itself. |
Google uses it as the main source for the clickable headline in results (Google calls it the title link), though it may rewrite it. |
Read out first when the page loads, and shown as the browser tab name. WCAG 2.4.2 (Page Titled) asks for a title that describes the page. |
| Meta description |
A <meta name="description"> tag in the head. Not visible on the page. |
May be shown as the snippet under the title. Google says it is not a ranking factor, and it often picks text from the page instead. |
Not read out. It has no accessibility role. |
| H1 heading |
A visible heading on the page, usually the page name or main headline. |
One of the signals for what the page is about, and one of the sources Google may use for the title link. |
Users jump to it to find where the main content starts, often with a single key press. |
| H2 to H6 |
Visible headings below the H1, forming an outline. |
Help search engines understand the sections of a page. |
Listed in a headings menu. Users move through them like a table of contents. |
A word on what the rules really are
Some of what audit tools flag is firm, and some is good practice:
- A missing title is a real problem for everyone. Fix it first.
- Duplicate titles across pages make your results look identical and make browser tabs and history useless. Fix them.
- A missing meta description is not an error. Google will write a snippet from the page. Writing your own gives you a better chance of a snippet that says what you want, so it is worth doing on pages people find in search.
- More than one H1 is allowed by HTML, and Google has said it copes with several. The reason to fix it is clarity: one main heading makes the page easier to follow for screen reader users and clearer for everyone. Two H1s is usually a sign the theme and the builder are both adding one, which is worth knowing.
- Skipped heading levels (H2 straight to H4) do not fail a specific WCAG rule on their own, but they are a common accessibility audit finding, because they make the outline confusing to people who navigate by headings. WCAG 1.3.1 (Info and Relationships) does expect headings to reflect the real structure of the page.
How long titles and descriptions should be
Google does not set a character limit for either. It shortens titles and snippets to fit the width of the screen, measured in pixels, so the cut-off point depends on the letters you use (a W is much wider than an i), the device and the search. The numbers below are approximate guidance, not rules:
| Item |
Approximate guidance |
Why |
| Page title |
About 50 to 60 characters. Often cut off somewhere after 55 to 65. |
Most titles of this length show in full on desktop. A longer title is not penalized, but the end may be replaced with an ellipsis. |
| Meta description |
About 120 to 155 characters. Often cut off after about 155 to 160 on desktop, and sooner on phones. |
Enough for one or two useful sentences. Put the key point first, so it survives being shortened. |
Our on-page check uses the same rough limits: it calls a title very short under 15 characters and possibly cut off over 65, and a description short under 70 characters and possibly cut off over 160. Rank Math and Yoast both show a length indicator and a preview while you type, which is a better guide than counting characters.
Write for the person searching, not for the counter:
- Title: what the page is about first, then the business name. “Roof Repair in Austin | Smith Roofing” beats “Smith Roofing | Home | Welcome”.
- Description: what the page offers and who it is for, in plain words. One clear sentence is better than a list of keywords.
- Every page different: each title and description should describe that page only.
Step 1: Check the page
With the on-page check
Open the on-page check, enter the full page address and run it. Under “Title and description” and “Headings” it reports:
- whether there is a title, how long it is, and whether there is more than one title tag;
- whether there is a meta description, how long it is, and whether there is more than one;
- how many H1 headings there are, and whether any H1 is empty;
- every place where the heading levels skip, with the heading text so you can find it.
The check reads the HTML your server sends, the same first view a search engine gets. Headings added later by scripts in the browser are not included. It checks one page at a time, so run it on your home page and on one page built from each template (a normal page, a blog post, a category archive, a product if you have a shop).
With browser DevTools
To check a page yourself, open it in Chrome, Edge or Firefox, press F12 (or right-click and choose Inspect), and open the Console tab. Paste these lines one at a time and press Enter:
document.title
document.querySelectorAll("title").length
document.querySelector("meta[name=description]")?.content
document.querySelectorAll("meta[name=description]").length
console.table([...document.querySelectorAll("h1,h2,h3,h4,h5,h6")].map(h => ({ level: h.tagName, text: h.textContent.trim().slice(0, 80) })))
What good output looks like: the title is the one you expect, both counts are 1, the description is your own wording, and the table shows one H1 at or near the top, followed by H2s and H3s in order. What bad output looks like: an empty title, a count of 2 (two plugins or a plugin and the theme both adding a tag), undefined for the description, no H1 in the table, or a row where the level jumps by more than one.
A few more ways to look:
- View source (Ctrl+U, or Cmd+Option+U on a Mac) shows the HTML as the server sent it. Search it for
<title and name="description". The Console and the Elements panel show the page after scripts have run, so if they disagree with View source, a script is adding or changing headings.
- Lighthouse (in Chrome DevTools) flags “Document doesn’t have a meta description” in its SEO section and “Heading elements are not in a sequentially-descending order” in its Accessibility section.
- Firefox’s Accessibility panel in DevTools shows the headings as a screen reader sees them.
Check while logged out, or in a private window. Logged in, you may see the WordPress toolbar and builder extras, and your caching plugin may serve you a different version from the one visitors get.
Step 2: Fix a missing or wrong title
How WordPress builds the title
WordPress itself writes the title tag when the theme supports it (themes do this by declaring support for title-tag). Without an SEO plugin, the title is the page name, a separator and the site name, and the home page uses the site name and tagline from Settings > General. An SEO plugin takes over and builds the title from its own templates.
So a missing or odd title usually comes from one of three places:
- The site title is blank in Settings > General, so pages show only their own name or, on the home page, nothing useful.
- The SEO plugin template is wrong, for example a template that contains only the site name, so every page gets the same title.
- An old theme hard-codes a title tag in its header file instead of letting WordPress add it. That can produce a fixed title on every page, or two title tags once an SEO plugin adds its own. The fix is a theme that supports
title-tag, or a child theme change by a developer.
In Rank Math
- One page: open the page in the editor, open the Rank Math panel, and on the General tab click Edit Snippet. Type the title and description, watch the preview and the length indicators, and save the page.
- The default for all pages of one type: go to Rank Math SEO > Titles & Meta, open the post type (Posts, Pages, Products and so on) and check the title and description templates. A sensible title template is
%title% %sep% %sitename%.
- The home page: if your home page is a static page, edit it like any other page. If it shows your latest posts, set it in Titles & Meta under Homepage.
- Archives: categories, tags and author pages have their own templates in Titles & Meta. Make sure they include the archive name, not just the site name.
In Yoast SEO
- One page: open the page in the editor, open the Yoast SEO sidebar or the box below the content, and edit the SEO title and meta description in the search appearance section. The preview and the colored length bar update as you type.
- The default for all pages of one type: go to Yoast SEO > Settings, then Content types, and choose the post type. A sensible title template is
%%title%% %%page%% %%sep%% %%sitename%%.
- The home page and archives have their own sections in the same Settings screen (Site basics or Homepage, and Categories and tags).
The template variables differ between the two plugins: Rank Math uses single percent signs, Yoast uses double. Pasting one plugin’s template into the other produces literal percent codes in your titles.
Step 3: Fix duplicate titles and descriptions
There are two kinds of duplicate, and they have different causes.
Two title tags on one page
The on-page check reports “2 title tags”, or the DevTools count shows 2. Something is adding a second one:
- Two SEO plugins are active, for example Rank Math and Yoast, or one of them plus All in One SEO. Keep one. Both offer an import tool for the other’s settings, so you do not lose your existing titles and descriptions.
- A theme or builder SEO feature is also switched on. Some themes and frameworks have their own title or meta description fields. Turn off the theme’s version and let the SEO plugin do it.
- A hard-coded title tag in the theme header file, as above.
- A description pasted into a header code box, such as a header and footer scripts plugin or the builder’s custom code setting. Remove it and use the SEO plugin’s field instead.
The same title on many pages
Your search results or an SEO crawler show the same title on many pages. The usual causes:
- A title template that leaves out the page name, for example only
%sitename%.
- Pages created by copying another page and never retitled. The SEO title was copied along with the content.
- Pages 2, 3 and so on of the blog or an archive all using the same title. Add the page number variable (
%page% in Rank Math, %%page%% in Yoast) to archive templates.
- Several near-identical pages, such as one service page per town with only the town name changed. Here the duplicate titles are a symptom: the pages themselves are near duplicates. The duplicate content guide covers what to do about that.
To find duplicates across a whole site, use a desktop SEO crawler (Screaming Frog SEO Spider has a free version for small sites) and sort its title and description columns, or look at the Search Console Performance report for pages whose result text is not what you expected.
Google shows a different title from yours
Google may rewrite a title link when it thinks the title tag does not describe the page well: when it is very long, stuffed with keywords, the same on many pages, or empty. It may use the H1, other headings, the Open Graph title or link text pointing at the page instead. If Google keeps rewriting a title, make the title tag and the H1 agree, describe the page plainly and keep it a reasonable length. After you change a title, Google picks it up the next time it crawls the page, which can take days or weeks; the Search Console indexing guide explains how to ask for a recrawl.
Step 4: Fix a missing H1 or two H1s
This is where page builders and themes most often trip over each other. A classic WordPress theme prints the page name as an H1 above the content. Then the page content, built in a builder, adds its own big hero headline, also set to H1. The result is two H1s. Or the designer hides the theme title to clean up the layout, sets the hero headline to H2 because it looked better at that size, and the page ends up with no H1 at all.
Decide, for each template, who owns the H1:
- The theme or template owns it: the page name is printed as the H1 by the theme, or by a Post Title element in a builder template. The page content starts at H2.
- The page content owns it: the theme title is switched off, and the first heading inside the page content is the H1.
Either is fine. Mixing them is what causes the trouble. Also check the header: some themes wrap the logo or site name in an H1 on every page, which gives every page an extra H1 that says the same thing. On inner pages, the logo should not be a heading at all.
Breakdance
- Every Heading element has a tag setting (H1 to H6). Select the element and check it in the Content panel. Change the tag to fix the outline, and change the size with the element’s typography settings or a global class, not by picking a different heading level.
- If the site uses a Breakdance template for pages or posts with a Post Title element, that element is usually the H1. Check its tag setting. Then make sure the page content does not add a second H1 below it.
- If the Breakdance header template has the logo or site name in a Heading element set to H1, change it to a plain text or image element.
- When Breakdance replaces the theme entirely, the theme prints nothing, so any H1 must come from your Breakdance template or content. A page built with no Heading set to H1 has none. If changes do not show on the live page, see Breakdance not loading or CSS not updating.
Elementor
- The Heading widget has an HTML Tag setting on its Content tab (H1 to H6, div, span, p). Set the hero headline to H1 only if the theme title is hidden.
- To hide the theme title on one page, open the page settings (the gear icon) and switch on Hide Title. Elementor also has a site-wide setting for the CSS selector it uses to find the theme title; if Hide Title does nothing with your theme, that selector does not match.
- If you build pages with Elementor Pro Theme Builder templates, the Post Title or Page Title widget in the single template has its own HTML Tag setting. Check it is H1 and that the page content does not add another.
Divi
- Divi modules with a title (Text, Blurb, Call to Action and others) have a heading level option in the module settings, usually under the Design tab with the title text options. Use it to set H1 to H6 without changing the look.
- Pages built with the Divi Builder often show no theme title, so the first module’s title is the only H1 candidate. Check it really is an H1.
- In a Divi Theme Builder template, the Post Title module prints the page name. Check its heading level and avoid a second H1 in the page body.
Block editor (Gutenberg)
- Select a Heading block and choose the level from the block toolbar (H1 to H6). Most themes print the page title as the H1, so headings in the content should start at H2.
- In a block theme, the page title comes from a Title block in the template. Open Appearance > Editor, find the Page or Single template, select the Title block and check its level. The Site Title block in the header has a level setting too; on inner pages it should not be H1.
- In a classic theme, many themes have a per-page setting to hide the title, in a box below the editor or in the document sidebar. Hide it there, not with CSS that hides it from everyone.
Do not hide the H1 the wrong way
Hiding a heading with display: none or visibility: hidden removes it from screen readers as well as from view, so it no longer counts. If you need a heading that only screen readers announce, use your theme’s screen reader text class (WordPress themes commonly use screen-reader-text); the screen reader guide explains how. In most cases a visible H1 is simply better.
If the on-page check says “An H1 heading has no text”, look for a logo image inside an H1 with no alt text. Give the image alt text or take it out of the heading.
Step 5: Fix skipped heading levels
A skip means the outline jumps down more than one level, for example from an H2 straight to an H4. Going back up is fine: an H4 followed by a new H2 section is normal. The cause is almost always that a heading was chosen for its size.
- Run the on-page check. Under “Headings”, it lists each skip with the levels and the heading text, for example “H2 to H4: Our services”.
- Find that heading in the editor or builder and change it to the next level down from the heading above it (after an H2, use an H3).
- If it now looks too big, change its size with typography settings or a class. Headings should match their place in the outline; styling controls the look.
- Run the check again, and repeat until it reports the heading order as passing.
Skips often come from outside the page content:
- Footer and sidebar widget titles set as H4 or H5 by the theme, so the last section of the content (H2) is followed by a footer H4. Change the widget title level in the theme settings if it has one, or in the footer template in your builder.
- Card titles in post loops and pricing tables set to H4 or H5 for size. Set them to the level that fits under the section heading above them.
- Testimonial names, form titles and “eyebrow” labels made into headings. Small labels that do not start a section should usually be plain text, not headings at all.
In a builder, fixing this once in a global block, template or loop item fixes it on every page that uses it.
After you fix it
- Clear your caching plugin, any server cache and Cloudflare if you use it, then run the on-page check again on the live address. If the old title or headings still show, see changes not showing for visitors.
- Check one page of each template, because one template fix usually covers many pages.
- If you also changed the Open Graph title used for social sharing, see wrong image or text when sharing a link for making Facebook and LinkedIn fetch the page again.
- Expect search results to update gradually as Google recrawls pages. Better titles can help clicks; they will not rescue a page Google is not indexing. If pages are missing from Google entirely, start with new website not showing on Google instead.
If you build sites for clients
- Agree a rule per site: which template or element owns the H1, and which heading levels cards, widgets and footers use. Put it in the handoff document so clients and later developers keep the outline intact.
- Show clients where the SEO title and description fields are in Rank Math or Yoast, and ask them to fill both in for every new page.
- Run the on-page check on each template before launch and again after a redesign. A redesign is when headings and title templates most often change by accident; see traffic dropped after a redesign.
See also