If you’re looking for a comprehensive guide to WordPress SEO, you’ve come to the right place.

This 4,600-word tutorial is a complete, step-by-step roadmap that you can follow to optimize your WordPress site using the best practices that Google and other search engines like to see.

When it comes to search rankings, there are countless factors at play—many of which are outside of your control. That’s why it’s so important to optimize the things you can control to set yourself up for success.

I perform these optimizations on every site I work with, and they’ve helped me to reach millions of people through the power of search.

We have a lot to cover, so let’s dive right in!

Optimizing Your WordPress Settings

The first thing you’ll want to do to optimize your site for search engines is ensure that your basic WordPress settings are configured properly.

Allowing Search Engines To Index Your Site

First and foremost, you need to make sure you’re allowing search engines to crawl and index your site.

Before a web crawler visits your site, it looks for a file on your server called robots.txt. This file dictates whether the crawler is allowed to visit your site at all, and whether you’d like any areas of your site excluded from the search results.

WordPress manages your robots.txt file dynamically, and it makes it very easy to toggle the global setting for that file right from your Reading Settings page:

Click Reading under the Settings menu in WordPress, find the checkbox labeled “Discourage search engines from indexing this site,” and make sure it’s not checked.

It’s off by default, but since it’s just a checkbox it’d be pretty easy to enable it by accident—so be careful about that.

One of the first things I do with every new site is customize the permalink structure.

The permalink structure determines what your post URLs look like. This is important because search engines use the content of your URLs as one of many ranking signals to determine whether your page is relevant. If your URL contains the keyword you’re trying to rank for, that will give you a (slight) advantage.

To customize your permalinks, click Permalinks under the Settings menu inside WordPress.

The default structure looks like this:

Pretty ugly, right? It’s just a cryptic post ID number, and it doesn’t make much sense to people or to search engines.

When you change your link structure to something containing the post name, you have the opportunity to include keywords in your URLs.

Personally, I’m a fan of the “Post name” structure because it’s clean and simple.

If you prefer to have dates or categories in your links, you can do that too—just make sure the post name is included.

After you configure your permalinks, you’ll have the option to set a “slug” for individual posts. The slug is the URL-friendly name of the post, and it’s usually generated automatically using your post title.

However, you may want to set it to something shorter or more keyword-focused. You can do this by clicking “Edit” next to the permalink on the post editor:

Note: I don’t recommend editing the slug of a previously published post, as this is likely to break any existing links to that post.


Ah, the age old question: to WWW or not to WWW?

Most web servers are set up so you can access a site with or without the www. prefix. This can present a problem with some search engines, because in their eyes example.com and www.example.com are actually separate websites.

The solution is pretty simple: choose which version you like better, redirect the other version, and make sure your preference is reflected in your General Settings in WordPress:

There’s no SEO benefit to choosing one over the other—it’s really just a matter of personal preference.

Note: Google Search Console allows you to specify your preferred domain, so it’s a good idea to do that as well.

Configuring The Yoast SEO Plugin

There are a ton of SEO plugins out there, but Yoast SEO has risen above the rest to become the industry-standard for WordPress SEO. It’s the first plugin I install on every new site.

Yoast takes the headaches out of the more technical aspects of SEO—page titles, meta descriptions, sitemaps—and really makes optimization a breeze.

The basic version of Yoast is completely free. There are premium upgrades, but those features are overkill for most users.

So head over to the Plugins section in your WordPress dashboard, click Add New, search for “Yoast SEO,” and install the plugin.

Once it’s installed, you’ll see a new SEO option in the main WordPress menu. This is where you’ll manage the various SEO options that Yoast provides. Feel free to poke around. We’ll cover the essentials below.

Optimizing Your Page Titles

The first thing you’ll want to do with the Yoast SEO plugin is optimize your page titles.

Page titles determine what you see in your browser tab when you visit your site, and they also dictate how your site appears in search results:

The page title is the first line for each result, so it’s really your one chance to nail that first impression.

What Makes A Good Page Title?

In just a moment we’ll use Yoast to configure our page titles, but first, what does a good page title look like?

First, it goes without saying that every title should be descriptive and enticing to encourage people to click through. Remember: the title is your chance to grab people’s attention in the search results.

