Header tags and content structure
Heading tags aren't a font-size shortcut — <h1> through <h6> describe a page's actual outline, the same way a table of contents describes a book's. Search engines parse that structure directly, and it's become even more load-bearing now that AI answer engines lift content straight out of it.
One H1, describing the page's actual subject
<h1>Making HTTP requests in Python without the footguns</h1>A page should have exactly one <h1>, and it should describe what the page is about — not a generic site-wide phrase repeated everywhere. Multiple <h1> tags on one page don't directly cause a penalty, but they dilute the single clearest signal a search engine has for "this is what this specific page is."
H2-H6 as a real outline, not a style choice
<h1>Making HTTP requests in Python without the footguns</h1>
<h2>Installing it</h2>
<h2>A basic GET request</h2>
<h2>Query parameters, the right way</h2>
<h2>The default nobody expects: no timeout</h2>This is the real heading structure from a live tutorial. Notice every <h2> is a specific, descriptive statement — "The default nobody expects: no timeout" — not a vague label like "Section 4." That specificity matters twice over: it tells a search engine exactly what that section covers without needing to read the paragraph beneath it, and it's independently readable as a standalone answer to someone scanning search results or an AI-generated summary.
Why this exact structure feeds AI-generated answers directly
{
"@type": "HowTo",
"step": [
{ "@type": "HowToStep", "name": "Installing it" },
{ "@type": "HowToStep", "name": "A basic GET request" },
{ "@type": "HowToStep", "name": "Query parameters, the right way" },
{ "@type": "HowToStep", "name": "The default nobody expects: no timeout" }
]
}This is a real, live example: this exact site auto-generates a HowTo structured-data block (covered fully in part 11) directly from a page's own <h2> headings — every tutorial's heading structure becomes machine-readable step data automatically, with zero manual duplication. This is a direct, concrete instance of why heading discipline is genuinely part of AI SEO now (part 19 goes deeper): a well-structured heading outline isn't just readable to a person skimming, it's the literal source material several categories of tooling — from this site's own schema generation to an AI system summarizing a page — parse directly.
Skipping levels breaks the outline
<!-- Wrong: jumps from h2 straight to h4 -->
<h2>Setting up the project</h2>
<h4>Installing dependencies</h4>
<!-- Right: no skipped level -->
<h2>Setting up the project</h2>
<h3>Installing dependencies</h3>Skipping from <h2> to <h4> with no <h3> in between doesn't just look inconsistent — it breaks the parent-child relationship the outline is supposed to express. A screen reader user navigating by heading level experiences this directly as a confusing jump; a search engine parsing the same structure loses the same signal about which content is a subsection of what.
Choosing a heading level by what font size looks right visually, rather than what the actual content hierarchy is. If an <h3> needs to look bigger for a specific layout, that's a CSS problem — solve it with CSS, not by mislabeling the semantic structure to get a visual result.
Next: the URL itself — often the very first thing both a searcher and a search engine sees about a page, before any content loads at all.