The heading structure for your blog

The heading structure of your pages is one of the very important aspects of on-page SEO. It defines which parts of your content are important, and how they’re interconnected. Because they have different goals, a single post needs another heading structure than your blog’s homepage or your category archives. This post intends to give you the basic pointers to get your heading structure right for those three different cases.

Please note that this post still treats headings in the HTML4 / XHTML1 way of using headings. I’ll briefly talk about headings in HTML5 in the end, it’s a whole ‘nother ball game!

This post will cover:

5 basic principles about HTML headings

Let’s get these things straight before we do anything about our heading structure:

  1. The most important heading on the page should be the H1.
  2. There is usually only one H1 on any page.
  3. Sub-headings should be H2’s, sub-sub-headings should be H3’s, etc.
  4. Each heading should contain valuable keywords, if not, it’s a wasted heading.
  5. In longer pieces of content, a heading is what helps a reader skip to the parts that they find interesting.

Based on headings, there are tools out there that can, and will, make an outline for your content. If you were to make an outline for this article, it would look like this:

  • [h1] The heading structure for your blog
    • [h2] 5 basic principles about headings
    • [h2] The headings for your homepage
      • [h3] The issue of full posts on archive pages
    • [h2] Heading structure for your single posts / single pages
    • [h2] Structure of headings for your category / tag / taxonomy pages
    • [h2] Headings and HTML5
    • [h2] Conclusion: re-think your blog’s headers

The most widely known, and probably also the easiest, tool capable of doing this is the W3 Validator.

The headings for your homepage

So while we can (and will) discuss some specifics in the comments, your homepage should probably have a structure that looks like this:

  • H1: Blog’s name
  • H2: Your blog’s tagline, if it’s “keyword-rich”; if not, all your recent posts should have an H2.
  • H3: Your recent posts, or, if those have an H2, this could be used for somewhat older posts.
  • H4: related content in the sidebar, like the heading of an “about” widget.
  • H5: Unrelated headings in your sidebar, footer, etc.

As you can see, I differentiate between “related” widgets and unrelated widgets. It’s no use at all to have an H3 heading saying “Our Sponsors”. An H4 HTML heading saying “About this SEO blog” could be useful though, if “SEO blog” is what you want to rank for.

The issue of full posts on archive pages

Maybe you’ve seen it, maybe you didn’t yet, but this sort of heading structure creates a problem. If you’re displaying full posts on your front page, your sub headings would be H2s, just like your post titles. That’s wrong, of course, and a good example of why we should be separating our content and markup a bit more then we’re doing now, but that’s not an easy fix. Basically, if you’re displaying a post on an archive, category, tag or home page, each H2 should become an H3, H3 should become H4, etc.

Heading structure for your single posts / single pages

This one is simple:

  • H1: post / page title
  • H2’s and H3’s: subheadings and sub-subheadings
  • H4: your blog’s name, and possibly related widgets
  • H5: same as above: sidebars etc.

Makes sense right? The most important line on the page is the post or page title, second come the subheadings. Your blog title still has some value because, if the post is good, people will search later for “Yoast WordPress SEO”, for instance.

Structure of headings for your category / tag / taxonomy pages

If you actually want your category and tag pages to rank, meaning you’ve given them some unique content and you’re making them interesting for people, the heading structure should basically be the same as the homepage, with this difference:

  • H1: category / tag title
  • H2’s: post titles
  • H3: blog’s name
  • Rest: repeat from homepage.

Headings and HTML5

In HTML5 the entire method of dealing with HTML headings changes, and while it’s a bit harder to grasp for people at first, the new system makes a lot more sense for content management systems. In short: headings and heading structures are section specific there, where a section could be any part of a page. It would take too long to explain here, but if you’re interested, read the header section of Mark Pilgrims excellent Dive into html5.

Truth be told, Mark doesn’t talk about how search engines deal with HTML5 headers yet. In all honesty: I couldn’t tell you yet. Simply a case of “not enough data to tell”.

Conclusion: re-think your blog’s headers

Now it’s time for you to take some action. Go and use the W3 Validator now to check your blog’s outline. If you’ve read and understood all the above, you should now be able to determine whether your theme is doing a good job. If you’re using a premium theme or a theme that you downloaded from, I’d love for you to share your results in the comments!

