Technical SEO

H1 Checker: 4 Ways to Check H1 Tags on Any Page

By Published 7 min read

To check a page's H1, paste the URL into our free Heading Analyzer. It extracts every heading on the page, shows the full H1-H6 outline in order, and flags the two failures that actually matter: no H1 at all, and more than one. That covers 90% of why anyone reaches for an H1 checker.

The other 10% is checking pages you can't paste into a tool (staging sites behind auth, local builds) or checking a hundred pages at once. So here are all four methods, what a healthy result looks like, and, because most H1 advice online is a decade stale, which "failures" are worth fixing versus which are checker theater.

Method 1: a heading checker tool

The Heading Analyzer fetches the page the way a crawler does and lists the heading structure as an indented outline. You're reading it for three things: exactly one H1, an H1 that actually describes the page (not "Welcome" or the company name), and levels that descend without skipping, H2s under the H1, H3s under H2s.

Because it fetches the raw HTML, it sees what a search engine's first pass sees. Which leads to the one caveat: if your site renders headings client-side with JavaScript, the raw-HTML view may differ from what a user's browser eventually shows. Google does render JavaScript, but if your H1 only exists post-render, you're depending on that second, slower pipeline. Worth knowing your framework's behavior here; server-rendered and static sites don't have this gap.

Method 2: view source and Ctrl+F

Zero tools: open the page, hit Ctrl+U (view source), then Ctrl+F for <h1. The match count is your H1 count. One match: good. Zero or several: keep reading below.

This is also the honest check for the JavaScript question above. If Ctrl+F finds no <h1 in view-source but you can see a big headline on the page, that headline is either injected by JavaScript or, worse, it's a styled <div>, which is not a heading at all no matter how large the font is. Search engines read the tag, not the font size.

Method 3: the DevTools console one-liner

Open DevTools (F12), switch to Console, and run:

document.querySelectorAll("h1")

It returns every H1 in the rendered DOM, after JavaScript has run, with the count and each element expandable so you can see exactly which ones they are. This is the fastest way to locate a rogue second H1, which on most sites turns out to be hiding in a mobile menu, a modal, or a logo wrapper the theme developer marked up as <h1> on every page.

Comparing method 2 and method 3 on the same page is a complete diagnosis: view-source shows what's served, the console shows what's rendered, and any difference between them is your JavaScript rendering dependency, made visible.

Method 4: checking H1s across a whole site

For a template-driven site you rarely need to check every page, because pages built from the same template share the same heading skeleton. Check one page per template: homepage, one blog post, one category page, one product page. A template-level H1 bug (the logo-as-H1 classic) repeats on every page using that template, and fixing it once fixes it everywhere.

For a genuine full-site sweep, after a migration or on a site you've inherited, a desktop crawler (Screaming Frog's free tier handles 500 URLs) reports H1 presence, content, and duplication as columns you can sort. Sort by H1 count and look at the zeros and the twos; then sort by H1 text and look for the same H1 repeated across many URLs, which usually means a template is stamping identical H1s where each page should have its own.

What each failure actually means

| Finding | How much it matters | The fix | | --- | --- | --- | | No H1 | Real. The page gives up its clearest topical signal and its top-level document anchor. | Promote the main headline to <h1>. Every page has one obvious candidate. | | Multiple H1s | Moderate, and situational. HTML5 permits it; screen-reader navigation and clarity suffer. | Keep the one describing the page's content; demote the rest. The full multiple-H1 story. | | H1 is the site logo/brand on every page | Real. Every page claims the same topic: your name. | H1 goes to the page-specific headline; the logo becomes a <div> or <p>. | | H1 duplicates the title tag exactly | Fine. Common and harmless. | Nothing required. Diverge them only when you want the SERP title pitched differently than the on-page one. | | Skipped levels (H1 → H3) | Minor. Untidy outline, no meaningful ranking effect. | Fix during a redesign; don't ship a hotfix for it. | | Empty H1 (<h1></h1> or an image inside with no alt) | Real. Structurally present, semantically silent. | Put the headline text in the tag, or alt text on the image. |

Is the H1 a ranking factor, honestly?

Modest, and worth stating precisely, because H1 advice tends to come in either "H1 is everything" or "headings don't matter" flavors and both overshoot. Google's John Mueller has said directly that a page can rank without an H1 and that multiple H1s aren't a problem for Google. Headings, including the H1, help Google understand a page's structure and its sections' topics; they are not a lever that outranks better content.

So the reason to check H1s isn't a rankings cheat code. It's that the H1 is the cheapest clarity win on a page: one tag stating what the page is about, read by search engines for topical understanding, by screen readers for navigation, and by every skimming human before deciding to stay. When an H1 check fails, the fix takes minutes and removes ambiguity for all three audiences at once. That trade is worth ten seconds of checking on every page you care about; heading obsession beyond that has flat returns. The broader structural rules live in our heading structure guide.

Frequently Asked Questions

How do I check the H1 tag on a page?

Paste the URL into a free heading analyzer to see the full heading outline, or hit Ctrl+U on the page and search the source for <h1. For the post-JavaScript view, run document.querySelectorAll("h1") in the DevTools console, which returns every rendered H1 with its count.

Should a page have exactly one H1?

One is the convention worth following: it's unambiguous for search engines, and screen-reader users routinely navigate by jumping to the H1. HTML5 technically allows multiple H1s and Google states it handles them fine, so a second H1 isn't an emergency. It's just rarely better than a clean single-H1 outline.

Is the H1 tag a ranking factor?

A modest one. Headings help Google understand what a page and its sections are about, but Google's own staff have confirmed pages can rank without an H1. Treat the H1 as a clarity signal you'd be foolish to leave broken rather than a dial that moves positions on its own.

What's the difference between the H1 and the title tag?

The title tag lives in the page's <head> and shows in search results and browser tabs; the H1 is the visible headline on the page itself. They can match word for word, and often do. Search engines read both, and when Google rewrites a title in the results, the H1 is one of the main places it pulls from.

Why does my page have two H1s I never wrote?

Almost always the theme. Site builders and older themes commonly wrap the logo or site name in an <h1> on every page, which then coexists with your content headline. The DevTools console method finds it in seconds: run document.querySelectorAll("h1"), expand the results, and the wrapper element's class names point you at the template file to fix.

Related Guides

Put this knowledge into action

Analyze your website with our free SEO tool and get instant recommendations.

Analyze Your Website