Let's be honest — the first time you saw <h1> and <h2> tags in some tutorial, your eyes probably glazed over. That's fair. Most explanations make headings sound way more complicated than they are. So let's fix that.
What is a heading, really?
Think about a book. Every chapter has a title in big letters. That title tells you "hey, this is where a new chapter starts, and here's what it's about." A heading in HTML does the exact same job for a webpage.
HTML gives you six sizes to work with: <h1> through <h6>.
<h1>Biggest heading — the main title</h1>
<h2>A little smaller</h2>
<h3>Smaller still</h3>
<h4>Getting small</h4>
<h5>Pretty small</h5>
<h6>Tiny — barely used</h6>
Drop that into any HTML file and the browser automatically makes <h1> look huge and bold, and <h6> look small and plain. No CSS required. It just works out of the box.
Think of headings as an outline, not a font-size button
Here's the mental model that makes everything click: headings aren't about how big you want text to look. They're about structure. They're the outline of your page.
Remember outlining an essay in school?
I. Main Topic
A. Subtopic
1. Supporting detail
HTML headings map onto that exact idea:
<h1>— the title of the whole page (you really only want one of these)<h2>— your major sections<h3>— sub-sections that live inside an<h2><h4>through<h6>— deeper nesting, rarely needed unless your content is huge
Let's say you're writing a blog post about pizza. The heading structure might look like this:
<h1>The Ultimate Guide to Pizza</h1>
<h2>Types of Pizza</h2>
<h3>New York Style</h3>
<h3>Deep Dish</h3>
<h2>How to Make Pizza at Home</h2>
<h3>Making the Dough</h3>
<h3>Picking Toppings</h3>
<h2>Common Pizza Mistakes</h2>
Notice something? If you strip away all the actual paragraph text and just look at the headings, you basically get a table of contents for free. That's the whole point.
The mistake almost everyone makes
The most common slip-up is picking a heading tag based on how it looks, rather than what it means.
Someone writes a page, uses <h1> for the title, and then thinks "hmm, <h2> looks too big for this next bit," so they skip straight to <h4> because the font size seemed more "right."
<!-- Don't do this -->
<h1>My Travel Blog</h1>
<h4>Why I Loved Japan</h4>
That's a problem. Screen readers — the tools blind and low-vision users rely on to navigate a page — jump between headings to understand a page's structure. So do search engines like Google. When you skip from <h1> to <h4>, you're basically handing them a broken outline. It's like a book where Chapter 1 is followed by Chapter 4 with no explanation.
If you want smaller-looking text, that's what CSS is for:
<h2 style="font-size: 18px;">Why I Loved Japan</h2>
Now it looks smaller, but it's still correctly marked as a major section. Everyone — humans, browsers, screen readers, search engines — reads it correctly.
Do this instead
<!-- This is the right way -->
<h1>My Travel Blog</h1>
<h2>Why I Loved Japan</h2>
<h3>Best Food I Ate</h3>
<h3>Places I'd Skip Next Time</h3>
Clean, logical, and nested the way an outline should be.
Quick cheat sheet
| Tag | Use it for |
|---|---|
<h1> |
The main title of the page — ideally just one |
<h2> |
Big, top-level sections |
<h3> |
Sub-sections nested inside an <h2> |
<h4>–<h6> |
Deeper nesting, for long or complex content |