Missing H1 tag: why pages lose their main heading and how to fix it

A missing H1 means the page has no <h1> element, so there is no marked-up main heading telling readers, screen readers and search engines what the page is about. The fix is to give the page one visible H1 that states its topic, usually the post or page title.

Hydrogen SEO rates this critical because it usually points to a template problem that affects many pages at once, not a single forgotten heading. Google can understand a page without an H1, but an H1 is one of the plainest signals of a page's topic, and screen reader users rely on it to find where the content starts.

What it looks like in the HTML

Before

html
<main>
  <p class="page-title">Cold Brew at Home</p>
  <h2>What you need</h2>
</main>

After

html
<main>
  <h1>Cold Brew at Home: A Beginner's Guide</h1>
  <h2>What you need</h2>
</main>

Why it matters

Headings give a page its outline. The H1 sits at the top of that outline: it is the heading screen reader users jump to first, and it is the text Google often draws on when it rewrites a title link. A page whose most prominent text is styled as a heading but coded as a <p> or <div> looks fine to sighted visitors and says nothing to machines.

It is rarely the only thing wrong. A page with no H1 often has headings in the wrong order below it too, because the template never set up the structure in the first place.

Why WordPress pages lose their H1

In most themes the post or page title is printed as the H1 by the template, not by you in the editor. So a missing H1 usually comes from the template or a setting:

  • "Hide title" options. Many themes and page builders have a per-page switch to hide the title. It is popular on landing pages and homepages, and it removes the H1 entirely rather than just visually.
  • Page builder layouts. Elementor, Divi and similar builders let you set the HTML tag of every heading. A hero heading built at H2 (Elementor's Heading widget defaults to H2) plus a hidden theme title leaves the page with no H1.
  • Homepages and archives. Some themes print the site name as the H1 only on the homepage and use H2 for archive titles, or show a static front page with no title at all.
  • Block theme templates. In a block theme, the Post Title and Query Title blocks have a heading level setting. If a template sets it to H2 or a paragraph, every page using that template loses its H1.

How to fix it in WordPress

  1. Find out which pages are affected. View source and search for <h1. Check a post, a page, the homepage and an archive, since they use different templates.
  2. If you hid the title, add an H1 back. Either turn the theme's title back on, or make your hero heading an H1. In Elementor or Divi, select the heading and change its HTML tag to H1. Keep one per page.
  3. In a block theme, open Appearance → Editor, edit the affected template, select the Post Title (or Query Title) block, and set its level to H1.
  4. In a classic theme, the heading level is in the template file, often single.php, page.php or a template part. Change it in a child theme so updates do not overwrite it.
  5. Write headings in content starting at H2. In the block editor the post title is already the H1, so headings you add in the content should begin at H2.

Hydrogen SEO does not change your theme's headings; it manages titles, metadata and schema. Its site health score rolls heading structure into the Content structure area, and the free SEO audit will show whether a URL now has exactly one H1.

How to check the fix

View the page source, or open your browser's developer tools and run document.querySelectorAll('h1') in the console to list every H1 on the page. You want exactly one, with text that matches the page's topic. Purge your page cache first. If the H1 text differs a lot from the SEO title, that is fine, but they should describe the same thing.

Common questions

Does every page need an H1?

Every page you want people to find and understand should have one. It is a basic accessibility expectation and a clear topic signal. Utility pages like a cart may skip it without much cost.

Should the H1 be the same as the title tag?

They should describe the same topic, but they can differ. The title tag is written for search results, and the H1 is written for someone already on the page.

Can I hide the H1 with CSS?

Visually hiding a heading with an accessible technique is acceptable for screen readers, but hiding the main topic from sighted users usually signals a design problem. A visible H1 is the simpler answer.