What the heading checker does
Headings are a page's table of contents. Screen reader users jump from heading to heading to scan a page, and search engines read headings as one of the signals that describe what a page and its sections are about. This tool finds the h1–h6 elements in the HTML you paste, lists the level and text of each one, and indents them like an outline so the structure is visible at a glance.
Editors check an article's skeleton before publishing, developers confirm what a theme template outputs and SEO specialists compare pages during audits. The result is a list of things to review, not a score.
How to use
- Open the page, view its source (
Ctrl+U) or copy the relevant element from your browser's developer tools. - Paste the code into the text area. The result refreshes shortly after you stop typing, so there is no button to press.
- The counters show the total number of headings and how they are spread across levels; yellow boxes summarise page-wide findings.
- Review the outline table: position, level, indented text and any note for each heading.
- Copy the outline as plain text or download it with the notes as CSV. The text language sets the case rules for duplicate detection.
To check the rendered page rather than the initial source, copy the <body> element from the Elements panel instead; headings inserted by JavaScript are then part of the markup you paste.
H1–H6 order
Headings are read in source order, not by how large they look. The text of each heading is collected without its inner tags: character references such as & are decoded, <br> becomes a space, runs of whitespace collapse to one space and the text is normalised to Unicode NFC. Content of script and style is ignored. If a heading contains only an image, its alt text is used and a note says so.
The rules are: a page-wide warning when there are no headings or no H1; a note when the first heading is not the H1; an empty-heading warning when no text remains; a hidden-heading note when the heading or one of its ancestors carries hidden, aria-hidden="true", inline display:none or visibility:hidden, or sits inside noscript; and a duplicate note when the same text appears again. Duplicates are compared case-insensitively using the selected language.
Interpreting skipped levels
When a heading is more than one level deeper than the previous one, for example an H3 right after the H1, the checker reports the level that was skipped. Moving back up is fine: starting a new section with an H2 after an H4 is not a problem.
Skips usually come from choosing a level for its font size; use the correct level and style it with CSS. Sidebars or footers may follow a deliberate structure, so read the warning in context.
Multiple H1 headings and context
The HTML standard does not forbid more than one H1, and several H1s are not a search penalty on their own. A single H1 that names the main topic is still the clearest structure for readers and assistive technology, so the checker shows multiple H1s as a contextual warning rather than an error. An H1 wrapped around a logo, headings inside modal dialogs or template duplicates are the typical cases worth a second look.
Example and interpretation
The Load example button analyses this Turkish sample:
<h1>Kahve Demleme Rehberi</h1>
<h2>Ekipman & Hazırlık</h2>
<h4>Öğütücü seçimi</h4>
<h2></h2>
<h3 hidden>Eski yöntem</h3>The second heading appears as Ekipman & Hazırlık because the reference is decoded. The third line jumps from H2 to H4, so the note says H3 was skipped; the fourth heading gets an empty-heading warning and the H3 with the hidden attribute is marked as hidden. The copied outline starts with H1 Kahve Demleme Rehberi and indents each deeper level by two spaces. These notes point to candidates for a fix; they do not mean the page is broken.
Limits and privacy
- The HTML is read in your browser as plain text by a small string tokenizer and is never turned into page elements: scripts do not run, images, iframes and stylesheets are not loaded and the pasted code cannot start a network request. Nothing is sent to a server.
- Headings hidden by external CSS, headings inside shadow DOM and headings added by JavaScript after load cannot be known; only attribute-level hiding is visible.
- Non-heading elements marked with
role="heading"are not counted. The tool is not a full accessibility audit, a visual hierarchy measurement or an SEO score. - Up to 1 MiB of HTML and 5,000 headings are processed. Your input is added to a share link only if you opt in and it is at most 6,000 characters.
Frequently asked questions
Is using more than one H1 an SEO mistake?
Not by itself; HTML allows it. The checker still warns because one clear main heading is the easier structure to follow on most pages.
What should I do when an H4 follows an H2?
Change it to an H3 and style it with CSS. Picking a level for its font size is the most common cause of skipped levels.
Can I check a page by entering its URL?
No. The tool makes no network requests and only inspects the HTML you paste. Copy the source from your browser and paste it in.
Why is a heading reported as hidden?
It, or an element around it, carries hidden, aria-hidden="true", inline display:none or visibility:hidden. Hiding done in external CSS cannot be detected.
Will scripts in the pasted code run?
No. The code is only scanned as text and never turned into page elements; scripts do not execute, images do not load and results are shown as plain text only.