On-page SEO · Heading structure
H1 Tag Checker
The <h1> tag tells search engines and screen readers: this is the primary topic of this page. Missing or muddled H1s cost you rankings and accessibility score. Paste your URL and we check for missing, empty, or problematic H1 tags, then stamp CLEARED / HOLD / DENIED.
H1 issues we catch
These are common on JS-heavy SPA shells, template-based sites, and pages where the logo image replaced the heading.
No <h1> found on the page
Without a clear H1, crawlers and users lack a primary topic anchor. Common on React/Vue shells that render headings client-side, or templates that use a logo image instead of text.
Empty <h1></h1> tags
The tag exists but has no text content — often a hydration bug or a template variable that resolves to an empty string. Same SEO impact as missing entirely.
H1 rendered as an image
Some templates use <h1><img src='logo.png'></h1>. Search engines can't read the image text. Use a text H1 and visually style it instead.
Client-side rendered H1 not in initial HTML
If the H1 only appears after JavaScript hydration, crawlers that don't execute JS see an empty page. SSR or SSG solves this.
Multiple H1 tags with competing topics
Modern HTML permits more than one H1, but repeated page-level headings often signal a template problem. Keep one unambiguous primary topic unless the document structure genuinely requires otherwise.
Copy-paste H1 fixes
One clear, descriptive H1 per page — rendered in the initial HTML, not injected by JS.
Next.js page component
export default function Page() {
return (
<main>
<h1>Your product does X for Y</h1>
</main>
)
}Plain HTML
<main>
<h1>Your product does X for Y</h1>
<p>Supporting content goes here.</p>
</main>Server-rendered template (Thymeleaf)
<main>
<h1 th:text="${heroHeadline}">Your product does X for Y</h1>
</main>
Provide heroHeadline from the homepage controller.Still check by hand
- □Exactly one <h1> per page — not zero, not multiple
- □H1 must contain visible text (not just an image)
- □H1 should appear in the initial server-rendered HTML
- □Use H2-H6 for sub-sections, don't skip heading levels
Related
- Title tag checker — title and H1 should differ slightly
- Meta description checker
- Open Graph checker
- Website launch checklist
- Methodology
- Go-Live Clearance home