Next, the keywords you want to rank for should appear early in your page titles. This is for two reasons:

  1. Search engines tend to give more ranking weight to the early words
  2. People scanning the search results will see the early words first

So if your keywords appear early in your page titles, you’re more likely to rank highly, and people are more likely to click through to your site.

It’s also a good idea to include your site name in your titles for the sake of brand recognition, but you’ll want that to appear at the end.

To summarize, good titles:

  • are descriptive and enticing
  • contain your target keyword, preferably at the beginning
  • contain your brand name, preferably at the end

Configuring Your Global Title Settings

To configure your global title settings, click Search Appearance under the SEO menu in WordPress.

The first setting here is your Title Separator. This is simply a separator symbol that appears between different elements of your title, like your post title and site name. This is totally arbitrary—just pick the one you like best.

Below that, you can set the title for your homepage. By default, it’s just the name of your site, followed by a page number (if applicable). You can customize this using a number of variables, or by simply typing a title of your own.

Configuring Title Templates For Your Posts & Pages

On the Search Appearance page, click the “Content Types” tab at the top.

On this page, you can set the default title template for your posts and pages.

Yoast’s default arrangement contains the following elements:

  • Title: the name of your post
  • Page: the page number, if applicable (for comments, archives, etc.)
  • Separator: the separator symbol you selected earlier
  • Site title: the name of your site

Visually, this would usually translate to something like this: Post Title | Site Name

Given that your post titles will likely contain your target keywords, this is a perfect configuration—it meets all of our requirements for a good title. If your title structure doesn’t look like this, I’d recommend changing it so it does.

You can use the tabs at the top of the page to adjust your titles for media attachments, taxonomies (i.e. categories and tags), and archive pages.

Configuring Page Titles For Individual Posts & Pages

Yoast also allows you to set a custom title for an individual post or page, overriding the default template. This is a great way to optimize for a specific keyword and ensure your search snippet looks exactly the way you want, without editing the name of your post or page.

After you install the Yoast plugin, a new “Yoast SEO” panel becomes available on the post editor. This panel gives you an idea of how your page will appear in the search results:

You can click “Edit snippet” to customize your page title using variables, plain text, or a combination of the two.

The colored bar under the title field indicates whether your page title is too long to be fully displayed (red), shorter than recommended (orange), or just right (green).

It’s always a good idea to examine your snippet preview before publishing a post. If your title isn’t optimized for the keyword you’re targeting, it’s easy to customize it.

Optimizing Your Meta Descriptions

Meta descriptions don’t appear anywhere on the frontend of your site, but they’re used by search engines for the black text that appears under the title of a search result:

By default, a snippet will be pulled from your page content based on what the user searched for. But writing your descriptions manually gives you the opportunity to increase your click-through rates significantly.

This can also be done from the Yoast SEO panel on the post editor.

Just click “Edit snippet” and enter some text into the “Meta description” box.

A good meta description contains the keyword you’re targeting and entices the reader to click through. It’s a way to seal the deal after your title (hopefully) grabs their attention.

Adding Social Media Metadata

Yoast also provides some helpful tools to add important social media metadata to your site.

If you click Social under the SEO menu in WordPress, you’ll see a few different pages of social media options.

Here’s a quick rundown of each tab:

  • Accounts: To let search engines know which social media profiles are associated with your site, enter the links here.
  • Facebook: Here you can choose to add Facebook’s Open Graph metadata, which helps Facebook (and some other networks) display rich previews of your content with images and excerpts. You can also set a default image on this page (for posts without a featured image).
  • Twitter: You can also choose to enable Twitter Cards, which is similar to Facebook’s Open Graph system. It makes your content far more attractive when people share it on Twitter.
  • Pinterest: If you use Pinterest to promote your content, you can connect your site here.
  • Google+: If you have a Google+ page for your business, you can link it here to signal to Google that it’s the official page for your site.

Themes & Template Settings

The way your site is displayed and organized is critical to your SEO. In the world of WordPress, this is largely dictated by your theme.

Your WordPress theme is the backbone of your site, and it can make or break the entire user experience. On top of that, it’s important that your site is structured in a way that makes sense to search engines, giving them as much context as possible.

With that in mind, let’s talk about a few ways to optimize your design and template settings.

Responsive Design Is A MUST

