Skip to main content
All fixes

SEO, schema, meta tags

Fix Multiple H1 Tags: Use One H1 Per Page

Multiple H1 elements dilute the page's primary topic signal. Use exactly one <h1> matching the user query, with H2s for sections and H3s for subsections.

What's happening

The element is the page's primary heading — the explicit signal to crawlers and screen readers about the page's main topic. The HTML5 spec technically allows multiple H1s when they are nested inside or elements with the document outline algorithm, but in practice no major browser or screen reader implements that algorithm. Both Google and accessibility tooling treat H1s as a flat document-level heading.

Pages with multiple H1s — common on WordPress themes that use H1 for both the site logo and the post title, or on app dashboards that put H1 on every card — split the topical signal. Google may pick any of them as the primary topic, and the choice is not always the one you want for ranking.

Search Console's Page Experience reports do not flag multiple H1s directly, but accessibility audits like axe-core and Lighthouse will. Lighthouse's SEO category checks for exactly one H1 per page and flags violations.

Why it matters

Topical relevance dilution. A page with H1: 'Best Espresso Machines' and another H1: 'Brewbar - Coffee Reviews' tells Google two different things. The keyword-targeted H1 may not win, and the page can rank for a less competitive query than intended.

Accessibility regression. Screen reader users navigate pages by heading structure. Multiple H1s break the expected outline — a user expects 'Press H to jump to next section heading' to move within the same logical page, not jump back to a sibling-level heading.

Featured snippet eligibility drops. Google's featured snippet picker prefers pages with a clear topic structure: one H1 stating the question or topic, H2s for sub-questions, H3s for finer details. Multiple H1s confuse this hierarchy.

Common causes

  • WordPress theme uses H1 for the site logo on every page.
  • Hero section component and the article header both render H1.
  • App dashboards put H1 on every widget or card.
  • A migration converted a different heading level to H1 site-wide.
  • Component library defaults to H1 for any large heading component without checking page context.
  • Author copy-pasted a headline block that included an H1 inside the body content.

Detect this on your site

Run a quick scan with the SEO Auditor. The tool surfaces this exact issue with the records and context needed to apply the fix below.

Open SEO Auditor

How to fix it

  1. 1

    Count H1s per page

    Crawl the site and report the H1 count per URL. Anything above 1 needs attention. The SEO Auditor's heading hierarchy view shows the H1 text for each occurrence so you can identify which ones are stray.

  2. 2

    Demote logo and chrome H1s

    Site logos and persistent navigation elements should not be H1. Use for the logo without wrapping it in a heading. Wrap the company name in a or if you need text styling.

  3. 3

    Pick the canonical H1

    The single H1 should describe the page's main topic in user-intent language and ideally match or closely paraphrase the page. For an article, that is the article headline. For a product, it is the product name.

  4. 4

    Convert remaining headings to H2/H3

    Section headings inside the page become H2s. Sub-sections within a section become H3s. Do not skip levels (do not jump from H1 to H4) — both screen readers and Google's content extraction assume a continuous outline.

  5. 5

    Update component conventions

    Audit your design system. Heading components should accept a level prop (as="h1" | "h2" |...) rather than rendering a fixed level. Document that there must be exactly one H1 per page in your component guidelines.

  6. 6

    Re-test with Lighthouse

    Run Lighthouse's SEO audit. The 'Document does not have multiple H1 tags' check should pass. axe-core in DevTools also flags multiple H1s under heading-order rules.

Example

<!-- WRONG -->
<header>
  <h1>Brewbar</h1>
</header>
<main>
  <h1>Best Espresso Machines</h1>
</main>

<!-- RIGHT -->
<header>
  <a href="/"><img src="/logo.svg" alt="Brewbar" /></a>
</header>
<main>
  <h1>Best Espresso Machines</h1>
  <h2>Top Picks Under $500</h2>
</main>

Logo as image, single H1 in main content

Frequently asked

Google has stated multiple H1s do not directly hurt ranking but they dilute the topical signal and can cause Google to pick a different H1 than you intended. It also fails Lighthouse's SEO audit.

The HTML5 spec allows multiple H1s with the document outline algorithm using and but no browser or screen reader implements that algorithm. In practice use exactly one H1 per page.

The H1 and should communicate the same primary topic but they do not need to be byte-identical. The title is optimized for the SERP listing (with brand suffix keyword front-loaded); the H1 is optimized for on-page reading.

Related fixes