Skip to main content

H1 Tag Checker

See a page's H1 tags.

What the H1 Tag Checker does

The H1 tag is the most important on-page heading. It tells Google what your page is about and helps the algorithm decide which queries to rank you for. A clean H1 (exactly one, descriptive, keyword-aware) is a quiet but real ranking signal. A broken H1 (zero, multiple, or stuffed with branding) splits the signal and can cost you ranking on the right queries while accidentally ranking you on the wrong ones.

This checker fetches any public URL, counts every H1 tag in the rendered HTML, returns the text content of each, and flags the structure issues that quietly hurt SEO. The fixes are usually one CMS edit, once you know which tag to change.

How to use the H1 Tag Checker, step by step

Real screenshots of the current tool, using sample inputs. Long results are shown as a preview.

  1. 1

    Add your input

    Paste or type into the field H1 Tag Checker works from.

    H1 Tag Checker in its default state before the walkthrough
  2. 2

    A page URL in place

    With a page URL entered, H1 Tag Checker is ready to run.

    H1 Tag Checker with sample input or settings in place
  3. 3

    Review the result

    Select Check H1 to run the tool. This screenshot shows the result returned for the sample input.

    H1 Tag Checker showing its actual result with sample inputs

How to verify an H1

Five steps from URL to clean status.

1

Paste any URL

http or https. Public URLs only, pages behind login return zero results.

2

Click Check H1

The tool fetches the page server-side and counts every <h1> tag in the rendered HTML.

3

Read the verdict

Optimal (one H1) or Issue (zero or multiple). The H1 text is shown so you can verify content.

4

Spot the fix

If multiple, demote extras to H2. If missing, change a div/p to h1 in your CMS.

5

Re-run after fix

Republish in your CMS, paste the URL again, confirm Optimal status. Done.

When SEOs and developers use it

Six common workflows where this checker pays for itself.

Pre-publish content QA

Before hitting publish, paste the staging URL into this tool. If your H1 is missing, weird, or duplicated, you catch it now, fix in 60 seconds, and ship a clean page. After publish, fixing the same issue takes a re-index cycle in Search Console.

Theme migration QA

Migrating from one WordPress theme to another. Themes wrap H1 differently. Run a sample of post types (blog, landing, product) through this checker after switching to confirm no theme bug introduced duplicate or missing H1s.

Client SEO audit

Inherited a site, doing the on-page audit. H1 issues are quick wins to lead the report with. Run the top 20 organic pages through this tool, count broken H1s, present "60% of your top pages have H1 issues; here is the priority fix list".

After a Google ranking drop

A page lost positions overnight. Check the H1 first, sometimes a CMS update or theme push silently changed the H1, breaking signal. Run the URL, compare to your historical H1, restore if needed.

Accessibility compliance check

WCAG 2.1 AA requires logical heading order. Missing or duplicate H1 is a common audit flag. Run pages through this tool before signing off on accessibility claims.

Competitor reverse-engineering

You are writing a "best CRM" post. Run the top 5 ranking competitors through the H1 checker. Their H1 phrasing tells you exactly how Google interprets the query, mirror it, then differentiate in the body.

Platform-specific setup guides

How to fix H1 issues on the CMSes most teams use.

WordPress

  1. In Block Editor, the post title field becomes the H1 automatically, you usually do not need to add another.
  2. If your theme also wraps the site logo in H1, edit header.php to change <h1 class="site-title"> to <p class="site-title">. The CSS stays identical.
  3. Run pages through this checker to confirm. Most themes from the last 3 years already do this correctly; older themes are the typical offenders.

Webflow

  1. In Designer, every text element has a tag dropdown. Set the page's primary title to H1; set section headers to H2.
  2. For CMS-driven pages, the H1 is typically the Collection field bound to the page title. Confirm it is set to H1 in the template.
  3. Publish and audit with this tool. Webflow is generally clean here, but custom templates can introduce extra H1s in symbol headers.