When you’re choosing a WordPress theme, responsive design should always be a key consideration.

A responsive design is one that automatically adapts to the smaller screen of a smartphone or tablet:

Everybody has a smartphone these days, and more and more people are using their phones as their primary web-browsing devices. In fact, 60 percent of all Google searches happen on mobile—so it’s crucial that your website is mobile-friendly.

In 2016, Google began using mobile-friendliness as a ranking signal for its mobile search results, meaning responsive sites will now typically outrank non-responsive sites on mobile—which, again, is where 60 percent of searches happen.

The good news is that responsive design has become a standard, so almost any modern WordPress theme on the market today will be responsive.

Still, it’s worth double-checking before you activate a new theme: take a look at the mobile version and make sure it adapts properly and provides a good user experience.

If you’re using an older theme that’s not responsive, it’s time to update. From an SEO standpoint, this is absolutely mandatory.

If you have any doubts about whether your site is mobile-friendly in Google’s eyes, you can use this official tool to find out.


If your WordPress theme supports the option to display breadcrumbs on your single post pages, it may be worth enabling that setting.

If you’re unfamiliar, breadcrumbs look like this:

It’s basically a set of links that help users get back to where they came from or explore other parts of your site. In WordPress, breadcrumbs usually include a link to the homepage, a link to the post’s main category, and the title of the post.

You’ve probably seen breadcrumbs on some high-profile websites, and they’re even baked into the Windows operating system (at the top of the File Explorer).

They don’t take up much space, they can help people navigate around your site, and they’re very search engine friendly.

Breadcrumbs help search engines better understand the structure of your site and how it’s organized, and Google will even show your breadcrumb trail in the search results instead of your full URL:

As of now, the breadcrumbs themselves aren’t clickable, but it’s a great opportunity to further customize your search snippet.

If your theme doesn’t support breadcrumbs out of the box, you can also add them with a plugin like Breadcrumb NavXT.


A common way to organize content on a page is by using headings.

Headings can of course help readers to skim your content and get a quick overview, but they’re also important for SEO. Headings tell search engines about the content of your page and how it’s organized—so it’s important that you use the right headings for the right purposes.

There are several different headings available in HTML: Heading 1 (H1), Heading 2 (H2), Heading 3 (H3), Heading 4 (H4), Heading 5 (H5), and Heading 6 (H6), each functioning as a subheading of its parent.

Heading 1 is interpreted by search engines to be the main title of a page, so the only H1 text on your posts and pages should be the primary headline (i.e. the name of the post). Most WordPress themes handle this correctly, so no worries there.

When you’re creating posts and pages, you can divide your content into sections using Heading 2. You can then divide those sections into subsections using Heading 3, which can be divided using Heading 4, and so on.

As a bonus tip, including keywords in your headings—in a natural way, not a spammy way—can give you a boost because that’s one more indicator that your page is indeed relevant to that particular keyword.

Duplicate Content

WordPress displays the content of your posts in quite a few different locations, and this can be problematic from an SEO perspective. If you have identical content appearing on more than one page, how does Google know which one to show in the search results?

Between the single post page, the homepage or blog page, date archives, category archives, tag archives, and author archives, there are potentially six different pages displaying the exact same content—and therefore competing with each other in the search results.

Now Google is pretty smart, and it’ll usually be able to recognize which page is the original and rank it accordingly. But there are no guarantees, so I recommend taking some steps to mitigate the duplicate content problem on your site.

We can do this pretty easily with the Yoast SEO plugin. Just click over to the Search Appearance section under the SEO menu in WordPress, then select the Archives tab at the top.

On this page, we have some options for author archives and date archives.

If you’re running a single-author site, your author archive will be nearly identical to your homepage, so you’re probably better off disabling it altogether. (If you have multiple authors, there’s nothing wrong with leaving it enabled.)

As for date archives, there aren’t many scenarios where these are actually useful, so it’s generally safe to disable those as well. If you prefer to keep your date archives, that’s fine—but it’s definitely a good idea to select “No” under “Show date archives in search results?”

If you click over to the Taxonomies tab, you can choose to prevent your category and tag archives from appearing in search as well. You may or may not want to do this, depending on whether you feel your taxonomy archives are particularly useful to readers.

Speeding Up Your Site

