TapCub is live — analytics, insights and live chat, free on one platform

Free tool H1 checker and heading checker: see a page's H1–H6 outline

Paste the HTML of a page and get its heading outline as a tree: every h1 to h6 in document order, with the line it sits on. Skipped levels, empty headings and extra H1s are flagged, each with the rule behind it and an honest note on how much it matters for search versus for screen-reader users.

  • Outline as a tree
  • H1–H6 and role="heading"
  • Runs locally
Checker

Check the heading outline

Paste the page source (View source → Select all → Copy) or just the article HTML. The outline updates as you type. Nothing is fetched or uploaded.

A full page or a fragment. Text inside images counts only through their alt text, the same way a screen reader reads it.

Headings

7

h1–h6 plus elements with role="heading".

H1 headings

1

Skipped levels

1

A heading more than one level deeper than the one before it.

Empty headings

1

No text and no image alt text.

Outline

Indented by level, in document order. The number on the right is the line in your HTML.

  1. H1How to speed up your online store24
  2. H2Measure first26
  3. H4Which numbers to watchskipped level28
  4. H2Compress your images30
  5. H3(empty)empty35
  6. H2Remove unused scripts36
  7. H2Comments42

Checks

Errors and warnings first. "Note" items are context, not problems.

  • ErrorLine 35Empty <h3>. Screen readers announce "heading level" with nothing after it. Add text or remove the element.
  • WarningLine 28h2 is followed by h4 ("Which numbers to watch"), skipping h3. The HTML standard requires each heading to be at most one level deeper than the previous one.
  • OKOne H1: "How to speed up your online store".
Outline as text
H1  How to speed up your online store
  H2  Measure first
      H4  Which numbers to watch
  H2  Compress your images
    H3  (empty)
  H2  Remove unused scripts
  H2  Comments

Paste into a brief, a ticket or a content audit sheet.

Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Version v1.0Updated Update history

Read the result

Which findings matter, and to whom

Headings serve two audiences: people scanning the page, including screen-reader users who jump from heading to heading, and search engines working out what each section is about. The two care about different things.

Skipped levels

An h2 followed directly by an h4. The HTML standard treats this as non-conforming, and screen-reader users lose the sense of which section the h4 belongs to. Google says heading order does not matter to it, so fix skips for people, not for rankings.

Empty headings

Usually a leftover from a page builder or a heading used as a spacer. A screen reader still announces it. This is the one finding worth fixing everywhere.

Multiple H1s

Allowed by the HTML standard and neutral for Google. Treat it as a style choice: a single H1 that matches the page title keeps the outline tidy and makes "what is this page" obvious.

Hidden and image-only headings

Headings inside hidden menus or carousels, and headings that are just a logo image. Check that the visible outline still makes sense without them.

Google's SEO starter guide lists the number and order of headings under things not to focus on: semantic order is "fantastic for screen readers", but for Google Search "it doesn't matter if you're using them out of order". This tool flags skips because of the HTML standard and accessibility, and says so.

How to use it

Check a page in under a minute

Works on drafts from your CMS and on live pages.

  1. 1

    Copy the HTML

    On a live page, open View source (Ctrl+U or ⌘⌥U) and copy everything. For a draft, copy the HTML view from your editor.

  2. 2

    Paste it in

    The outline appears straight away. Line numbers point back to your HTML so you can find each heading.

  3. 3

    Read the outline like a table of contents

    Does it read as a sensible summary of the page? Are there headings that are really styling, such as "Free shipping" banners marked up as h2?

  4. 4

    Fix and paste again

    Change skipped levels, fill or remove empty headings, then re-check. Copy the text outline into your content brief if you need to share it.

Rules

What counts as a heading, and what counts as a skip

