Use one H1 per page for the main title, then H2s for the main sections, and H3s only inside an H2. Don't skip levels, such as jumping from H1 to H3. That is the fix for every heading result the AEO checker can give.
What the headings are for
Headings are the outline of your page. Readers scan them to find what they need, screen readers let people jump between them, and search engines and AI tools use them as a clue to how the content is organized. A clear outline makes a page easier to read and easier to parse. It does not guarantee ranking or being cited.
If you are not sure how AEO fits next to regular SEO, see SEO, AEO and GEO: what is the difference.
The rules
- One H1. It is the page title. Make it describe the page.
- H2 for main sections. Each one covers one part of the topic.
- H3 for subsections inside an H2. Use H4 and below rarely.
- Don't skip levels. Go H1, H2, H3, not H1, H3.
- Choose by meaning, not size. If you want smaller text, change the styling. Don't swap the heading level.
- Write headings that say something. "Why robots.txt matters for AI crawlers" beats "More info".
- Don't use headings for decoration. Bold text is fine for emphasis that isn't a section title.
A good outline
<h1>How to check canonical tags</h1>
<h2>What a canonical tag does</h2>
<h2>How to find it on a page</h2>
<h3>In the page source</h3>
<h3>In browser developer tools</h3>
<h2>Common mistakes</h2>
Every level follows from the one above it. A reader, a screen reader and a crawler can all follow the structure without seeing the design.
A broken outline and its fix
Here is a page that triggers both warnings the checker can give for headings: two H1s and a skipped level.
<h1>Acme Blog</h1>
<h1>How to check canonical tags</h1>
<h2>What a canonical tag does</h2>
<h4>In the page source</h4>
<h2>Common mistakes</h2>
Two things are wrong. The site name is an H1 on top of the real title, and the H4 jumps over the H3 level. The fix changes two lines:
<p class="site-name">Acme Blog</p>
<h1>How to check canonical tags</h1>
<h2>What a canonical tag does</h2>
<h3>In the page source</h3>
<h2>Common mistakes</h2>
The site name becomes a normal element styled to look the same, and the H4 becomes an H3. The page looks identical. The outline is now correct.
H1 versus the title tag
The H1 is the heading readers see at the top of the page. The title tag is a separate piece of metadata. It shows in the browser tab and is what search results usually display as the clickable title. They should describe the same page, and they are often close or identical, but they do not have to match word for word. The title tag has length limits that the H1 does not, which is covered in what is the ideal title tag length for SEO.
Write headings that match real questions
A heading that mirrors a question a reader would ask tells people and tools exactly what the section answers. "How do I find the extra H1?" is clearer than "H1 issues". Follow the heading with a short, direct answer before any detail. This is the same approach covered in how to write answers AI tools can quote. It makes a section easier to understand and reuse. It does not guarantee anyone will quote it.
What the checker looks for
The AEO checker reports one of these:
- Pass: one H1 and no skipped levels. Nothing to do.
- Warning, skipped levels: for example an H2 followed by an H4. Add the missing level, or change the heading to the right level.
- Warning, more than one H1: two or more H1 tags on the page. Keep one, change the others to H2.
- Fail, no H1: the page has headings but no H1. Make the main title an H1.
- Fail, no headings: the page has no headings at all. Add an H1 and H2s that break up the content.
HTML allows more than one H1 in some situations, but one is the simplest and clearest, and it is what the checker expects.
Where the extra H1 usually comes from
The page content is rarely the cause. Look for:
- A logo or site name in the header coded as an H1 on every page.
- A page template that renders a title, plus a component that renders it again.
- A page builder that defaults every big text block to H1.
- A "hero" banner heading placed above the real title.
In a component-based site, check the layout, header and page components. Only one of them should output an H1. A typical case looks like this:
// Layout renders an H1 on every page
<header><h1>Acme Blog</h1></header>
// And the page renders its own
<main><h1>{post.title}</h1></main>
The fix is to change the layout's element to a paragraph or a link and leave the H1 to the page:
<header><p className="site-name">Acme Blog</p></header>
<main><h1>{post.title}</h1></main>
How to check
Count the H1s. Open your browser's developer tools, go to the Console, and run:
document.querySelectorAll('h1').length
The answer should be 1.
See the whole outline. Run this in the same Console to list every heading in order with its level:
console.table([...document.querySelectorAll('h1,h2,h3,h4,h5,h6')].map(h => ({ level: h.tagName, text: h.textContent.trim() })))
Read down the level column. If a level jumps by more than one, such as H2 followed by H4, you have a skipped level.
Or run the checker. The AEO checker reports the H1 count and skipped levels for any page you give it.
Common mistakes
- Using headings only to make text bigger.
- Starting a page with an H2 because the H1 style looked too large.
- Writing headings that are just keywords in a list.
- Making every section a different level for no reason.
- Leaving the page without any headings because the content is "short". Even a short page benefits from a clear H1.
Headings are one part of making a page clear to machines. Another is describing it with markup, which is covered in structured data for beginners: what to add first. If you want to check headings alongside everything else, work through the SEO audit checklist for a new site.
The short version
One H1 that names the page. H2s for the main sections. H3s only inside an H2. No skipped levels. Choose levels by meaning, not size, and write headings that say what the section covers. Count your H1s in the Console, then run the AEO checker to confirm.

Comments
No comments yet ā be the first.