Page load times are a key metric for your website’s user experience, as well as your SEO.

Google uses page speed as a ranking signal, so if your site loads slowly for any reason, it’s going to be at a disadvantage in the search results.

Google offers a tool called PageSpeed Insights where you can quickly gauge whether your site is optimized for speed on both mobile and desktop devices.

Screenshot of Google's PageSpeed Insights tool

Just enter your URL and it’ll give you a score, along with some specific suggestions that you can implement to boost your speed.

Being that this is an official Google tool, it’s extremely likely that a higher PageSpeed score will correlate with higher rankings, when all other factors are equal. So keep an eye on it!

In the meantime, let’s cover a few ways to speed up your WordPress site and increase your PageSpeed score…

Analyzing Your Plugins

There’s a lot of well-intentioned but misguided advice out there about how many plugins you should have on your WordPress site.

Some people say you should never have more than ten active plugins; others say you can have as many as 25.

But the truth is, it’s not the number of plugins that matters—it’s the impact they have on your site’s performance. Some plugins are really lean and barely impact your server, whereas others have to query the database on every page load.

So while it is a good idea to minimize the number of active plugins on your site, what I’d really recommend is analyzing your plugins to see how they impact your page load times.

To do this, you can use a plugin called P3 (Plugin Performance Profiler).

This plugin adds an option under the Tools menu where you can run a performance scan of your website to determine which plugins are contributing the most to your page load times.

What you do with this information is up to you. You don’t have to remove any plugins that are critical to your site, but anything nonessential that seems to be using more than its fair share of resources is worth reconsidering.

And of course, when you’re finished using P3, you can deactivate it as well.

Installing A Caching Plugin

One of the easiest ways to give your site a considerable performance boost is by installing a caching plugin like WP Super Cache.

Caching plugins generate and serve static HTML files from your dynamic WordPress site, which saves your server from lots of unnecessary database queries and as a result makes everything lightning fast.

Once you’ve installed WP Super Cache, it’s pretty easy to set up. Just click WP Super Cache under the Settings menu to configure it.

There are tabs along the top where you can explore all kinds of advanced settings, and I recommend doing so if you know what you’re doing.

But if you consider yourself more of a beginner, the easiest way to get set up is to select “Caching On,” click “Update Status,” and forget about it. That’ll enable the caching engine with the recommended settings, and you can go on your way with a much faster WordPress site.

Using A Content Delivery Network (CDN)

Another way to speed up your site is by routing it through a content delivery network, or CDN.

A CDN stores cached copies of your site files on a network of servers distributed around the world, and then delivers your content using the server that’s geographically closest to each user.

The benefit here is two-fold: not only is your data traveling a shorter distance to reach its destination, but the load on your server is offset significantly because the CDN servers are doing most of the heavy lifting.

There are a lot of CDN services out there, but the one I use and recommend is Cloudflare.

Aside from being one of the fastest and most reliable content delivery networks available, Cloudflare’s entry-level plan is completely free—so you can get the full functionality of a CDN without paying a dime.

Cloudflare’s website has a great onboarding wizard that holds your hand through the whole process. All you have to do is point your domain name to Cloudflare’s nameservers, make sure your DNS settings are imported properly, and you should be up and running in a matter of minutes (with no downtime).

If you decide to use Cloudflare, I recommend installing the Cloudflare WordPress plugin, which optimizes your site and prevents some common issues.

Optimizing Your Content

A successful SEO campaign always begins with high-quality content.

You can make all kinds of technical optimizations to your site—and that’s important to do—but if your content sucks, it’s not going to drive the results you’re looking for.

So your #1 focus, above everything else, should be creating amazing content.

Amazing content delivers massive value to your audience. Be useful. Be inspiring. Improve people’s lives.

Think about the bloggers and other content creators that you follow and look up to. Chances are the one thing they all have in common is that they put out insanely good content.

Only after you’ve created truly valuable content can you begin to optimize that content.

Content Analysis

When you’re creating a post or page, you want to make sure everything from the title to the meta description to the content itself is optimized to rank for the keyword you’re targeting.

Yoast makes it really easy to do this. If you know the particular keyword you’re trying to rank for, you can enter it as your “focus keyword” in the Yoast SEO box right below the snippet preview:

Once you’ve entered a focus keyword, Yoast will analyze your content, looking at everything from your titles and meta descriptions to the keyword density of your content itself. If for any reason your content is not fully optimized, it’ll give you some specific suggestions to get you there.

Choosing Your Focus Keyword

From an SEO perspective, it’s a good idea to know what keywords you want a page to rank for before you even start writing content for it.

But how do you decide on a keyword? How do you know what to type into that “focus keyword” box?

If you’re writing a blog post, you’ll usually want to aim for what’s called a long-tail keyword, which is basically a specific keyword containing multiple words. Broader, single-word keywords are far more difficult to rank for.

If you have a general idea of what you’re going for, a great starting point is to go to Google, start typing some variation of your potential keyword, and look at the suggestions in the drop-down menu. (I recommend doing this in a private browser window so the options won’t include your search history or tailored suggestions.)

All of these suggestions come from real search data, so these are actual keywords that people are using to search the web.

If you’re having trouble finding ideas on Google, you can think in terms of FAQ: what questions do your customers or people in your target audience frequently ask, and what keywords might they use to find answers?

You can also use a tool like Keyword Shitter (yes, it’s actually called that) to find hundreds of relevant long-tail keywords.

Once you’ve found some potential keywords, it’s worth passing them through the Google Keyword Planner to compare their average monthly searches. (You want to rank for a keyword that people are actually searching for, right?)

Keyword Density & Over-Optimization

In the past, a major focus of SEO was the concept of keyword density, which is the percentage of times a keyword or phrase appears on a web page compared to the total number of words on that page.

Search engines use keyword density as a ranking signal to determine how relevant a page is to a particular search term. If a keyword appears a bunch of times on a page, it would make sense to rank that page highly for that particular keyword, right?

Unfortunately, the spammy marketers of the world figured out how that worked and started “keyword stuffing”—basically over-optimizing their pages by including the same keyword or related keywords as many times as they could.

The result was a bunch of pages ranking that weren’t actually useful—they just happened to have keywords littered all over the page with no regard for quality.

Google’s response came in 2011 with an algorithm update called Panda, which was intended to reduce the rank of low-quality sites and content farms while increasing the rank of higher-quality sites that are more useful to the end user.

One of the effects of the Panda update is that keyword density is no longer a linear ranking signal.

  • If your keyword density is too low, that tells Google that your page probably isn’t relevant.
  • But if your keyword density is too high, that tells Google you’re probably a spammer stuffing your page with excessive keywords.

Today, the ideal keyword density is somewhere between 0.5 percent and 2.5 percent.

But instead of stressing over keyword density, focus on creating a valuable resource that includes keywords naturally. Then, when you’re finished, you can use the Yoast SEO plugin to make sure your content falls within that range.

Whenever you’re writing a post, it’s a good idea to include relevant internal links to other pages on your site.

In addition to helping users dig deeper into your content, proper internal linking helps search engines understand the relevance and relationships between different pages on your site. When you link from one post to another post, that’s a way of signaling that those pages are related.

Your internal linking strategy should prioritize your most important content, i.e. your site’s most valuable resources. Whenever you have an opportunity to include a (relevant) link to those resources, you should do so.

You can also add a “related posts” section to your single post page, using a plugin like Yet Another Related Posts Plugin or Jetpack.

Image Optimization

One aspect of SEO that often gets overlooked is image optimization.

Search engines have no problem reading your text, but they usually need some help to understand the context of your images.

If you add the proper metadata to your images, you can generate some extra traffic from places like Google Images. This also makes your content more accessible to visually impaired readers who browse your site using a screen reader.

Specifically, whenever you insert an image, take a second to write a descriptive alt attribute to tell search engines what the image is:

This is a simple but effective way to tap into a traffic source that your competitors likely neglect.

Wrapping Up

We’ve covered a lot of ground in this post, and I hope it’s been helpful!

If you implement the strategies in this tutorial in conjunction with valuable, high-quality content, I’m confident you’ll see results.

In the meantime, if I missed anything or if you have any questions, please feel free to drop a comment below.

Thanks for reading, and good luck!

Notify me of

Oldest Top Rated
Inline Feedbacks
View all comments

WordPress Masterclass: The Free Beginner Website Course

Learn how to build beautiful, functional websites without writing a single line of code. Completely free—no registration required.