WordPress is one of the best, if notbest content management systems when it comes toSEO. That being said, spending time on your WordPress SEO might seem like a waste of time, it most definitely is not. Optimizing your site to the best practices outlined in this article will help you improve your rankings, gain more subscribers and have a better website in general.
As we take quite aholistic viewon (WordPress) SEO, meaning that we think good SEO should be engrained in all aspects of your online marketing and PR, this guide covers quite a lot of ground and is, therefore, a long read. Check out thetable of contentsbelow for some quick jumping around.
This article has been kept up to date with the best practices for WordPress SEO since early 2008. The goal of this article is to let all the info of all the different articles we wrote about the topic, here and on other sites, fall into one big piece: the ultimate WordPress SEO tutorial.
The first versions of this article were heavily based on using a plugin called HeadSpace and a series of other plugins. Weve since released our ownYoast SEO pluginwhich replaces quite a few of those. That plugin has proven so powerful that is being used on used on millions of sites, even big ones likeSearchEngineLand, andThe Next Web. The Yoast SEO plugin is very stable and has loads of great features. This article now assumes youre using it.
Get the most out of Yoast SEO, learnevery feature and best practicein our Yoast SEO for WordPress plugin training!
If youre using another SEO plugin, like All in One SEO pack or Ultimate SEO, but would like to switch and make use of our free and extremely powerful SEO plugin, weve written amigration guidefor you. Its a really easy process. If youre not using an SEO plugin yet, grab our freeYoast SEO pluginand get going.
As search, SEO, and the WordPress platform evolve we will continue to keep this article up to date with best practices. Be sure to subscribe to ourWordPress & SEO newsletterto receive notification when we update this article.
The definitive guide to higher rankings for WordPress sites
Controlling titles with the Yoast SEO plugin
Advanced WordPress SEO and duplicate content
Noindex, follow archive pages and disable some archives
Out of the box, WordPress is a pretty well-optimized system and does a far better job at allowing every single page to be indexed than every other CMS we have used. But there are a few things you should do to make it a lot easier still to work with.
The first thing to change is yourpermalinkstructure. Youll find the permalink settings under Settings Permalinks. The default permalink is?p=postid, but we prefer to use either/post-name/or/category/post-name/. For the first option, you change the setting to/%postname%/:
To include the category, you select Custom Structure and change the value to/%category%/%postname%/. If you previously had?p=postidas your permalink WordPress will take care of all the redirects for you. This is also true if you change from/%postname%/to/%category%/%postname%/. If you change from any other permalink structure, you might want to consult our article onchanging your WordPress permalink structureand the tool that youll find within it.
You need to think about what you want your site to show up as or simply . Make sure that in your general settings, under Settings General, the version you want to show up is properly reflected:
Optimize your site for search & social media andkeep it optimizedwith Yoast SEO Premium
You will also want to set this correctly inGoogle Search Console. Make sure to set up your site with Google Search Console and set the preferred domain, you can find this setting under Settings Preferred domain:
The last thing you may want to do about your permalinks to increase your WordPress SEO, is remove so-called stopwords. Words like a, and, the, etc.
This is generally not something you want to change after posts have gone live. If people have already linked to it, try to not change the permalink anymore and if you do, make sure the post is properly redirected. In most cases, WordPress should redirect the old URL to the new one but if it doesnt you need to add the redirect manually.
Historically, adopting SSL (getting a HTTPS URL, and a green padlock icon) was an optional tactic. Many sites, arguably, didnt need the extra level of security which SSL provides.
Now, however, SSL is essentially mandatory search engines may penalize sites without valid SSL certificates and setups (and/or show warnings next to their search results). Its also good practice for all websites to use SSL, to prevent hackers and third parties from intercepting requests and data.
Additionally, many modern site speed and performance techniques require a valid SSL/HTTPS setup.
If you want to move to SSL, we have an article withtips & tricks for moving to HTTPSright here.
The title, the contents of your pagestag, is one of the single most important factors for ranking in the search results. Not only is it the literal title of the tab or browser window, its also the first line people see in the search results, followed by the URL (or the breadcrumb) and the snippet, usually the meta description combined with a date:
On many blogs, the title for blog posts is still Blog title » Blog Archive » Keyword rich post title or Blog title » Keyword rich post title. For your WordPress blog to get the traffic it deserves, this should be the other way around, for two reasons:
Search engines put more weight on the early words, so if your keywords are near the start of the page title you are more likely to rank well.
People scanning result pages see the early words first. If your keywords are at the start of your listing your page is more likely to get clicked on.
For more info on how to create enticing titles for your posts, read our article oncrafting good titles for SEO.
You can control your SEO titles with our Yoast SEO plugin. There are two parts of the plugin that control these. First of all, as soon as you install & activate the plugin, you get an SEO section in your admin. Navigate to SEO Search appearance and youll see a bunch of tabs for different types of pages on your site. For each post type and taxonomy, you can set a so-called Title Template (as well as meta description templates but well get to those later). For posts on our site this looks like this:
Theres a bunch of variables you can use in the titles and meta description, theyre all listed and explained in the help tab on the top right of the page. Be sure to check whether the template actually works and youre not getting a duplicate site title for instance. If this is the case, you might need to check the Force rewrite checkbox on the same page orfollow the instructionson that page to modify your template.
For the other pages, we have the following settings:
Categories, Tags and other taxonomies:
term_title – sep – Archives page – sitename
You searched for searchphrase – sep – sitename
Page not found – Error 404 – sep – sitename
There are some other cool features, for instance: you can usecf_custom field nameto use a custom field, this can be either a post custom field, sometimes known as post meta value or a user meta value. In this particular case, its the custom field role we use to store the role of a user within our company.
The separator template code gets replaced by the separator you select on the general tab:
So now that weve set decent templates, we can start to optimize individual posts and pages. For that we use the snippet preview added by the Yoast SEO plugin:
This preview will automatically take the values youve already filled in in your blog post and apply them to your template, but you can also override the title completely using the title field just below it:
The input will show a warning below it if your title is becoming too long. The title length is not a fixed amount of characters but rather limited to the length of the display in the search results.
For titles the following things are important:
They should always contain your brand, preferably at the end, so people may recognize you in consecutive searches.
They should always contain the keyword you think is most important for the current post or page, which well call the focus keyword from now on. The focus keyword should preferably be at the beginning of the title.
The rest of the title should entice people to click.
Now that weve got proper titles, we should start to focus onmeta descriptions. The meta description can be used by search engines to show in the snippet, its the black piece of text shown beneath the URL. The meta description is usuallyonlyused when it contains the keyword the searcher was searching for.
Some plugins use so-called automated descriptions. They use the first sentence of a post to fill the meta description by default. Thats not very smart. That first sentence might be an introductory sentence which has hardly anything to do with the subject.
Thus, the only well-written description is a handwritten one, and if youre thinking of auto-generating the meta description, you might as well not do anything and let the search engine control the snippet If you dont use the meta description, the search engine will find the keyword searched for in your document, and automatically pick a string around that, which gives you a bolded word or two in the results page.
Auto-generating a snippet is a shortcut, and there are no real shortcuts in (WordPress) SEO (none that work anyway).
So, use the meta description field you find in the Yoast SEO plugin to write a meta description. Make sure it entices the reader to click through and make sure that it contains the focus keyword of your post or page at least once.
Youll notice we do not mention meta keywords. We dont use them and neither should you, for an explanation, read this article by Joost:meta keywords and why I dont use them.
Learn how to write awesome and SEO friendly articles in ourSEO Copywriting training
An often overlooked part of WordPress SEO is how you handle your images. By doing stuff like writing good alt tags for images and thinking of how you name the files, you can get yourself a bit of extra traffic from the different image search engines. Next to that, youre helping out your lesser able readers who check out your site in a screen reader, to make sense of whats otherwise hidden to them.
Using the proper alt attributes for images is also something that is checked in thePage Analysisfunctionality of our Yoast SEO plugin. We have a longer article onImage SEOthat will give you more tips to finetune this.
To tell Google and the other search engines that your site has been updated, you can use XML Sitemaps. Our Yoast SEO plugin automatically configures your XML sitemaps, so you dont have to worry about anything. We generate sitemaps for your different post types, including your images, and make sure that it generates and loads really quickly.
We intelligently split your sitemaps up into smaller bits, so Google only has to fetch one new XML sub-sitemap when a post is published, because the other sitemaps havent been changed, using the date modified options.
Lastly, it has a pretty complete API, allowing us and other developers to plugin extra sitemaps, which means we can do things like create ourLocal SEONews SEOandVideo SEOextension. These extensions respectively generate a news xml sitemap and video xml sitemap.
Youll want to addbreadcrumbsto your single posts and pages. Breadcrumbs are the links, usually above the title post, that look like Home Articles WordPress SEO. They are good for two things:
These breadcrumbs should link back to the homepage, and the category the post is in. If the post is in multiple categories it should pick one. For that to work, adaptsingle.phpandpage.phpin your theme, and use the breadcrumbs from our Yoast SEO plugin. You find the settings for the breadcrumbs in the SEO Internal Links settings page.
Although most themes for WordPress get this right, make sure your post title is anh1, and nothing else. Your blogs name should only be anh1on your front page, and on single, post, and category pages, it should be no more than anh3. Your sidebar shouldnt be crammed withh2andh3s either etc.
These are easy to edit in thepost.phpandpage.phptemplates. To learn more about why proper headings are important read this article onSemantic HTML and SEOand our article about theHeading Structure for your Blog(from which a lot applies to non-blog WordPress sites too).
A very important factor in how many pages a search engine will spider on your blog each day is how quickly your site loads. A lot of different factors affect your site speed, but there are some easy things you can do to get started.
Optimize the template to require as few database calls as possible. Weve highlighted how to do this in our post aboutspeeding up WordPress.
Install a caching plugin. We recommend you use W3 Total Cache if youre technically savvy, orWP Rocketif youre not.
Caching plugins works even more magic when combined with a CDN like MaxCDN or Cloudflare. Read more aboutWordPress CDNstuff here.
Also, be aware that underpaying for hosting, is not wise. If you actually want to succeed with your link-bait actions and want your blog to sustain high loads, go for a good hosting package. If you want to know more be sure to read our article aboutWordPress hosting.
Do you really need to link out to all your buddies in your blogroll sitewide? Or is it perhaps wiser to just do that on your front page? Google and other search engines these days heavily discount site wide links, so youre not really doing your friends any more favor by giving them that sitewide link, nor are you helping yourself: youre allowing your visitors to get out of your site everywhere, when you actually want them to browse around a bit.
The same goes for the search engines: on single post pages, these links arent necessarily related to the topic at hand and thus arent helping you at all. Thus: get rid of them. There are probably more widgets like these that only make sense on the homepage and others that youd only want on subpages.
Someday you will probably be able to change this from inside WordPress, right now it forces you to either use two sidebars, one on the homepage and one on subpages or write specific plugins.
For some sites, an HTML sitemap might be nonsense, especially when your site is really a blog, for more corporate type sites with several levels of pages an HTML Sitemap might actually be very beneficial for both users and search engines. Weve written an article on how to create anHTML Sitemap Page Templatewhich would be a good start to get one going for your WordPress site.
Once youve done all the basic stuff, youll find that the rest of the problems amount to one simple thing: duplicate content. Loads of it in fact. Out of the box, WordPress comes with a few different types of taxonomy:
Next to that, it seems to think you actually need to be able to click on from page to page starting at the front page, way back to the first post you ever did. Last but not least, each author has his own archive too, under/author/author-name/, resulting in completely duplicate content on single author blogs.
In essence that means that, worst case scenario, a post is available on 5 pagesoutsideof the single page where itshouldbe available. Were going to get rid of all those duplicate content pools, by still allowing them to be spidered, but not indexed, and fixing the pagination issues that come with these things.
Using the Yoast SEO plugin, make sure to prevent indexing (or even existence) of archive pages that do not apply for your site. You do this under SEO Search appearance, where youll find the following options on the Archives tab:
The settings above are the settings for our site. As you can see, weve completely disabled the date based archives, as we dont use those. Any date based link will redirect to our homepage because of this setting. Weve left the author archives untouched, but we have set the subpages of those archives to be noindex, follow by default. So youll never land on page 2 of an archive on our site from the search engines.
On smaller sites, it might make sense to noindex either the category or the tag structure, but in our experience noindexing those on does little to no change at all.
There is one type of archive that is noindex,follow by default as well in the Yoast SEO plugin: the search result pages.This is a best practice from Googlefor which a setting is left out as you should just have that anyway.
A lot has changed in how Google handles paginated archives when they introduced their support forrel=nextandrel=prevlinks. Weve written an article about that:rel=nextandrel=prevfor paginated archives, which is a bit too technical to fully list here, but suffice to say our Yoast SEO plugin takes care ofallthe needed changes automatically.
If your blog is a one author blog, or you dont think you need author archives, use WordPress SEO to disable the author archives. Also, if you dont think you need a date based archive: disable it as we have. Even if youre not using these archives in your template, someone might link to them and thus break your WordPress SEO
Thirdly, youll want to make sure that if a bot goes to a category page, it can reach all underlying pages without any trouble. Otherwise, if you have a lot of posts in a category, a bot might have to go back 10 pages before being able to find the link to one of your awesome earlier posts
Theres an easy fix, in fact, there are several plugins that deal with this. Our favorite one by far isWP-PageNavi, maintained by Scribu, one of the best WordPress developers around. If you have theGenesis Themelike we do here on m, you can just enable numeric navigation under Theme Settings Content Archives.
In February 2009, the major search enginesintroduced therel=canonicalelement. This is another utility to help fight duplicate content. WordPress has built-in support for canonical link elements on single posts and pages, but it has some slight bugs in that. It doesnt output canonical links on any other page. With our Yoast SEO plugin activated, you automatically get canonical link elements foreverypage type in WordPress.
Become a technical SEO expert with our Technical SEO 1 training!
Blogs are spidered so easily due to their structure of categories, tags etc.: all articles are well linked, and usually, the markup is nice and clean. However, all this comes at a price: your ranking strength is diluted. Theyre diluted by one simple thing: comments.
Youve probably noticed by now, or youre seeing now, that this WordPress SEO post is actually not a post. Its a page. Why? Well for several reasons. First of all, this article needed to be a daughter-page of our WordPress page, to be in the correct place on this blog. Secondly, to rank for the term [WordPress SEO], this article has to have the right keyword density. And thats where things go wrong. Comments destroy your carefully constructed keyword density.
Thats why we decided to make our most important articles into pages. That way, you can easily update them and do a new post about what youve changed.
If a post on your blog becomes incredibly popular and starts to rank for a nice keyword like this one did for WordPress SEO, you could do the following:
publish the new page under the old posts URL, or redirect the old posts URL to the new URL
send an e-mail to everyone who linked to your old post that youve updated and improved on your old post
wait for the links to come in, again;
rank even higher for your desired term as youve now got:
more control over the keyword density
even more links pointing at the article
the ability to keep updating the article as you see fit to improve on its content and ranking
Some among you will say: I could have 301 redirected the old post to the new one with the same effect. True. Except: youd lose the comments on the old post, which is in our opinion a sign of disrespect to people who took the time to comment, and 301 redirects take quite a bit of time sometimes. Of course you should treat this technique with care, and not abuse it to rank other products, but we think it can be done in everyones benefit. For instance this article: if you came here through a social media site like Facebook, expecting an article about WordPress SEO, thats exactly what you got!
Internal linkingis incredibly important to help Google understand yoursite structure. You should not only show related posts under your post, but also create links in your text to otherrelated posts. The more links a post or page gets, the more important it will be to the search engine. In Yoast SEO we now have atext link counter, if you see that one of your essential, orcornerstone articles, has very little links, you can start working on that right away.
In Yoast SEO Premium we even offer aninternal linking toolthat helps you find the right posts or pages to link to.
One of the most common issues we encounter on sites is the overuse of tags. Note that a tag in and of itself does not improve your SEO. The only way it improves your SEO is by relating one piece of content to another, and more specifically a group of posts to each other. Read more about usingtags and categories for SEO.
Free course! Learn what makes your site rank with ourSEO for beginnerstraining
A lot of bloggers still think that because their blogisa blog, they dont have to optimize anything. Wrong. To get people to link to you, they have to read your blog. And what do you think is easier: getting someone who is already visiting your blog to visit regularly andthenlink to your blog, or getting someone who visits your blog for the first time to link to your blog immediately? Right.
One of the things weve found to be very important, and more bloggers seem to have found this, is that an RSS subscribe button is very important, as is offering a way to subscribe by e-mail. We offer a weekly e-mail subscribe options, usingMailChimp, and have found that people tend to click through on those the most.
Another thing to be very aware of is when people might want to subscribe to your blog. If theyve just finished reading an article of yours, and really liked it, that would be the ideal time to reach them, right? Thats why more and more people are adding lines like this to the end of their posts: Liked this post? Subscribe to our newsletter and get loads more!
Another great time to get people to subscribe is when people have just commented on your blog for the first time, for which purpose we use our owncomment redirectplugin. Which leads us to the next major aspect of WordPress SEO:
Comments are one of the most important aspects of blogs. As Wikipediastates:
The ability for readers to leave comments in an interactive format is an important part of many blogs.
Comments are not only nice because people tell you how special you are, or that you made a mistake, or whatever else they have to tell you. Most of all theyre nice, because they show engagement. And engagement is one of the most important factors of getting people to link to you: they show you they care, and they open the conversation, now all you have to do is respond, and youre building a relationship!
The easiest way of getting people to do anything is: ask them to do it. Write in an engaging style, and then ask your blogs readers for an opinion, their take on the story etc.
Another important things is your comment links. Is your comment link No comments »? Or is it No Comments yet, your thoughts are welcome »? Feel the difference? You can change this by opening yourindex.phptemplate, search forcomments_popup_link()and changing the texts within that function.
Another thing to do is thank people when theyve commented on your weblog. Not every time, because that gets annoying, but doing it the first time is a very good idea.
Justin Shattuck thought the same, and created the Comment Relish plugin which sends an email after someone has made his first comment, unfortunately, this plugin is no longer maintained. Another option, which is maintained and is also a bit less obtrusive / spammy, is to install ourcomment redirectplugin. This plugin allows you to redirect people who have made their first comment to a specific thank you page.
Now that people have joined the conversation on your blog, you should make sure theystayin the conversation. Thats why you should install thesubscribe to commentsplugin, that allows people to subscribe to a comment thread just like they would in a forum, and sends them an e-mail on each new comment. This way, you can keep the conversation going, and maybe your readers will be giving you new angles for new posts.
Get the most out of Yoast SEO, learnevery feature and best practicein our Yoast SEO for WordPress plugin training!
If youve followed all of the above WordPress SEO advice, youve got a big chance of becoming successful, both as a bloggerandin the search engines. Now the last step sounds easy, but isnt. Go out there, andtalkto people online.
Theres been a movement on the web for a while now thats called the You comment I follow. They want you to remove the nofollow tag off of your comments to reward your visitors. Now we do agree, but That gets you a whole lot of spam once your WordPress blog turns into a well ranked blog What we do advocate though, is that youactuallyfollow your visitors! Go to their websites, and leave a comment on one of their articles, a good, insightful comment, so they respect you even more.
If you think thats a lot of work, do realize that, on average, about 1% of your visitors will actually leave a comment. Thats a group of people youhaveto take care of!
Twitteris a cool form of micro-blogging / chatting / whatever you want to call it. Almost all the cool people are on there, and they read their tweets more often than they read their e-mail, if you even knew how to reach them through e-mail.
To boot, if you useWordTwitorTwitter Tools, all of your posts can be announced on Twitter, which will usually get you quite a few early readers! People will feel even more happy to comment on Twitter, which might get you into an extra conversation or two.
If you want to rank for certain keywords, go to Google, and see which blogs rank in the top 10 for those keywords. Read those blogs, start posting insightful comments, follow up on their posts by doing a post on your own blog and link back to them:communicate! The only way to get the links youll need to rank is to be a part of the community.
A good SEO campaign relies on not only implementing changes but also measuring the impact of those changes, seeing what works and doing more of that. Two great Analytics packages to measure results areGoogle AnalyticsandgetClicky. Useful plugins for these analytical packages areMonsterInsightsand ourClicky plugin.
You can also measure results by tracking rankings, the problem with rank tracking though is that its hard to determine real rankings because of personalized and localized search results. Really the best outcome of being great at WordPress SEO is to get more traffic.
Another great source of data isGoogle Search Console. One of the relatively simple tricks we always give people is the following:
go to Your site on the web, then Search queries.
Click on Download this table.
Open the CSV file you get in Excel.
Replace all the instances of 10 in the Clicks column with 9.
Select the entire first row and click the filter button, usually the icon is a funnel:
For the average position column, choose greater than 5, sort Ascending.
Then for the Clicks column, sort Descending.
You now have the keywords people are finding you for in the results pages w