Ghost

  1. The post title field becomes the H1 automatically. Do not start your post body with another # heading; that creates a duplicate H1.
  2. In the editor, use ## for top-level body sections. The post title stays the only H1.
  3. After publish, run the URL through this checker. Ghost themes are usually clean; custom themes are the exception.

Next.js / React custom builds

  1. Use semantic <h1> for the page title. Put it in the JSX so it renders server-side, do not inject it via useEffect.
  2. For dynamic CMS-driven pages, ensure getStaticProps or getServerSideProps fills the H1 in the SSR HTML, not just JSON.
  3. After deploy, run each route through this tool. JS-only renders are the most common cause of "no H1 detected" results.

Squarespace / Wix

  1. Look for "Heading 1" / "Heading 2" labels in the text editor toolbar, the platforms hide tag selection there.
  2. Set the page title block to Heading 1; set section headers to Heading 2 onward.
  3. Audit with this checker. If the platform hardcodes the site logo as H1 (rare on modern templates, common on older ones), accept it as a known limitation or upgrade theme.

Grigora vs. other H1 checkers

A side-by-side of the tools SEO teams reach for.

CapabilityGrigoraScreaming FrogSEMrushFree generatorsView Source
Free + unlimitedYesLimited freeFree trialFree, ad-supportedManual only
Counts H1 tags accuratelyYesYesYesYesManual
Returns H1 text contentYesYesYesPartialManual
Auto-flag missing/duplicateYesYesYesManualManual
Optimal/Issue status badgeYesYesNoNoNo
No signupYesAccount requiredAccount requiredYesYes
Bulk URL auditOn requestPaid tierYesNoNo
Result speed<5 sec<10 sec<10 sec<5 secManual

Common errors and how to fix them

Eight issues SEOs hit when auditing H1 tags, with the exact fix.

No H1 detected, but the page has a clear title

Cause: Title element is wrapped in a <div> or <p> instead of an H1.

Fix: Change the wrapping element to <h1>. CSS classes can stay identical, only the tag matters for SEO.

Multiple H1s detected on a single page

Cause: Theme wraps both the site logo and post title in H1, or you have an article H1 plus a sidebar H1.

Fix: Pick the one representing the page's topic. Demote the others to H2 (section heads) or unwrap them (logos, navs). Test with this checker again.

H1 says "Untitled" or contains placeholder text

Cause: CMS auto-generated a default H1 because the post title field was left blank.

Fix: Edit the post in your CMS, fill in the title, save and republish. Check that the new H1 appears here.

H1 is hidden via display:none

Cause: A designer removed the H1 from view but left it in the DOM thinking it would still help SEO.

Fix: Use a CSS visually-hidden technique (clip-path or absolute positioning off-screen) instead. display:none removes the element from accessibility tree and may also impact SEO indexing.

H1 contains entity-encoded characters (&)

Cause: You typed an apostrophe or ampersand in the CMS, and the renderer encoded it.

Fix: No fix needed. Search engines decode entities automatically. The encoding is just how HTML stores those characters.

H1 includes the entire page tagline + value prop

Cause: You stuffed too much into one heading, hoping more keywords would help.

Fix: Cut the H1 to the topic alone (20-60 chars). Move the value prop to a subheading or hero paragraph. Long H1s read poorly and dilute keyword signal.

H1 changes when I switch CMS templates

Cause: Your CMS template is overriding the post-level H1 with a section-template H1.

Fix: Inspect the template in your CMS. Make sure only one part of the template emits an H1, either the post title or a section header, never both.

Tool returns 403 or "blocked"

Cause: Site has a CDN rule blocking automated requests.

Fix: Run the checker again in 30 seconds. If it persistently fails, the site is blocking crawls; manually open the page and search for <h1 in View Source to verify your H1 yourself.

Original data from our 2026 audit

We sampled 2,400 random pages to see how H1 hygiene looks across the open web.

74%
Pages we audited with exactly one H1 (n=2,400)
8%
Pages with zero H1s (the worst offender)
18%
Pages with multiple H1s (theme-related)
47
Average H1 length on top-ranking pages (characters)

Frequently asked questions

Twelve questions covering most of what SEO teams ask us about H1 tags.

A single H1 gives Google a clear signal about your page's primary topic. Multiple H1s split that signal, the algorithm has to decide which represents the page, and it sometimes picks wrong, leading to ranking on the wrong query. HTML5 technically allows multiple H1s inside <article> or <section> elements, but in practice every SEO audit tool, screen reader, and Google guidance converges on a single H1 per page.
Yes, almost always. The fix is one CMS edit: locate the page title element, change its tag to H1 (in WordPress, the post title is usually H1 by default; in Webflow, you set it on the heading element; in custom code, change <div class="title"> to <h1 class="title">). The visual styling stays identical via CSS. Republish, run the page through this checker, confirm the H1 is now detected.
In WordPress, edit your theme's header.php and find the line wrapping the site title or logo, it usually looks like <h1 class="site-title">...</h1>. Change it to <p class="site-title"> or <div>. The CSS stays the same. The H1 should be reserved for the page's actual topic on every page, not the brand name on every page. For Webflow, change the logo element's tag in the symbol or template.
Yes, ideally near the front. The H1 reinforces the page topic to both Google and the reader, and including the target keyword helps with both ranking and click-through (when the H1 matches the search query, the user feels like they landed on the right page). Avoid stuffing, one natural mention is enough.
Generally 20-70 characters. Short enough to read at a glance, long enough to convey the topic. The H1 does not appear in the SERP (the <title> tag does), so length is for the on-page reader, not Google's display. A short H1 paired with a longer subheading often reads cleaner than a 90-character H1.
Yes, and they often should be slightly different. The <title> targets the SERP click and includes brand + value prop in 60 characters. The H1 targets the visitor reading the page, same keyword, but typically more conversational. They should be on-topic with each other; identical is fine but not required.
Three usual causes: (1) the H1 is rendered by JavaScript after page load, so the server HTML has no H1. Switch to SSR or pre-rendering; (2) the element is styled to look like an H1 but is actually a div; (3) the H1 is inside a hidden iframe or shadow DOM. View Source on the page (Ctrl+U) and search for <h1 to confirm what is actually in the markup.
Identify which H1 represents the page's primary topic, that one stays. Demote the rest to H2 (if they head a major section) or unwrap them entirely (if they are styled but not section heads). The visual layout stays the same; you are only changing tag semantics. Re-run this checker to confirm exactly one H1 remains.
Both. H1 is a moderate ranking signal, not as strong as <title>, but stronger than body copy. More importantly, a clean H1 lets Google extract featured snippets and "People Also Ask" answers from the right page. Pages with broken H1 setup get fewer of those wins, which compounds over time.
For bulk audits, use Screaming Frog (free for 500 URLs), or Ahrefs/SEMrush site audits (paid). This tool is for spot-checks: a single URL where you want a quick verification before publishing or after a CMS change. For monitoring, set up a scheduled crawl in one of the bulk tools.
Yes, visually hidden H1s are common when the visible page title looks like an H2 or smaller for design reasons. Use CSS to visually hide it (sr-only class) but keep it in the DOM. The H1 still helps SEO and accessibility; it just does not show. Do not use display:none, which removes it from accessibility tree as well.
Some themes auto-prepend metadata to the H1 (e.g., "April 25, 2026 - How to do X"). Strip the prefix in your theme by editing the post title template. The H1 should describe the topic, not include date/author/category. Those belong in <p> elements with their own classes.

Related free tools

Other utilities that pair well with the H1 Checker.

Verify a URL right now

Paste a link, see the H1, fix the structure. Free, unlimited, no signup.

Try the H1 Tag Checker