The tool follows the WHATWG HTML Living Standard, section "Headings and outlines". The old "outline algorithm" based on section elements was removed from the standard, so a <section> does not change a heading's level; only the tag number does.

  • Headings are h1–h6 in document order, plus any element with role="heading" (level from aria-level, default 2, as in WAI-ARIA)
  • A skip is a heading whose level is more than one higher than the heading right before it: h2 → h4 is a skip, h4 → h2 is not
  • Heading text is the text inside it plus the alt text of any images, with spaces collapsed
  • In <hgroup>, only the h1–h6 is a heading; the <p> next to it is a subtitle and is ignored
Examples
SequenceResultWhy
h1 → h2 → h3 → h2OKEach step is at most one level deeper
h1 → h2 → h4Skiph4 is two levels below h2; the standard requires h3 first
h1 → h3 (inside <section>)SkipThe example the HTML standard itself gives as non-conforming
h2 first, no h1WarningThe standard says at least one heading should be level 1
h1 → h2 → h1 → h2OK (note)Several h1s are allowed
Worked example

The example page, checked

The default HTML is a blog post about store speed with a few typical problems mixed in.

Headings in the example page
LineHeadingFinding
24H1 How to speed up your online storeOK, the only H1
26H2 Measure firstOK
28H4 Which numbers to watchSkip: h2 → h4, h3 missing
30H2 Compress your imagesOK
36H3 (empty)Error: empty heading
36H2 Remove unused scriptsOK
42H2 CommentsOK

Fixes: change the h4 to h3 and delete the empty h3. The outline then reads as one title with four sections. The same HTML is used on the link extractor, alt text checker, text to code ratio and HTML validator pages, so you can compare the findings.

Common mistakes

How heading structure usually goes wrong

Most problems come from choosing heading tags for their look instead of their meaning.

Picking a tag for its font size

Using h4 because it "looks right" in the theme creates skips. Pick the level from the structure and change the size in CSS.

Headings in the template

Sidebar widgets, footers and newsletter boxes marked up as h2 or h3 appear in every page's outline. Use a heading only where it introduces a section of content.

Empty or hidden headings

Page builders leave empty heading blocks behind, and carousels hide headings until a slide shows. Both clutter heading navigation.

Chasing a magic H1 rule

Neither the HTML standard nor Google requires exactly one H1. A clear, single H1 is a good habit; deleting a legitimate second one for "SEO" is wasted effort.

FAQ

Heading checker questions

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

What is an H1 tag, and how do I check a page's headings?

The h1 element is the top-level heading in HTML, usually the page's main title; h2 to h6 are the subheadings under it. To check them, open the page, view its source (Ctrl+U in most browsers), copy all of it and paste it into the box above. The checker lists every h1–h6 in order as an indented outline, with the line number of each one.

Can a page have more than one H1?

Yes. The HTML standard allows several H1 elements, and Google says the number of headings does not matter for search. Many sites keep one H1 as the page title because it makes the structure clearer for readers and screen-reader users, but a second H1 is not an error.

Does skipping heading levels hurt SEO?

Google says no: its SEO starter guide says heading order does not matter for Google Search. Skips do break the HTML standard's rule that each heading is at most one level deeper than the previous one, and they confuse screen-reader users, so they are still worth fixing.

Does a section element reset the heading level?

No. That idea came from the old document outline algorithm, which was removed from the HTML standard and never implemented by browsers or screen readers. A heading's level comes from its tag (h1–h6) or its aria-level.

Why does my page builder's heading show as empty?

The element exists in the HTML but has no text, often a leftover block or a heading used for spacing. Screen readers still announce it. Delete it or give it real text.

Can it check a URL instead of pasted HTML?

Not yet. This version reads only what you paste, so it works on drafts, staging pages and pages behind a login. Pasting the source also shows exactly what the server sends; headings added later by JavaScript only appear if you copy the rendered HTML from your browser's developer tools.

How is this different from the HTML validator?

The HTML validator checks the markup as a whole: unclosed tags, duplicate ids, missing lang and alt. This tool looks only at headings and shows them as an outline. Use both on the same paste.

Is my HTML uploaded?

No. Parsing runs in your browser with a small parser built into the page. Nothing is sent to TapCub, stored, or added to the page address.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · v1.0

    LaunchedFirst release.

Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics