CodeinWP CodeinWP

Is WordPress Screwing Up Your SEO?

Is WordPress Screwing Up Your SEO?Ever since WordPress burst on the scene and gained huge popularity among designers, developers and Joe Blow bloggers, it has become shockingly easy to create SEO-friendly content. WordPress handles everything for you: Pretty spider-friendly URLs, semantic content, accessibility, and structurally accurate heading tags.

Wait — scratch that last one. I’ve always been suspicious that WordPress’s HTML heading structure was slightly off, and recently my suspicions have been (evidently) confirmed. Two articles have provided some important info to help front-end developers, content strategists, and SEO experts structure their content in a more accessible, semantic, and SEO-friendly manner.

SitePoint and 456 Berea Street

The two articles in question are:

Here are two pertinent quotes from those articles:

“[S]earch engines like Google seem to reward pages that use a single <h1> tag for the title of the unique content on the page… In short, until such time as standards like WAI-ARIA enable us to label page elements like navigation without headings, we must use heading structures that begin with <h2> (instead of <h1>) for “boilerplate” content like navigation menus, headers, footers, and sidebars.”

– Kevin Yank, SitePoint

“Use only one h1 heading per document, and use it for the document’s main heading, not the site name or company logo… If a document needs a heading before the main heading in the source order, for instance to identify navigational sections, start with an h2 heading.”

– Roger Johansson, 456 Berea Street

How Does WordPress Screw it Up?

WordPress, by default, structures the headings as follows:

  • The <h1> tag is set on the website’s title on EVERY page
  • The <h2> tags are set for post titles, sidebar headings, and other sub-sections

So, if what SitePoint and Roger Johansson are saying is true, then WordPress’s document structure is not giving developers and bloggers the best shot at having their content rank well.

I did a cursory check of source codes on various popular blogs, as well as a few popular WordPress themes, and nearly all of them keep the default structure intact, or have some other poor structure in place. The only ones that adjusted the heading structure to match what SitePoint and Johansson are advising are, well, (no surprise) SitePoint and Roger Johansson’s blogs. Oh, and you can add my blog to that list too, as of today.

It was amazing, too, how many sites failed miserably in this regard. Some sites had no <h1> headings, while one even had dozens of <h1> headings on a single page!

You Can Correct It, But There’s a Drawback

To correct the problem, just edit the default structure to conform to that outlined in the two articles mentioned above. That is, use the <h1> tag on your home page for the website’s title, then use <h2> tags for article titles on the home page. On inner pages like single post pages, archives pages, and regular content pages (about, contact, etc), use <h1> for the main title of the page (not your blog’s title), then descend from there where necessary. On those inner pages, it’s perfectly acceptable to make the website’s title a simple anchor tag, or even an <h2>.

The drawback to doing this is that not only will you have to edit your CSS to correct the styling of the headings, you’ll also end up having gaps in your headings in articles where the <h3> tags were added manually. So, after correcting the problem, your post title will be <h1>, and your post headings will be <h3>, <h4>, etc., with no <h2> headings.

If you have hundreds of articles archived, it’s obviously not an option to go back and manually change these. I don’t have an insane amount of content on this site, so I went ahead and made the change, and I’m planning to slowly go back and change the <h3> headings to <h2>. Or I might just get lazy and leave them be, figuring the benefits will outweigh any potential problems with the “gaps” in the structure.

Should WordPress Change its Default Structure?

I have no idea if it’s possible or even feasible for the WordPress team to change the structure of the headings in its default state, or what effect it might have on WordPress development. At the very least, this gives individual developers and bloggers a slight advantage in SEO and accessibility that could prove fruitful in the long run. Since most WordPress-driven sites will have the wrong heading structure, those of us who customize our code to match these apparent “best practices” will likely reap the benefits.

Of course, this type of SEO analysis is not the determining factor in high Google rankings. Good content with poor semantics and structure will always surpass poor content with good semantics and structure. But for those cases where content is on equal footing, these suggestions may give some bloggers the edge.

Update: In the comments, Ipstenu pointed out that WordPress 3.0 implements the improvements that I’m discussing in this article. I downloaded WP 3 Beta to confirm this, and he’s correct. The single.php file now uses <h1> for the content title, while header.php will display the title of the website as <h1> on the home page, but then switch to a <div> when not on the home page.

41 Responses

  1. i say yes, the article ist great and the others news of this page ar nice i com back

  2. Jason says:

    I think the default state is fine. If you can customize a WP theme, you should know better to adjust the code. Not sure how many WP users actually dive into the code…pretty cloudy for most to sift through. So, by default it makes sense for the basic themes out of the box.

    I do suggest anyone building themes make the H1 adjustment, yet as you mentioned most do not.

  3. Ash Blue says:

    I think the default WordPress structure for header tags is fine. I hate to say it, but this mistake spawns out of a lack of simple SEO knowledge. If people stopped buying templates and started hiring web designers to create their pages, they would avoid more problems like this. Main reason being the training included in a web design package. As they say, you get what you pay for.

    • Lucas says:

      300 for a template vs 3000 for a custom site is fairly significant and most people cant afford it. Larger companies yes, small businesses no.

  4. croftdog says:

    I use wordpress for all my sites and have never had trouble ranking, It heavily depends on the themes you use, some of them are really poor for SEO.

  5. Ipstenu says:

    I just went and checked the NEW default theme (Twenty Ten) and it correctly changes H1. This is the theme that comes with WP 3.0, for the record.

    So … yeah, Kubrick (which was added to WP in 1.5 so we’re talking February 2005) was old and bad for SEO, but with 2010, they’re fixing it :)

    This is a case of ‘WP had a bad default theme, but it’s a theme issue.’

    I will agree it’s WP’s ‘fault’ for putting out a poorly SEO designed default/example theme.

  6. Armin C. says:

    Although some adjustment to wp code by default would be useful, when it comes to actually improving the code it’s really pretty simple and there are quite a few ways to do it (using classes or sub classes being one of them)

  7. Justin33 says:

    WordPress is amazing because its all in what you need for craeting a your blogs. So I’m not shock if they are part of a large SEO links on web because they are.. simply excellent…

  8. Eko Setiawan says:

    Thanks for this great information, we will try to fix our free themes based this information.

  9. What? WordPress has nothing to do with how tags are structured. Themes do. The default theme is included in the install to give you something to start with.

    Also there would be no need to go back and edit all your articles. Simple conditional if page is single statements can provide you with separate tag structures for pages, single posts and blog pages.

    Also most half decent Web Designers and commercial themes already have it set up this way.

    The drawback to doing this is that not only will you have to edit your CSS to correct the styling of the headings,

    huh? I thought this was a web design tutorial site not a “how to copy and paste blog posts into the WP dashboard site”.

    • Hey, Chris. You said:

      What? WordPress has nothing to do with how tags are structured. Themes do. The default theme is included in the install to give you something to start with.

      If WP is bundling a default theme that has poor heading structure, then it’s WordPress’s fault.

      As far as your second point, I don’t understand your point. I publish articles and tutorials. This is an article.

      • Chip Bennett says:

        So, really, what you mean is that the Kubric theme has SEO issues.

        But, I suppose, with respect to SEO, dissing WordPress in your title and text ranks better than merely dissing Kubric.

        WordPress does nothing to screw up (or to help) SEO. WordPress simply manages content. It is the responsibility of the theme to present that content.

        So, fault WordPress for (until the upcoming 3.0 release) using a default theme that is five years old, but don’t fault WordPress for “screwing up” SEO. It’s just simply not true.

        Pop quiz: how many self-hosted WordPress installs currently use unmodified Kubric?

        If you can find a statistically significant number (excluding splogs and malware installs – that is, real, actual people still using Kubric, merely because it is the default theme, then maybe you can claim some validity to your point.

        • Chip, thanks for your feedback.

          You’re technically correct, but that means nothing in the real world. Yes, it’s true that WP just “manages content”, but that doesn’t mean it hasn’t been responsible for the improper use of the heading tags.

          Theme developers often base their themes on the Kubrick layout. Whether that’s right or wrong doesn’t matter. It happens.

          Do a check on many popular websites that run on WP, and you’ll find very few that use the h1 heading correctly on post pages. Many sites don’t even have h1 tags.

          So, despite that WP itself is not technically to blame, the way it’s packaged encourages this problem.

          Besides, if it really wasn’t a problem, then why are they changing it in WP 3.0?

          • Ridho says:

            It’s true I guess .. The only problem I found with most of wordpress themes is the use of tag ..

          • Chip Bennett says:

            Again: what percentage of people in the real world are using Kubrik?

            WordPress (pre-3.0) may package Kubrik as the default theme, but WordPress.org currently hosts 1,193 free themes, all of which can be easily installed from within WordPress.

            Also, the WordPress theming system is dead-simple to learn. That any theme developer based a theme on Kubrik isn’t the fault or responsibility of WordPress.

            There are many reasons why a new default theme is being developed for 3.0, but the least of them are the SEO implications of Kubrik.

            The primary reason for replacement is that Kubrik is a five-year-old theme, and is showing its age, both in front-end presentation and in back-end template tag use. Further, the new default theme (Twentyten) is the first in what will become a new theme every year (next year will feature Twentyeleven, etc.)

            Granted, WordPress will take advantage of adding a new default theme to improve the built-in SEO changes and improvements of the past five years.

          • Chip,

            I never said that Kubrick was used. It’s not used by anyone. I know that. But it has served as a “guide” for many beginning theme developers. No one is going to develop their first WP theme without using something as a guide, and it’s usually Kubrick.

            And I never said that Kubrick was being changed for SEO reasons. I just said that the new default theme uses the new heading structure. There’s a reason for that: Because it’s the correct structure for best practices SEO.

            The fact that the h1 tag needs to be unique on each page has been a best practice for SEO and accessibility for years now, so WP should have changed that in Kubrick a long time ago.

            Thus, in my opinion (and remember, this is only an opinion) WordPress has been “screwing up” (or, at the very least minimizing the potential of) SEO, for many people, for years.

            Anyways, we could debate this all day, but I appreciate your feedback, thank you.

  10. leave a lot of comments on a lot of blogs each week – but there is one situation where I rarely leave a comment – even if the post deserves it.Good work

  11. Jeroen says:

    It’s always good practice to let important keywords from your title tag come back in your meta description and headings. Therefore on most pages the blog title doesn’t have to be an h1, not even h2,3,4 etc.

    I always try to populate headings with keywords relevant to the content. The sidebar, menu, footer etc.

  12. Digitalux says:

    I use the Hybrid framework and here its already correct.

  13. Lourens says:

    Nice article, a lot themes already made the change though (I know I did 6 months ago)

  14. David Video says:

    A nice follow up to this would be how plug ins help or hurt this. As someone who would rather not dig into the CSS does the all in one plug in solve this problem? I have not had problems ranking with it out of the box either but this is good information to know.

  15. Nice article, a lot themes already made the change though

  16. gondo says:

    who said that skip some of H* tags (h2 for example) is wrong?
    there is nothing wrong to have on 1 page just h2,h5 and h6 (without other h*)

  17. Very nice info, great article. Hopefully they will change it in 3.0

  18. Chase Adams says:

    Anyone who uses WordPress & cares about SEO, should be willing to dig into the code, and change their themes accordingly.

    It’s TERRIBLY easy to create php that determines if a page “is_home” or “is_single” that adjusts all heading tags accordingly. As for the CSS, place a php if statement that says, if(!is_single) : echo “class=”notSingle”; …or something along those lines, in the body tag, so that you can create easy css rules for body.notSingle, and not have to worry about the styling on the subsequent pages.

  19. Andrea says:

    about one h1 heading per page, here’s Google view:
    http://www.youtube.com/watch?v=GIn5qJKU8VM
    and in some cases it does make a sense to have multiple h1 headings when you have multiple “main” contents in a document (e.g. a blog homepage)

    • Thanks for that link, Andrea.

      I would suggest everyone read the article on 456 Berea Street that discusses why you should only use a single h1 tag.

      Now, granted, in the case of that link, it’s specifically talking about content accessibility. But I strongly believe that accessible content equals SEO-friendly content. Also, accessible content is much more likely to be future-proof. I don’t disagree with what Matt Cutts says in that video, but I think in the long run using a single h1 will be more beneficial.

  20. rilwis says:

    If we use the default theme without any customizations, that’s exactly like in this article. But I think the problem is not WordPress’s. It’s all about the theme. We know that there’re many themes that are optimized for SEO, and they succeeded. So we cannot blame WP for this reason.

    For H1 tag usage, I suggest the article: The right way to use H1 tag. There’re 2 trends in H1 tag usages: for website header or for post title. Both of them are good.

    • As I’ve pointed out, it’s not just about the default theme. Go to the WP theme directory, and take a look at the source code of the most popular themes. Most of them use h2 for the post titles, and some of them don’t even have an h1 tag on those pages.

      While I don’t expect WordPress’s creators/developers to know everything about SEO (and it’s not necessarily their fault), they do bear a measure of responsibility for using a mediocre heading structure in the default theme. Even if they didn’t do it correctly at first, it should have been corrected long before version 3.0.

  21. Schalmei says:

    i think with 2 – 3 plugins wordpress is great for SEO

  22. Corey Zeimen says:

    So, how do we assume here that Google will discriminate on the most used blog platform out there?

  23. Very interesting. Thanks for the info!

  24. Xcellence-IT says:

    Yes, this is fairly easy to manage… for a good web developer. But someone without knowledge of web development and SEO, this could be little tough to achieve.

  25. I have always hand coded my own sites, but recently I started using wordpress and have always woundered about this. Great article, thank you!

  26. Roy Barber says:

    i tend to find most themes are good enough and have been well thought out for seo, but you can beat designing your own from scratch with seo in mind. I usually start with the starkers blank themework.

  27. Gazza says:

    Hi, been using WP for about a year and though I have tried everything and my PR is stii 1, I appreciate your help and see how this helps, Regards Gary

  28. I have been using word-press for a while. I followed a method that I learned from a friend. If you use this method you will land first page or in the upper fold of Google. It works every time and I don’ bother with H1 H2 tags. If that is your goal take a look its free anyway.

  29. Amita Johnsy says:

    Thanks for the clarification. I have this classified website and blog, but the problem was that there was not a single H1 tag on the main home page…the good thing was every other page had only one H1 in that case..But i wanted to have 1 H1 tag on Home page as well as on every other pages…i think, if i make my home page as H1 then other pages would have 2 H1 and that would be counted as bad SEO practice..so i think using a widget only on home page with H1tag could be a solution. The other option might be through editing theme..

Leave a Reply

Comment Rules: Please use a real name or alias. Keywords are not allowed in the "name" field and deep URLs are not allowed in the "Website" field. If you use keywords or deep URLs, your comment or URL will be removed. No foul language, please. Thank you for cooperating.

Markdown in use! Use `backticks` for inline code snippets and triple backticks at start and end for code blocks. You can also indent a code block four spaces. And no need to escape HTML, just type it correctly but make sure it's inside code delimeters (backticks or triple backticks).