Multiple H1 tags
What this means
Section titled “What this means”Your page has more than one <h1> tag. Multiple H1s make it ambiguous which heading represents the page’s primary topic. Google can pick any of them, and the result is a weaker relevance signal than a single, clear H1 would produce.
The fix is straightforward: keep one, demote the rest.
How to fix it
Section titled “How to fix it”Identify which H1 most accurately states the page’s main topic and keep it. Change all others to <h2>, or to whatever heading level fits correctly in the document hierarchy.
Before:
<h1>Our Products</h1><p>Browse our catalogue of enterprise tools.</p><h1>Featured This Month</h1>After:
<h1>Our Products</h1><p>Browse our catalogue of enterprise tools.</p><h2>Featured This Month</h2>The most common cause is a layout or shared component rendering an H1 alongside a page-level H1. Check your layout files first.
Next.js App Router
Section titled “Next.js App Router”If your root layout contains an H1, remove it — only individual pages should declare an H1:
// app/layout.tsx — do not put an H1 hereexport default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en-GB"> <body> <nav>...</nav> {/* No <h1> in the layout */} {children} </body> </html> )}The same applies to Nuxt layouts:
<template> <div> <AppHeader /> <!-- No <h1> in the layout --> <slot /> </div></template>SvelteKit
Section titled “SvelteKit”Check src/routes/+layout.svelte for any H1 that would render on every page:
<nav>...</nav><!-- No <h1> here --><slot />Verify the fix
Section titled “Verify the fix”Run this in the browser console to count H1s on the current page:
document.querySelectorAll('h1').lengthThe result should be 1. Then re-run the audit to confirm:
npx orino audit https://yourdomain.com