45 Responses to The heading structure for your blog

  1. Bill
    Bill  • 8 years ago

    Thanks for explaining this so clearly Yoast! It makes sense your reasoning and I agree with you, although it would make CSS styling a bit more painful with the switching of H1 to H2 tags for the home title etc. depending on which page it is. I guess classes would solve this too. Cheers

  2. Domicio Neto
    Domicio Neto  • 8 years ago

    Hi man!

    I love your blog!


    Domicio Neto

  3. Adrian Grossett
    Adrian Grossett  • 8 years ago

    Nice blog – and spot on information as a employee at one of the UK’s leading Web Design Company
    this is all implemented and taken into consideration when Article Writers release articles.
    Looking forward to your future posts.

  4. Jon
    Jon  • 8 years ago

    Sorry, me again… (maybe a plugin to allow editing comments should be next on your list….) what about breadcrumbs? As they should be keyword rich, especially if category + title is set, is there a header we could use? h2, h3?

  5. Jon
    Jon  • 8 years ago

    Oh, btw this is the theme I am using:
    I will mention it over on the theme forum.

  6. Jon
    Jon  • 8 years ago

    Thanks so much for this! I actually knew it already, but I installed a new theme a few days ago and totally forgot to check the headings. I use h2/h3 within posts but just noticed that all the main headings are h3!

    How daft is that?

    Now I need to find the part of the template that allows an h1 logo on home page…… wish me luck!

  7. web designer manchester
    web designer manchester  • 8 years ago

    Well, this really a nice post. Thanks for posting it on your blog :)

  8. Tim
    Tim  • 8 years ago

    I’m in the habit of using H1 with the site name/logo in the header file which puts it at the very top of every page, and then post title is H2 and subheading are H3. If I was to change the logo code to be H2 or H3, so my post title could be the unique H1 on the page, are there adverse effects of having lower level headings above the H1? Is there a more optimal way to code the site name/logo text other than using a header tag?

    Love the posts and love the podcast. Keep rocking the WP!

  9. Simon
    Simon  • 8 years ago

    Recently I read an article that suggested the opposite: on your homepage all post titles should be h1. I wish I could remember where I read that so I could link it here. Does anybody else know what I’m talking about? I’d like to compare the 2two.

  10. Mark Kirby
    Mark Kirby  • 8 years ago

    I wrote the plugin mentioned above which takes care of this exact problem, as mentioned. We use it on all our blogs, so I’ll update it should it become unusable with a new version of WP. Haven’t had any issues with it yet, but as we are re-working our main site at the moment I might be able to update it to make it more automated, or at least improve the documentation.

  11. JB
    JB  • 8 years ago

    Fantastic I have read a lot of articles on heading tags. this is by far the best.
    Clearly written good examples.

    thanks dude

  12. palPalani
    palPalani  • 8 years ago

    Thanks for sharing this excellent tips. I checked my site with W3 Validator and removed some errors. still i have some errors, i will workout it later.

  13. sunil
    sunil  • 8 years ago

    I already implemented this on my blog :)

  14. pututik
    pututik  • 8 years ago

    i still looking what the best simple seo structure, your article may help to improve my blog. I already try anykinds tips but heading like related and unrelated really cool to implement for archiving point.

  15. Mikal
    Mikal  • 8 years ago

    Thanks. This was very helpful. Ill go over all my headings now and customize it so I get better SEO.
    Great article :)

  16. Jens
    Jens  • 8 years ago

    @ John Garrett: That is exactly what I thought after reading this Blog post. But as you said. I must learn a lot more, too.

    thanks for the article Joost!

  17. Jym
    Jym  • 8 years ago

    Brilliant article as ever, many thanks Joost.

    For those looking for an ‘out-of-the-box’ theme which takes care of headers, Flexibility 3 gives the homepage title an H1 tag, and post titles H2. On the posts/pages, the blog title is given an H3 and the post/page title H1.

    I don’t know if it’s the best theme for SEO, but it’s free, and SEO is considered in it’s design.

  18. Cheryl
    Cheryl  • 8 years ago

    Wow!! so much information, fantastic post, now off to put this new knowledge into practise.
    Thanks again.

  19. Rednights
    Rednights  • 8 years ago

    Well … I looked at the W3C Validation tool and looked at the outline. Main Post title was H1, and everything else was delegated to H2 (sidebar titles … I don’t see where to add a sub header option in WP … ), and finally the “# Responses” H3. Seems okay.

    The only major problem I found was that my homepage didn’t even have a H1 tag around my site name for crying out loud because the main banner image is just that .. an image without actual text …

    gonna have to fix that …

    this is a eleganttheme too …

    • johan
      johan  • 8 years ago

      Agree on that, the elegantthemes theme I am using does NOT have an H1.

    • Gaz
      Gaz  • 8 years ago

      Most themes from ElegantThemes lack a H1 on the homepage.

  20. Frank Edens
    Frank Edens  • 8 years ago

    Great to read again Joost, as always.

    I thought the next article will come in handy for further changing the headers in WordPress.
    . A little bit controversial, but a good read.

  21. Theo
    Theo  • 8 years ago

    Nice post as always. What tools would you recommend to check how well optimized a site is ? i use senSEO. Thanks.

  22. billbennettnz
    billbennettnz  • 8 years ago

    If I understand this correctly, there’s a need for a plug-in or some other piece of code which can automatically convert the h2 headlines appearing on individual posts pages and convert them to h3 on the home page.

    Is there such a beast?

    • Joost de Valk

      The plugin mentioned in the above comment by BR seems to do just that… Haven’t tested it though.

      • billbennettnz
        billbennettnz  • 8 years ago

        I’ve just installed it for a trial.

        The plug-in is harder to use than many others. You need to edit the php code on some theme pages to use it – at the moment I’ve only done this for my home page. I haven’t decided what other pages to use it on at this stage. Any advice on this would be helpful.

        I guess editing php will be a deal-breaker for some.

        My biggest worry is the plug-in was developed in January 09 and hasn’t been touched since — it is still on version 1.0. So while it works fine for now, it may not make the transition to later versions of WordPress.

  23. Joost
    Joost  • 8 years ago

    Great post and hands-on thanks !

  24. Andrew
    Andrew  • 8 years ago

    Joost – great post! I would love to see an update that includes themes that work this way right out of the box. Right now I’m using 2010 – I hope it is as optimized as you suggest it should be.

    • Joost de Valk

      2010 is quite ok, we’re using it for the WordPress podcast and it seems to work fine, with only slight headings I’d change if I was interested enough :).

  25. Mike Gracen
    Mike Gracen  • 8 years ago

    According to Rand Fishkin when he spoke to our web team, tags are next to meaningless. Alt-text for images is much more important. With that said, I still make sure all of my pages have the main heading as an and sub headings as :-)

    • Dennis Foreman, not an SE guru
      Dennis Foreman, not an SE guru  • 8 years ago

      Apparently I disagree with Rand the guru. My recent experience is that many relevant tags will be deep-indexed, and, they will rank fairly high in SERPs.

      The effect has been so noticeable on some sites that I am going back and “tagging” posts that didn’t originally have them. I do this now even for my Joomla sites where it isn’t at all convenient. I find this approach increases a site’s indexed page count and, seemingly, its authority within Google.

      These things become significant for my newer insurance lead generation sites, like Medicare Supplement Leads where I am faced with much older, larger and very-well linked competitors.

    • Joost de Valk

      Hi Mike, I can hardly believe that, to be honest :) Alt tags are important though, so I’ll agree on that :)

  26. Comparativa de Bancos
    Comparativa de Bancos  • 8 years ago

    Hi Joost,

    maybe this plugin may help you.

    I found it some time ago but I wasn’t pretty sure if it was really useful or not for SEO.
    What is your opinion?


  27. Web Design Showroom
    Web Design Showroom  • 8 years ago

    Just a very quick note on this simple but excellent article. I’m a WordPresser btw!

    I very quickly got away from wrapping the page title in a tag e.g: in page templates.

    I find it much better to add this in the content area on a page-by-page basis because it gives you much tighter control over this tag. It takes a little more time but is well worth it.

    The reason is that sometimes the page names will be different (include more keywords) than you want in the H1. In posts however, I do use the because by their nature posts are quick and plentiful so you don’t need quite as much control.

    Just as you so rightly say, as a rule of thumb, every page should really have one h1 tag only, then dividing the content up into h2’s and h3’s. The H1 should have one keyphrase that matches the pages name (url) and Meta Title – keep this tag as short as possible and use no more than 3 keyphrases with the first being the same as in the H1 for more relevance in Google. Sometimes, using just one keyphrase and nothing else in the Page Title can really get you great results because it increases it’s relevance in the SERPs.

    My website follows these principles very closely and I’m currently really succeeding in the SERPs. For example, even though my sites new and has a low PR, I’m position 6 on: online design services – take a look at how Google highlights these keywords in bold in the search result.


  28. CodePunk
    CodePunk  • 8 years ago

    Neither SeoMoz or SeoBook use a H1 on their home page. SeoMoz uses H1s to for each post title on its blog page – the only other use of headings is widget titles wrapped in H4s. SeoBook doesn’t use a H1 on it’s blog page @ /blog.

    • Web Design Showroom
      Web Design Showroom  • 8 years ago

      Just because a couple of sites don’t – the general concensus is that you should – including Matt Cutts. Having a well structured page enables Google and the other search spiders to crawl your website faster and easier – it also helps you to write good content. Each part is integral to the whole picture (“the whole is greater than the sum of its parts”).


      • Desktop Facebook
        Desktop Facebook  • 8 years ago

        Yeah, I totally agree with you here – create something of value and keep it in a logical format. Moreover, ensure that it’s logical to the READER to create a good user experience. Google will reward you for that.

  29. Michele
    Michele  • 8 years ago

    Great post Joost! I have learned so much from you! Thank you for all that you do.

    Warm Regards,

  30. Gaz
    Gaz  • 8 years ago

    One of my pet peeves is seeing the phrase ‘SEO Optimized Theme’ or ‘SEO Friendly Theme’, only to look at the code to see a complete absence of semantic headings. There’s one of the major theme companies in particular (and most Themeforest designers) that need to read this post.

  31. Swamykant
    Swamykant  • 8 years ago

    Nice Post.

    I definitely implement these principles in my new blog –


  32. John Garrett
    John Garrett  • 8 years ago

    Man, I love/hate this blog. I learn alot but almost every post shows me how much work I have to do on my site! :) Thanks, much!

  33. Danny van Kooten
    Danny van Kooten  • 8 years ago

    That’s what I call a coincidence. Published a quick post this morning on how to use appropriate headings for your blog’s home and post pages.. » WordPress Proper Headings

    Anyways, thanks for pointing out. What’s your opinion on using heading and section tags already? Should we wait a little longer or start using it right away?! :)

Check out our must read articles about Accessibility