Tom’s WordPress SEO Tutorial: 101 Ways To Optimize Your Site For Higher Rankings – A Seriously Long Guide But 100% Worth Reading

Yep, we’re going to murder Google.

This WordPress SEO tutorial goes way beyond Yoast green lights (which barely work).

So let’s cut the fluff and let me show you what got me 2,500 visitors/day as a 1-man show – as someone who writes WordPress SEO + speed optimization tutorials for a living.

This is everything you need to rank your WordPress site higher in search engines: configuring Yoast, Search Console, researching long-tail keywords, and why adding an HTML table of contents is one of the best things you can do for on-page SEO. I’ll also cover rich snippets, getting in Google’s featured snippets, speed optimization, image optimization, click-through rates, local SEO, and why obsessing over Yoast green lights is not a good idea as it can lead to a keyword stuffing penalty. All screenshots should be current, please let me know if they’re not!

Enjoy :)

Table Of Contents


1. Add A Table Of Contents

Google says

Ensure that long, multi-topic pages on your site are well-structured and broken into distinct logical sections. Second, ensure that each section has an associated anchor with a descriptive name (i.e., not just “Section 2.1”), and that your page includes a table of contents which links to individual anchors.

Why This Is #1 On My List

  • Encourages long content (aim for 3,000+ words)
  • People can link to specific sections on your post
  • People can skim content and find what they need
  • People will click around on the page (good for SEO)
  • Chance of getting jump-to links using named anchors (shown below)

Jump To Links

How To Create An HTML Table Of Contents
Table of contents HTML looks like this…
<li><a href="/your-permalink/#item-one">Item One</a></li>
<li><a href="/your-permalink/#item-two">Item Two</a></li>
<li><a href="/your-permalink/#item-three">Item Three</a></li>

Each subheading’s HTML looks like this…
<h3 id="item-one">Item One</h3>
<h3 id="item-two">Item Two</h3>
<h3 id="item-three">Item Three</h3>

I suggest coding your TOC in HTML/CSS but you can also try the Easy Table Of Contents Plugin. If you have thin content, add a table of contents and beef it up. I did this with my Yoast SEO Tutorial and it went from 10 to 100+ visitors/day in a week! Now I only create long (detailed) tutorials and start each one by writing key topics in my TOC. Works like a dream.


2. Yoast Configuration

Most people have Yoast but few people use it the right way.

4 Key Steps To Yoast

  • Configuring the settings
  • Verifying Webmaster Tools
  • Researching long-tail (specific) focus keywords
  • Content optimization (there’s more to it than green lights)


Let’s start with configuring the settings…


2.1. Disable Unnecessary Features

In Yoast, go to SEO → General → Features. Test each one and decide if it’s helpful. Simply enabling them will NOT help SEO – they’re just tools that try to help YOU optimize content.

I don’t need the Readability Analysis telling me if my sentences are too short/long. I naturally add links in my content and don’t need the Text Link Counter. I can use Search Console to check what content is indexed in Google, and I never use the Yoast Admin Bar. I disabled these.

Yoast Features

Aside from Yoast, I’m a firm believer that superior content will naturally rank high as long as a) people are finding it helpful, b) you selected a long-tail keyword with low competition in Google’s search results, and c) you optimized your headline/snippets to entice people to read.

The rest is relatively small stuff…


2.2. Webmaster Tools
  • Sign up for Google Search Console
  • Use the HTML Tag verification option
  • Copy code provided by Search Console
  • Paste into Yoast (SEO → General → Webmaster Tools)
  • Delete everything outside quotations (including quotations)
  • Save changes in Yoast
  • Click verify in Search Console
  • It will take a few days for some data to populate in Search Console
  • Same HTML Tag verification process can be used for Bing + Yandex
  • I attempted Baidu but to no avail (barely any of my readers are Chinese anyway)

HTML Tag Google Search Console Verification



2.3. XML Sitemap Submission
  • In Yoast go to SEO → XML Sitemaps
  • Click the XML Sitemap button
  • Copy the last past of the URL: /sitemap_index.xml
  • Login to Google Search Console
  • On the left of your dashboard go to Crawl → Sitemaps
  • Paste the URL (screenshot below)
  • Test and submit
  • Repeat for Bing + Yandex
  • See common sitemap errors

Yoast Sitemap


2.4. Crawl Errors

Crawl errors are broken pages usually caused by deleting pages or changing permalinks.

Step 1: in Yoast’s Search Console settings, authenticate Yoast with Google Search Console…


Step 2: Once authenticated, it can take several days/weeks to populate all crawl errors…


Step 3: Redirect each one to it’s new URL (not just the homepage). Use the Quick Page/Post Redirect Plugin, Yoast Premium’s redirect manager, or create redirects through .htaccess.

301 Redirect WordPress


2.5. Avoid Snippet Variables

Snippet variables act as templates for your SEO titles + meta descriptions IF you don’t write them manually. You should ALWAYS write these manually so they read nicely (people want to click you link), so they’re within the character limits, and so they include your focus keyword.

I use the templates below in case I forget to write my SEO title + meta description (which I never do). You can set this too, but do not rely on snippet variables – they’re a bad shortcut.

SEO title snippet variable: Title Separator Site Title
Meta description snippet variable: Excerpt (short summary of content chosen by Google)



2.6. Noindex Unhelpful Content

You usually don’t want certain content showing in search engines (tags, post formats, author archives, date archives). In Yoast, go to SEO → Search Appearance. Go through your content types, taxonomies, and archives tab and choose not to show these in search results. You obviously want to index pages/posts, and maybe category pages if you have enough articles under each one, but the rest usually causes duplicate content, which you can check in Siteliner.



2.7. Add Date To Snippet Preview (For Posts)

An easy way to increase click-through rates (CTR) for posts is to show their publish date in snippets – this keeps your content looking fresh. Google uses the post modified date which you can add to the top of posts. Each time you update a post, Google will use the current day.

Publish Date

First, enable ‘date in snippet preview’ in Yoast (SEO → Search Appearance → Content Types).


Now add this code to your theme (or use the Post Updated Date plugin) which does the same thing. If you’re using the Genesis Framework you can use Genesis Simple Edits plugin to add the post modified date shortcode to the ‘Entry Meta’ section under Genesis → Simple Edits.

<p>Last modified: <?php the_modified_date(); ?></p>

Mine looks like this…


Which results in…

Entry Post Modified Date


2.8. Strip Category From URLs

If /category/ is in your blog post permalinks, this serves no purpose and you should remove it in Yoast (SEO → Search Appearance → Taxonomies). Be careful though, this changes permalinks for posts with the word ‘category’ in URLs (setup redirects). See when to change permalinks.



Breadcrumbs are navigational text you usually see at the top of content…


They also appear in search results…

SEO Breadcrumbs

Enable breadcrumbs in Yoast (SEO → Search Appearance → Breadcrumbs)…


Then add this code to wherever you would like breadcrumbs to display. The most common places are the header.php, single.php, or page.php. Here’s Yoast’s breadcrumbs tutorial if you need help. I don’t use them because I don’t like the clutter but if you don’t mind how they look it may slightly improve SEO as it helps users and search engines learn your content structure.

get_header(); ?>
<div id="primary">
<?php if ( function_exists('yoast_breadcrumb') ) {
yoast_breadcrumb('<p id="breadcrumbs">','</p>');
} ?>
<div id="content" role="main">


2.10. Social Meta Data

Customize how your content looks when shared on Facebook/Twitter…


In Yoast go to SEO → Social, then enable meta data under the Facebook/Twitter tab. While you’re here, don’t forget to verify your site with Pinterest and add your Google+ page to Yoast.


Now edit a page/post, scroll down to the Yoast section, click the share link (shown below) and you will be able to upload images to Facebook (1200 x 630px) and Twitter (1024 x 512px). Yes, this means you need to create 2 graphics for each piece of content if you want it to look nice.


If you’re boosting posts on Facebook ads, you can control the ad text using Yoast. Facebook won’t let you change the title, so before sharing your post on Facebook, give it the title you want using Yoast’s “Facebook Title” field (which can be different from the SEO title + meta description). If your Facebook title isn’t working right away, trying clearing your website’s cache. I found it can sometimes take several days to update with new Facebook title/image.

Yoast Facebook Title


2.11. Bulk Editor

Edit SEO titles + meta descriptions in bulk without going through each individual page/post. Super helpful for tweaking meta descriptions to increase CTR or writing them if you haven’t done so yet. Yoast’s bulk editor does NOT tell you each post’s focus keyword or show the length bar, so make sure you include your focus keyword and stay within the character limits.



2.12. Yoast Premium: Worth It? No.

It wasn’t for me.

It includes a redirect manager which can be done using the free Quick Page/Post Redirect plugin. The multiple keyword analysis only detects exact matches of your focus keyword (secondary keywords are usually used as partial matches)… so this is useless except for keeping track of them. As long as you’re writing great content and doing good on-page SEO with Yoast’s free plugin (and tips from this guide), don’t spend $89/year on Yoast premium.

An overview of each feature…

Redirect Manager – lets you fix crawl errors in Yoast’s Search Console tab by setting up redirects (but you can also use the Quick Page/Post Redirects). Yoast’s will automatically setup redirects once a permalink is changed, which is nice, since most other redirect plugins don’t do this. You can also import existing redirects from the Redirection Plugin and .htaccess.


Multiple Focus Keywords – secondary keywords can be targeted by researching a synonym of your primary keyword and incorporating partial matches throughout your content… WordPress Theme Packs (primary) + WordPress Developer Packages (secondary) = 10 Best WordPress Theme Packages / Developer Packs (headline that incorporates both). Since the secondary keyword isn’t used as an exact match, Yoast won’t detect it and your secondary keyword bubbles in Yoast will be red… which is fine but it makes the functionality useless.


Internal Linking – shows related articles you’ve written for internal link suggestions.

Insights – shows most used words on the page.

Social Preview – shows a preview of how a post will look when shared on Facebook and Twitter, but as long as you’re uploading custom images as described in section 2.11, you will know how they look anyway (the same as the photos you uploaded), so you shouldn’t need this.


Premium Support – I’ve heard from multiple people they just refer you to tutorials.

Conclusion – if you see something you like that is worth $89/year, sure. But most people don’t absolutely need this. It likely won’t improve SEO at all… it’s an unneeded luxury if you ask me.


3. Keyword Research

The best keywords are specific (long-tail) phrases with weak content in Google’s search results. If you Google your keyword and see short content that doesn’t cover the topic extensively, you usually have a winner. Here are the tools/strategies I use to find keywords.

3.1. Answer The Public

Answer The Public pulls keywords from Google Autocomplete and divides them into questions, prepositions, and comparisons. It’s literally the coolest keyword research tool.

Yoast Keywords – AnswerThePublic


3.2. Google Autocomplete

Go to and start typing in a keyword to have Google complete the phrase (remember, you’re looking for long-tail phrases usually with 3+ words since those are much less competitive). You can also use an underscore character _ anywhere in the phrase and Google will fill in the blank. You will need to END on the underscore character for that method.


To see even more keywords in the dropdown, use plurals or different word ordering…


Each service (and location) should be targeted on separate pages on your website…


For competitive blog post topics, always select a very specific (long-tail) keyword…

Long-Tail Keywords

You can do the same thing for video keywords…

Video Keywords

How I found a keyword for my Yoast tutorial…




3.3. Moz Keyword Explorer

To make sure you don’t miss any keywords from Google Autocomplete, use Moz Keyword Explorer which is like Google Keyword Planner only better (and free). Start with a broad phrase, run the tool, then under Group Keywords select “yes, with low lexical similarity.” This prevents you from having to scroll through similar keyword variations over and over again.

Moz Keyword Suggestions


3.4. HubShout WebGarder

To see a full keyword list for competitor websites, run them through HubShout WebGrader

My Keywords


3.5. Long-Tail Keywords

Long-tail keywords are very specific phrases (not broad) usually with 3+ individual words in the phrase. They usually have less searches but are way less competitive. If you’re not getting results with your SEO, you’re probably either targeting too broad of keywords or your content isn’t long/thorough enough. You can even target Chicago WordPress Design instead of Chicago Web Design (since it’s more specific) which also reduces competition. Long-tail keywords also bring a more targeted visitor to your site (people who want WordPress design).

Long-Tail Keywords


3.6. Date Keywords

Drive additional traffic by targeting date keywords for time sensitive posts…

Time Sensitive Keywords

The main thing is to include the date (year) in your page title, SEO title, meta description. Of course this requires me to keep the tutorial up to date, but this has already driven quite a bit of extra traffic during 2017 (you can check your most searched keywords search analytics).

Dates In SEO Titles


3.7. Target Synonyms On The Same Page

The general rule is if 2 keywords have the same search intent (people intend to find the same information if they search either keyword), both keywords can be targeted on the same page.

But sometimes you need to analyze the search results to see how much they fluctuate. I have separate pages for WordPress SEO services, WordPress SEO consulting, and WordPress SEO expert. They pretty much all mean the exact same thing, but the search results are very different… so I created a page for each and now I rank in the top 2 for all them. I did the same thing with my Genesis WooCommerce Themes post which also targets ‘Genesis eCommerce Themes’ because when I Googled both keywords, the search results were nearly identical.


3.8. Targeting Multiple Keywords

All you have to do is research a synonym of your primary keyword then incorporate both of these in your page title, SEO title, and meta description. This is by FAR the most important part but you can also sprinkle your secondary keyword 1-2 times in your content. You do NOT have to incorporate both as full keywords (exact matches) otherwise your headline will look spammy. Crafting a headline that sounds nice and includes partial matches is the way to go.

Step 1: Research your primary keyword…

Secondary Keywords

Step 2: Research your secondary keyword…

Secondary Focus Keyword

Step 3: Write a headline that incorporates both and still sounds nice…


Step 4: Rank for both keywords…



You can use the same strategy in your meta description and (sparingly) in the content body.


4. Keyword Competition

A keyword is more competitive if:

  • It’s broad
  • Top results have strong content
  • Top results have high DA/PA in MozBar
  • Top results are populated with authority websites
  • You see lots of advertisements from Google AdWords
  • There are lots of search results (33.8 million is way too many)
  • You’re targeting a broad phrase in a large city (eg. Chicago Web Design)

4.1. Analyze Google’s Search Results

Googling your keyword and analyzing search results is a MUST. You don’t want to spend all that time creating content for a keyword you’ll never rank for. If you Google the keyword and see the indicators below, you may want to choose a different keyword (hint: get more specific).

Keyword Competition


4.2. Mozbar

MozBar Chrome extension allows you to Google any keyword and see the DA (domain authority) and PA (page authority) of each search result. The higher the numbers, the more competitive the keyword is. Use Moz’s Explorer to learn your website’s domain authority and try to compete within your range (see chart below). As you build your domain authority (by creating awesome content and getting links) you can start targeting more competitive keywords that have higher monthly searches in tools like Keyword Explorer. New websites with low DA should target very specific, low competition phrases with low monthly searches.

MozBar Keyword Competition


4.3. How Many Monthly Searches?

The higher your domain authority, the more searches your keywords can have. Run your website through Moz’s Link Explorer (or use any domain authority checker) to find out yours.

Domain Authority

Now use this chart from Orbit Media. I mostly target 3-word phrases, but I spent a LOT of time on content. The more competitive the keyword, the more time you should spend on content.

Keyword Research Shortcut


5. Content Optimization

Don’t forget to add a table of contents to long posts! Here are a few more tips…

5.1. Perfectly Optimized Pages (Examples)

Backlinko’s on-page SEO infographic is the best one I’ve seen so far (that post has 19,000+ shares). Stop worrying so much about green lights, get off the “text and photos” route and start doing something different. Super detailed content, videos, and/or infographics. Do one!


Moz’s on-page ranking factors are also solid…



5.2. Content Comprehensiveness

Content comprehensiveness is the idea that content should answer all aspects of the user’s query. This is why length is strength in SEO (use Answer The Public to see question keywords).

5.3. Aim For 3,000+ Words

I’ve spent several weeks on this WordPress SEO tutorial, but it will likely get 100+ views/day (most of my long articles do). The more competitive the keyword, the more content you should have. You might be able to use 1,000 words for low competition keywords, but 3,000+ words is usually needed for competitive phrases (keywords with more monthly searches and competition in MozBar). I’m not telling you to just add a bunch of text… designing pages and blog posts with nice graphics, table of contents, videos… should all be taken into consideration.

WordPress Word Count

Beefing up posts around key topics is the #1 reason my site went from 500 to 2,500 users/day.


5.4. Cornerstone Content

This is the most helpful content on your website. For me, these are my tutorials on Yoast, speed optimization, Google Search Console and such. Only 20 of my 100+ tutorials generate roughly 80% of my traffic. They also get me most of my clients, links, subscribers, and affiliate sales. I put these front and center on my homepage, nav menu, sidebar, and after entry widget.

WordPress SEO Series

I HIGHLY contribute my large traffic spike to these tutorials. They’re way more useful than my boring WordPress SEO consulting pages (no one’s gonna link to that). You need to learn which content your audience would find most useful and actually execute on creating that content.

Google Analytics Stats


5.5. Snippet Character Limits
  • SEO title: ideally 50-55 characters
  • Meta description: ideally 145-155 characters

Yoast tells you whether they’re too short or long…

Yoast Character Limit

So will the HTML improvements section of Google Search Console…

HTML Improvements

Google Is Using Longer Meta Descriptions (Sometimes)
Google started showing longer meta descriptions in some search results. These are chosen by Google (they are not pulled from Yoast) and are usually taken from actual content on the page. Your meta descriptions should still follow Yoast’s “length meter” in case Google decides to use the normal character length, and leave it to Google to pull the longer version – if they choose.


In this tweet Danny Sullivan from Google says…



5.6. Rich Snippets

Rich snippets add extra information to snippets and can increase CTR…

Structured Data Review Stars


  • Write reviews, recipes, or other content types where rich snippets can be used
  • Choose a rich snippets plugin (eg. All In One Schema or WP Review)
  • All In One Schema is free but has minimal customization options and looks boring
  • WP Review looks much better, has multiple pre-styled templates, is maintained and updated frequently by the MyThemeShop, supports 14 data types, and is what I use
  • Use the plugin to markup content and test it using Google’s Structured Data Tool
  • Use my tutorial on adding rich snippets to WordPress for full instructions


Featured snippets are when Google showcases parts of your content in the very top result. Google pulls this from any 1st page result that does a great job at concisely answering questions in the form of paragraphs, lists, and tables (the 3 types of featured snippets).

I contribute this one to writing designing a nice graphic about the keyword (SiteGround vs. Bluehost), linking to quality/unbiased references Google sees as facts (how Bluehost is owned by EIG, Facebook Polls, WordPress’ recommended hosting page), and keeping it fact-based.

Featured Snippets

How To Get Google To Award You Featured Snippets

  • Target a keyword where people want a concise answer
  • Moz Keyword Explorer has a filter that helps find question keywords
  • Determine whether the answer should be a paragraph, list, or table
  • Target keywords that already have an featured snippet but do a poor job
  • Create fact-based content with quality references (links, graphics, etc)
  • If you’re aiming for the answer box, target your keyword using an exact match
  • Make sure you’re on the 1st page for the keyword, if not, improve the content
  • Google ultimately determines whether they will show your result, or any result at all


5.8. Crafting Headlines

Headlinesposts usually have longer headlines than pages. My post headlines usually go something like this: The Ideal WP Rocket Settings With Cloudflare + StackPath Instructions (#1 Rated Cache Plugin, Newest Version My pages are more like this: WordPress SEO Consulting. Most of my pages use an exact keyword match describing the service while my posts also describe what’s covered in the tutorial (and often times includes the year “2018” to help target dates keywords). This entices people to read and can lead to lower bounce rates.

Page headline: WordPress SEO Consulting – short
Post headline: The Ideal WP Rocket Settings With Cloudflare + StackPath Instructions (#1 Rated Cache Plugin, Newest Version – long


5.9. Crafting SEO Titles

Some people try so hard to get green lights in Yoast by including their keyword, they forget to write a nice headline that will get people clicking their link. Here are some headlines examples.

Headline 6

Headline 3

Headline 4

Headline 5

Headline 2

SEO Titlespost SEO titles are usually a shortened version of your longer headline: The Ideal WP Rocket Settings With Cloudflare + StackPath CDN (2018). Pages are usually a longer version of your short headline: WordPress SEO Consultant / Yoast Expert – Tom Dupuis. I included “Yoast Expert” because I know most people searching for WordPress SEO consulting need help with Yoast. Instead of just including your keyword and sitename (boooring), make yourself stand out a little – tell them WHY you’re different than everyone else in Google.

Page SEO title: WordPress SEO Consultant / Yoast Expert – Tom Dupuis – lengthened version of my headline “WordPress SEO Consulting”
Post SEO title (shortened): The Ideal WP Rocket Settings With Cloudflare + MaxCDN (V. – shorted version of my headline “The Ideal WP Rocket Settings With Cloudflare + StackPath Instructions (#1 Rated Cache Plugin, Newest Version”


5.10. Crafting Meta Descriptions

Yes, you should use your focus keyword here (or a variation of it). But the main purpose of the meta description is to summarize the content and tell people WHY they should click on your result. In my Yoast settings tutorial the meta description tells people I include a zip file of my pre-configured Yoast settings. Small stuff like this can easily increase your click-through rates.

Meta Description


5.11. Social Image Optimization

See section 2.11 to make your content format properly when shared on Facebook/Twitter.


5.12. Drop Your Keyword A Couple Times In The Content

Keyword density barely matters (you can actually get penalized for keyword stuffing) but you should use it a few times in the content, the most important being in the first couple sentences. Yoast makes a big deal about keyword density but I disagree, it often leads to spammy content.

It doesn’t have to be a complete 100% exact match of your focus keyword, but it should be close and read naturally. Yoast only detects exact keyword matches in visual editor (not page builders) so as long as you mention it (or a variation), you can ignore the keyword density recommendation in Yoast. And if you include an image at the top of the post, Yoast counts this as the first paragraph – so using your “keyword in first paragraph” (a Yoast recommendation) is sometimes not possible. Don’t overthink it… when writing about the topic, you’ll usually mention bits of your keyword naturally in your content/images. That’s what Google wants.

Yoast FOcus Keyword Density

Focus Keyword In First Paragraph


5.13. Avoid Keyword Stuffing

Why you shouldn’t obsess over green lights…

  • Google penalizes keyword stuffing
  • Yoast only detects EXACT matches of your focus keyword
  • If you use partial matches (synonyms), Yoast won’t detect it
  • Too many exact keyword matches makes your content look spammy
  • Partial matches / synonyms are encouraged and often sound more natural
  • Headlines should entice people to read, not just include your focus keyword
  • Content optimization is more than keyword usage, which is mostly what Yoast suggests

What Yoast’s SEO Analysis should say:

WARNING: injecting keywords in your content/snippets makes them look spammy! Have you thought about writing an SEO title + meta description to increase CTR? Every result in Google will be using the keyword – why would anyone click your link? Yes, you should use your keyword in the page title, SEO title, and meta description… but don’t inject keywords just to get green lights in Yoast. Forget about keyword density and keywords in subheadings… start thinking about adding a table of contents to longer posts, videos, infographics, rich snippets, social sharing images, and beefing up thin content to make it better (more detailed) than everyone else’s.


A few notes on permalinks (URLs/slugs)…


Shortening permalinks emphasizes keywords to search engines…

Shortened Permalinks


5.14.2. Don’t Always Remove Stop Words

Stop words are short, non-descriptive words which Yoast recommends removing from permalinks to put a heavier emphasis on your focus keyword. While this is usually good, it can also make your permalinks look very weird (see below). If people can look at your permalink and know what the article is about, remove them. But if it makes them read funny, don’t.


Why you shouldn’t always remove stop words…



Here’s when it’s OK to change permalinks:

  • You’re switching to SSL (HTTPS)
  • You’re switching to non-WWW
  • The word “category” is in post URLs
  • You’re using the ?p=123 permalink structure
  • The old version of Yoast stripped all your stop words
  • The permalink does not describe the page’s content/keyword
  • You’re rewriting content to target a completely different keyword
  • The page/post is not well established (it has low traffic/links/shares)

It’s best to fix permalinks all in one go rather than change them multiple times. If you’re switching to SSL anyway, you might as well switch to non-WWW, strip ‘category’ from blog URLs, and fix any pages/posts with permalinks that don’t describe it’s content/keyword. Be sure to setup the proper redirects and give Google time to recrawl your site and update the new permalinks in search results. You may see a drop in rankings – which is usually temporary.


The post name permalink structure ( is generally the best option. You can find this in WordPress under Settings → Permalinks. It’s short and lets your post title be in the front of your permalinks (which includes your keyword). You may consider a custom structure of /%category%/%postname%/ which categorizes your posts under your blog categories. Both are good unless you have a great reason for using a different structure.

Post Name Permalink Settings


5.15. Image SEO

Remember to optimize images for speed in section 6.7.

5.15.1. Image File Name

Label images before uploading them to WordPress so the file name describes the image. If you’ve already uploaded them with non-descriptive file names (DSC12345), reupload them. Do NOT stuff keywords in the file names or alt text (only use it if it actually describes the image) and ignore this Yoast recommendation if the bubble is red. Simply describe the image.

Image File Name


5.15.2. Image Alt Text

The alt text should be the same as the file name. To have WordPress fill in alt text automatically, use a plugin like Auto Image Attributes From Filename With Bulk Updater.

Alternative Text


This section covers internal links, external links, link titles, affiliate links, and fixing broken links. It also touches on backlinks – typically acquired by creating outstanding content.


Internal links are a natural way to build links to your content while helping people find info about a specific topic. If I recommend configuring WP Rocket in this guide, I will point to my WP Rocket tutorial instead of pasting every screenshot, which would be duplicate content.

Control Sitelinks – the more links you have to a page, the more likely it will show in the sitelinks section of Google’s search results. Internal links is the primary way to control these.


Don’t Use Internal Linking Plugins – no algorithm will do a better job than manual inserting links which is also true for “related posts” plugins. Plus, these plugins can slow down your site.


External links are like citing sources to Google. They should be from trustworthy websites but also provide additional information about specific topics. Avoid linking to generic websites like Wikipedia and instead link to content within your niche. Use a few on each page since Google uses the content you link to as a relevancy signal for your own content, and improves it’s SEO.


5.16.3 Anchor Text

Anchor text is the text used to name your link. Moz recommends using brief, descriptive, non-keyword heavy anchor text, while Wikipedia uses all exact match anchor text (which some people believe helps improve that page’s ranking for it’s keyword). I follow Moz’s strategy as exact matches can look spammy and might tell Google you’re trying to manipulate rankings.

<a href=””>Example Anchor Text</a>


Want to reduce bounce rates? Use link titles to help people learn what they’re clicking on.

Link Titles

Whenever you add a link, add a title too…

WordPress Link Titles


I make a living through affiliate marketing and have a couple tricks up my sleeve…



  • Don’t use a ton of affiliate links on 1 page
  • Add rel=”nofollow” to all your affiliate links
  • Don’t always list the most expensive/affiliate products first
  • Create landing pages for products you’re selling and link to those instead
  • Cloak affiliate links, or use your affiliate’s link customizer if available ( looks much better than
  • Add a TON of value to your content to avoid penalties (affiliate sites are prone)

ps. if you’re in the WordPress industry, check out my list of affiliate programs for WordPress.


Dr. Link Check scans up to 7,500 links/month for free. Avoid the Broken Link Checker plugin which does a good job, but the scans consume CPU and is banned by many hosting companies.


The only time I hired a link builder (who had a perfect 5 star review on, I got a Google Penalty. This crushed my website traffic/finances. I got the penalty lifted by going through each individual link to my site, requesting the webmasters remove the links my freelancer built, and sending a reconsideration requesting to Google. I also worked tirelessly to improve my content. It wasn’t until more than 1 year later the penalty was finally removed.

Lesson: don’t hire a link builder. Hire an infographic designer.

Backlinko’s link building guide lists “visual assets” as #1… specifically referring to infographics, in-depth guides, and things on your site people WANT to link to. He got 19,000+ shares on his on-page SEO guide… which started with a sweet infographic. Don’t waste your time on link schemes or reaching out to people you don’t know asking for a link… work on content, rank higher through that, and people will find you, and they will link to you. Content yo, CONTENT!


5.17. Click-Through Rates

I cover everything needed to increase click-through rates in this guide, but this is a reminder of how important they are. These can be measured in Google Search Console’s Search Analytics.

Click-through Rates


5.18. Videos + Infographics

Can you tell how much time I’ve spent on my screenshots? Days probably. You can either do this, videos, or infographics. Pick one or two. But you need one of them – not just written text.


5.19. File Posts Under 1 Category

Label posts under 1 category to avoid duplicate content.

WordPress Categories Tags

If you plan on indexing category pages, (under the Taxonomies tab in Yoast), you should design those category pages so they look nice! Give it a heading, description of what the category is about, design your sidebar and write a custom SEO title + meta description with a keyword for that category. It will have a better chance of ranking.


5.20. Don’t Overdo Tags

These are usually key topics covered in the post.

WordPress Categories Tags


6. Speed Optimization

Want 100% GTmetrix scores? This section shows you how I did it.

6.1. GTmetrix vs. Pingdom vs. PageSpeed Insights

Load time is the primary metric you should measure, which scores are highly correlated with. These are improved by fixing speed recommendations (GTmetrix is my favorite tool for this).

GTmetrix – see which plugins/elements take longest to load in the “Waterfall” tab (they will also appear multiple times in your Page Speed/YSlow report), unoptimized images, CDN checker in the YSlow tab, and check your TTFB (time to first byte) shown in the “Timings” tab.

Pingdom – most accurate tool for measuring load times according to WP Rocket.

Google PageSpeed Insights – measures server response times which should be <200ms. Kind of useless otherwise as it doesn’t measure load times (GTmetrix/Pingdom recommendations are much better) while mobile speed is usually improved in conjunction with desktop speed.


6.2. Hosting

The word ‘server’ is literally mentioned 70 times in the WordPress optimization guide and 35 times in GTmetrix’s why is my page slow tutorial (news flash… it’s kind of important). Run your site through Google PageSpeed Insights to see if reduce server response time is in your report. If it’s not under 320ms like Google recommends it likely means your server (hosting) is slow.


Another indication is if your time to first byte is high in the “Timings” tab of GTmetrix


The same company (EIG) owns Bluehost, HostGator, iPage, Site5, Unified Layer, and over 60 different hosting companies. They are known for cutting costs by packing too many people on the same server (stressing it out) and have horrible reviews because of it. Many websites hosted by EIG have high response times, and I would avoid using these companies at all costs.


I use SiteGround and have 200ms response times with 100% GTmetrix scores and .4s Pingdom load times. Do a hosting check, run your own tests, or click through my fast loading pages. They were rated the #1 host in 26 Facebook polls and are worlds better than EIG (Bluehost, HostGator), Godaddy, and other hosts who pack too many people on the same server. There have been plenty of people who migrated and posted results on Facebook and Twitter. Tweet after tweet, post after post, poll after poll after poll, faster hosting will fix slow response times. They’re recommended by WordPress, do free migrations, and I use their semi-dedicated plan.

2019 Hosting Poll


Elementor Hosting Recommendations

July 2019 Hosting Recommendation











WP Friendly Hosting Poll


Favorite Hosting For Elementor

2018 Hosting Recommendations

WordPress Hosting Poll Sept 2018.png










Bluehost vs SiteGround

WordPress Web Host Poll

What other people say…


People who migrated…

Switching To SiteGround

SiteGround Load Time Migration

Bluehost to SiteGround GTmetrix

HostGator To SiteGround

SiteGround GTmetrix

SiteGround Google PageSpeed Insights

100 Perfect Score On SiteGround

SiteGround Genesis

Speed Delivered By SiteGround

SiteGround GTmetrix Report

Reduced Load Times With SiteGround

New SiteGround Response Times

HostGator To SiteGround Migration

SiteGround Response Times On Joomla

Switched To SiteGround Hosting

SiteGround Rocket Imagify Combo

Joomla GTmetrix On SiteGround

SiteGround PageSpeed Insights

SiteGround On Joomla

SiteGround Reduced Load Times

SiteGround Speedy Hosting

New Pingdom Results On SiteGround

New SiteGround Response Time

SiteGround Response Time Improvement

They have 3 plans


I’m on their semi-dedicated GoGeek plan and here’s my Pingdom report


My GTmetrix report


Higher plans include more server resources (number of servers is the #1 factor in the WordPress optimization guide). You can see a full comparison chart of their StartUp vs. GrowBig vs. GoGeek plan, but GrowBig gives you about 2x server resources as StartUp, and GoGeek is semi-dedicated hosting which gives you even more server resources. GrowBig + GoGeek come with priority support and you can host unlimited sites. Cloud hosting is quite the price jump at $80/year but comes with 2CPU + 4GB RAM and is even faster than GoGeek.

You can see this on the features page


Their speed technology is the main reason people choose them (NGINX servers, solid states drives, HTTP/2, PHP7, HHVM and 1-click Cloudflare activation in the cPanel with the option to use aggressive caching, minify, and Railgun). Combine SiteGround + Cloudflare + WP Rocket and I will literally PayPal you $50 if your scores/load time don’t improve. Their uptime technology is just as good and I have 100% uptimes in Uptime Robot. You also get WordPress-related support that answers tickets in about 10 minutes average, automatic daily backups, free Let’s Encrypt SSL for eCommerce, and other WordPress features. SiteGround will even migrate ALL your websites/email for free if you’re on cPanel, and 1 website if not on cPanel.

Almost 5 years for me…


Affiliate Disclaimer – if you sign up for SiteGround with my affiliate link I will donate a good chunk at no expense to you. Each year I donate $3k to GoFundMe campaigns (2018 was to feed the hungry in Denver, 2017 was to Red Cross at Hurricane Harvey). Your support helps and I genuinely appreciate it. I try to make my reviews unbiased and backed by evidence in the form of Facebook polls, tweets, and real conversations. If you don’t want to use it, here’s a non-affiliate link to SiteGround. Either way I truly believe they are a stellar WordPress host and your site will run faster/smoother… do your research on Facebook groups + Twitter and you’ll find most people say the same.


6.3. Lightweight Themes (StudioPress)

StudioPress themes are lightweight (they load super fast) and are recommended by Yoast, Matt Cutts (from Google) and even Matt Mullenweg. Lightweight themes have minimal built-in functionality resulting in less unnecessary bloat, and instead rely on plugins to only add functionality you need. Divi and ThemeForest themes often have so many built-in features which can kill your load times. There are many lightweight themes out there, but StudioPress is definitely one of the most highly regarded theme stores. I use their Outreach Pro theme.

StudioPress Themes


6.4. Lightweight Plugins (List)


SlidersSoliloquy, LayerSlider, or Meteor Sliders.

PortfolioEnvira Gallery, FooGallery, or The Grid.

Social SharingSassy Social Share or DVK Social Sharing.

Analytics – Google Analytics and Search Console should be plenty, or Clicky.

Page BuildersWordPress Page Builder by MotoPress, but no page builder runs faster than the native WordPress Editor. Combine this with the Duplicator plugin and you shouldn’t need a page builder (including page builders built-in to WordPress themes). Unless your team absolutely refuses to learn a little HTML (the easiest coding language), avoid page builders.

CommentsDisqus Conditional Load.

StudioPress Plugins – lightweight plugins for the Genesis Framework.


6.5. Speed Optimization Plugins (List)

These are all top rated, but avoid installing 2 plugins if they have duplicate functionality.

6.6. High CPU Plugins (List)


6.7. Image Optimization

There are actually 20 ways to optimize images – who knew? But if we’re taking speed, these are the top 3 in GTmetrix. Just keep in mind GTmetrix only shows unoptimized images for a single page so it’s best to start with images that appear on multiple pages (logo, sidebar, footer images) then run your most important pages through GTmetrix and optimize images on those.

GTmetrix Image Optimizations

Read my full WordPress image optimization tutorial to learn how to:

Image Optimization TOC

Serve Scaled Images – resize large images to the dimensions shown in GTmetrix. Sometimes GTmetrix shows the wrong dimensions in which case you can take a screenshot of the image at 100% zoom and measure the width + height in a program like GIMP (image editing tool I use).

Serve Scaled Images

Lossless Compression – this is the “optimize images” item in GTmetrix. Imagify and Kraken are the best plugins for this, I use Imagify. Other plugins have bugs, won’t compress images, or they can break images. These have a monthly limit for free accounts but do a much better job.

  1. Sign up for Imagify
  2. Install the Imagify plugin
  3. Go to your Media section in WP
  4. Bulk compress all images on your site
  5. Once you hit the 25MB limit, pay $4.99 for 1GB of data or wait for next month


Specify Image Dimensions – means you need to specify a width/height in the image’s HTML or CSS. The visual editor does this automatically so this usually occurs in widgets, CSS, or other sections of you website that are coded manually. Just follow the example in the photo below…

Specify Image Dimensions In WordPress


6.8. Cache Plugin

WP Rocket was rated the #1 cache plugin in multiple Facebook polls while Swift Performance (new kid on the block) and WP Fastest Cache are usually 2nd and 3rd. SiteGround’s SG Optimizer has also gotten better and better. A lot of people also use W3 Total Cache but there’s been a lot of bugs reported. You should only have 1 cache plugin installed, but if you’re using a free plugin, should test multiple cache plugins to see which yields the best load time.

I wrote tutorials for all 5…

2016 best cache plugin poll

2019 cache plugin poll

Swift vs WP Rocket

2016 cache plugin poll

Best cache plugins 2018 poll

wp rocket vs w3 totla cache


6.9. Cloudflare

Cloudflare is an easy (and free) way to improve speed using their CDN and protect your website using their internet security. It depends on your host but many of you can enable Cloudflare in your cPanel (screenshot below is for SiteGround). WP Rocket, WP Fasetst Cache, and W3 Total Cache integrate with Cloudflare if you would rather set it up that way.

Or activate it in your cPanel…

SiteGround Cloudflare Activation

Be sure to turn on aggressive caching, minify, and Railgun for even faster load times…

SiteGround Cloudflare Settings


6.10. CDN

Cloudflare focuses more on hosting while StackPath focuses purely on the CDN (speed). Cloudflare has 200+ data centers while StackPath has 30 data centers, but more data centers = faster website, and StackPath’s are mostly located in the US which is, at least, where most my readers are. Cloudflare charges additional for HTTPS traffic and doesn’t have support with the free plan. Combining both services gave me the fastest load times and scores in GTmetrix + Pingdom, and I currently use both. StackPath is $10/month with a 30-day free trial, Cloudflare is free. My tutorials show you how to setup StackPath with your cache plugin but I would contact their support when you’re done as they helped me further improve load times.



6.11. Lazy Load Videos

Videos are usually the heaviest element on a page. This delays loading them until you scroll down and actually see the video which should reduce load times by multiple seconds (I did this on a post with 2 videos and it improved it by 6s). If you’re using WP Rocket they have an option to enable this in the basic settings, or you can use the Lazy Load For Videos plugin. I do not lazyload images since this can be annoying for your readers to have images constantly loading.

WP Rocket Lazyload Option


6.12. Web Fonts

If you see font-related errors in GTmetrix/Pingdom, hosting fonts locally should help fix them.


How To Host Local Google Fonts

  1. Choose a Google Font
  2. Download the font
  3. Convert to web fonts (using Transfonter)
  4. Be minimal with number of fonts/weights
  5. Download converted font files
  6. Upload font files to WordPress (ideally wp-content/uploads folder)
  7. Add custom font to CSS
  8. Test the font
  9. Set a default font
  10. Always have fallback a font


6.13. Remove Query Strings

This is an item you might see in speed testing tools (Pingdom, GTmetrix, PageSpeed Insights). WP Rocket also has an option for this so be sure to enable it in the advanced options. You can also try the Remove Query String From Static Resources plugin but I’ve heard it doesn’t always work. You can also try minimizing your plugins and your score should improve for this item.

Remove Query Strings From Static Resources


6.14. Database Cleanup

This deletes junk files (trash and spam folder, post revisions that accumulate whenever you update a post, trashed comments, transients, and other junk. Use WP Rocket’s Database settings to clean up your database or use the WP-Optimize plugin which also does a great job.

WP Rocket Databse Settings


6.15. Plugin Optimization
  • Expand items in your GTmetrix report to look for problematic plugins
  • Use the GTmetrix Waterfall tab to see plugins taking longest to load
  • Delete/deactivate plugins you don’t use, and use lightweight plugins
  • Insert Google Analytics tracking code manually without using a plugin
  • Replace social media plugins with Facebook page plugins or Twitter widgets
  • Deactivate ongoing scans causing high CPU usage (eg. Wordfence live traffic report)
  • If you use plugins because you don’t know code, ask your developer about alternatives


6.16. Comment Optimization

Lazy Load Comments – use Disqus Conditional Load if using Disqus.

GravatarsGravatars slow down posts with lots of comments (run a post with comments through GTmetrix and you’ll see Gravatars will ruin your report). You have a few options…

  • Disable comments completely
  • Set your default Gravatar to Blank
  • Disable Gravatars under Settings → Discussion
  • Delete comments that don’t add value to your post
  • Set your default Gravatar to a custom image on your server
  • Restrict your Gravatar images to small dimensions (e.g. 32px)
  • Load comments dynamically using the Hide Show Comments plugin

Prevent Spam – the Anti-Spam plugin does an excellent job and doesn’t use captcha.


6.17. Disable Unnecessary Functions

Clearfy and WP Disable do a great job of disabling things like heartbeat control, pingbacks, trackbacks, autosaves, XML-RPC, limiting post revisions, and more. This basically clears your website from unused functions that may be appearing in your GTmetrix/Pingdom reports.

Tips On WP Disable

  • Disable EVERYTHING you don’t use
  • Scheduling spam deletion is a good idea
  • Emojis, Google Maps, and Gravatars take a long time to load
  • Pingbacks and trackbacks aren’t usually worth the extra resources
  • Set post revisions to 3-5 so you have backups, but you don’t need hundreds
  • Miscellaneous options in the “request” tab can further your improve load times






Host Google Analytics Locally
In the right side of the WP Disable settings, you have the option to enter your Google Analytics UA code. This should fix the “leverage browser caching” item for Google Analytics often seen in GTmetrix, Pingdom, and Google PageSpeed Insights. Be sure to delete any other tracking codes and Google Analytics plugins, and make sure your GA is still tracking user data.




6.18. AMP (Accelerated Mobile Pages)

AMP Pages make your mobile pages load faster and adds an AMP stamp to mobile results…

Accelerated Mobile Pages

Yoast AMP

How To Add AMP Pages To WordPress

  • Install the AMP plugin (adds actual AMP pages)
  • Install the Glue For Yoast & AMP (lets you customize the design)
  • Add /amp/ to any page to see how it looks and make sure it works
  • Go to Yoast’s Settings → AMP to change your design and enable custom post types
  • Be sure the tweak your featured image on the top of your pages (see Yoast’s tutorial)
  • Check the AMP section of Google Search Console and find and fix AMP errors
  • Turn on Accelerated Mobile Links in Cloudflare’s speed settings (see below)

Cloudflare Accelerated Mobile Links

6.19. Avoid External Resources

Google Maps, AdSense, job posting services, or any plugin that pulls content from somewhere else should be avoided. Images should be uploaded to your WordPress dashboard and not copied/pasted from another website to put on yours. Pulling content from external websites and showing them on your site absolutely kills grades/load times. Check your GTmetrix report.



7. Google Search Console

Google Search Console has been way more helpful than Google Analytics for optimizing my site. You can set it up using Yoast in section 2.2. It takes a few days for your data to populate, and even a couple months for enough data to be collected if you want to use Search Analytics.

7.1. Don’t Include WWW

The ideal domain name is non-www with SSL:

You can change your preferred domain name in the Site Settings of Search Console. This should be the same version in WordPress (Settings → General → WordPress Address + Site Address). Ensure all links on your site are non-www (you can use the Better Search Replace plugin), setup redirects, and verify the new version in Search Console, while keeping the old.

Preferred Domain Name

John Mueller from Google says…

You’d still need to kind of see this as a kind of site migration, so I would definitely go through the migration tips we have in the help center, with regards to setting up redirects properly, the canonicals, hreflang, all of that to make sure that’s set up between the different versions…

…if you are doing this change and you are still on http, then maybe it makes sense to say well we’ll take this moment where we have to do a migration anyway and move to https. So kind of taking the next step already instead of kind of leaving that for the next year to kind of run through.


7.2. International Targeting

Setting international targeting in Google Search Console tells Google which countries are most important to you. And no, it does not exclude your website from all the other countries.

International Targeting Google Search Console


7.3. Crawl Errors (See section 2.4)


7.4. Mobile Usability Errors

The mobile usability section of Google Search Console shows ALL mobile errors on your site (Google’s Mobile Testing Tool only shows errors for a single page). Just because you’re using a mobile responsive theme does NOT mean your site will be free of mobile errors, always check!



7.5. WordPress Security

The Security Issues section of Google Search Console tells you if your site has issues, but Sucuri’s security checker is also good. Besides changing your generic “Admin” username, using a strong password, and making sure WordPress core/themes/plugins are updated, I use Wordfence. Just make sure you disable live traffic reports which consumes server resources and slows down your site. iThemes security is good too, but only use one security plugin.

Sucuri Security Checker


7.6 Search Analytics

Google Search Console’s search analytics is better at measuring SEO than Google Analytics. Once in the search analytics tab, tweak the filters to measure your rankings, CTR, clicks, etc.

Search Analytics Filter

Compare your SEO to a previous time period…

Date Comparison

See queries (keywords) you rank for…

Google Search Console Queries

See queries you rank for about specific topics (this one is for SiteGround)…

Search Analytics Query Filter

Improve low quality content…


If you like these, check out my 7 Google Analytics Custom Dashboards.


8. Local SEO

Here’s how to rank higher in Google Maps and local results.


8.1. 2018 Local Ranking Factors

Here are the latest 2018 local search ranking factors (reported by Moz every 2 years).

2018 Local Search Ranking Factors


8.2. Citations

Citations – online mentions of your business name, but most people think of these as directories / social media profiles (Google My Business, YellowPages, Bing Places, Facebook, Yelp, TripAdvisor and niche sites). Creating a plentiful amount of citations and getting reviews on them is the best thing you can do to rank higher in local search results – especially Google Maps. Moz Local and Whitespark will help you build these citations (or outsource them).


8.3. NAP

NAP (Business Name, Address, Phone) – these need to be consistent across ALL your citations and on your website. If you only have 1 location, you can list your NAP in the footer. If you have multiple locations, list their individual NAPs somewhere on their landing pages.


8.4. Google My Business

Optimizing Your Google My Business Page

*Google is increasingly taking into consideration activate business owners who: post on Google Posts, respond to reviews, keep special hours updated, answer questions, make it convenient for customers to take direct actions on GMB using business URLs.

Google My Business Logo


8.5. Moz Local

Moz Local tells you whether your business is listed on the top 15 citation websites and if you have incomplete, inconsistent, or duplicate profiles. It also tells you exactly what to do (additional profiles you need to create, which profiles need more photos, and duplicates to delete. As you fix these your score will improve – ideally your score will be close to 100%.

Moz Local Citation Score


8.6. Whitespark

To rank higher in Google Maps you need even more citations than those in Moz Local. You can either build these yourself (using Whitespark’s list of top citations) or hire Whitespark to build them for $4-5 per citation. I have used their service to get multiple clients in the top 3 results of Maps and it should improve rankings for multiple localized keywords. I usually start with Google My Business and Moz Local, then top it off with $500 worth of citations from Whitespark. It works very well and they have a perfect 5 star on Google with 200+ reviews.

Whitespark Citation Building


8.7. Reviews

Your Google My Business page is the most important place to get reviews on and you only need 1 for those reviews stars to show up in Google’s search results. Even though reviews are only 10% of how you rank, they often determine a whopping 90% of your conversion rates. They show up when you Google your business name and for non-branded localized keywords.

Google Reviews For SEO


8.8. Local Keywords

I cover keyword research in section 3, but local keywords have a unique strategy…

  • Small cities usually have few broad keywords (Lake Forest Photographer)
  • Large cities usually have many specific keywords (Chicago Newborn Photographer)
  • Each city has unique keywords, so if targeting multiple locations, research each one
  • Ex: if you’re a Chicago wedding photographer, also create pages for “Indian” and “Gay”
  • Use the underline character to have Google “fill in the blank” for different services

Word Ordering Keywords

8.9. Multiple Locations

Each Location Should Have It’s Own Citations – each location should have it’s own Google My Business page, Yelp page, social profiles and other citations from Moz Local and Whitespark.

Research Keywords – each city has it’s own set of keywords which should be researched in Google. Large cities will have more keywords than small towns (since the population is higher).

Chicago Keywords

Create Geo-Targeted Pages For Each City’s Keywords – a typical strategy is to create 1 page for each city which targets the primary keywords (eg. Chicago Dentist, Orlando Dentist, etc) with a permalink structure of If there are other more specific keywords being search in Google Autocomplete, you can create separate pages for those.


8.10. Geo-Targeted Pages

Unique Content – you can design a template to use for geo-targeted pages, but avoid search and replace pages (where everything is the same except you swap out the city name and a couple images) since this is duplicate content. Each page should be unique about it’s location.

Google Map + Reviews – I usually recommend avoiding Google Maps since they slow down load times, but it’s a great way to differentiate your geo-targeted pages and looks nice too.

NAP – each page should have the location’s unique NAP (business name, address, phone).


8.11. Personalization

Click-Through Rate – writing a nice Yoast SEO title + meta description to get people clicking on your search result, and of course, getting more reviews will improve click-through rates.

Mobile Clicks To Call – add a button (or hyperlink) where people can click to call you.

<a href=”tel:555-555-1212″>555-555-1212</a>

Check-ins – award people for checking in.


8.12. Local Rank Tracker

No other tool measures local SEO like Whitespark’s Local Rank Tracker. It’s accurate and tracks keywords for multiple locations across Google organic, Google Maps (snack pack), Bing organic, Bing pack, and other search results. Their small business plan is $20/year but it’s well worth it as it’s the best/easiest way to track local rankings. Yes, better than Search Analytics.



9. YouTube SEO

How to rank videos in YouTube (and Google)…

9.1. YouTube Ranking Factors

YouTube relies heavily on engagement signals for ranking videos (watch time, likes, shares, comments, subscribes, comments, click-through rates). Just like optimizing any content there are on-page factors (keyword in title, description, file name, attractive thumbnail…) and off-page factors (links to video, # of embeds). Keyword research and creating a video that’s better than whoever’s in the top results is the best way to rank. I typically spend 8 hours on a video.



  • Research a video keyword in YouTube Autocomplete
  • Research the competition using VidIQ Chrome Extension
  • Record a 10+ minute HD video
  • Encourage people to like/subscribe
  • Include keyword in video file name, title, description
  • Include timestamps in video description + helpful links
  • Add tags, custom thumbnail, and upload a transcript
  • Respond to comments and embed the video on your site


9.2. Video Keywords

The best video keywords are specific (long-tail) phrases that show up in both YouTube and Google Autocomplete. That way you can rank in both places – amplifying your exposure. Start typing a keyword in YouTube and it will complete the phrase, or use the underline character _ to have it fill in the blank with more keyword ideas. You can do this anywhere in the phrase.

YouTube Autocomplete (Complete The Phrase)

Google Autocomplete (Fill In The Blank)
Autocomplete Phrases


9.3. Video Keyword Competition

vidIQ Chrome Extension – search your keyword in YouTube and view the top results to see each video’s SEO signals. SEO score is based on likes, dislikes, views, comments, shares, view time, subscribers, tags, video description length, and other metrics. Lower scores = easier to outrank that video. The most important (IMO) are views, like/dislike ratio, and # of comments.


Most signals can be seen without the extension…


MozBar Chrome Extension – Google your keyword while searching YouTube, like this: your search term. Results with higher PA (page authority) means higher competition, which means you should probably find a more specific (long-tail) version.


9.4. Aim For 10+ Minutes

Length Is Strength – just like posts, longer videos that cover the topic extensively will rank higher. Remember to add timestamps in your video description to help people navigate.

Say Your Keyword – verbally saying your keyword a few times is like keyword density for videos. This usually comes naturally (partial matches are also good) so don’t just say it to say it.

HD Quality – new iPhones usually have better quality than Androids and even some amateur cameras. I use Screencast-O-Matic for screen recording and editing, combined with a Blue Yeti microphone. When recording your computer, check your settings for optimal video + audio.


9.5. Video File Name

Before uploading your video, label the video file as your keyword…



9.6. Video Title


A good title has 2 things: your keyword, and an enticing headline. Google typically displays the first 50–60 characters, so try to stay within that range. You don’t ALWAYS have to use an exact match of your keyword, but each individual word should at least be present in the video title.


9.7. Video Description

Write long descriptions with timestamps, useful links, and an overall summary.


Include Keyword In The First Sentence – both YouTube and Google use (about) the first 155 characters as the meta description which appears in both their search results. Craft this sentence or two wisely – people read this to determine whether they will click your video. I like to include my keyword about 2 times in the description, once in the first 155 characters.



Timestamps – lets viewers jump to sections of the video so they can find what they’re looking for, which also improves engagement with your video. This is especially helpful for long videos.


  • :21 (21 seconds)
  • 1:21 (1 minute and twenty one seconds)
  • 1:30:21 (1 hour, 30 minutes and 21 seconds)


9.8. Add Tags (Conservatively)

Don’t fuss over this, just add a few…

Youtube Tags


9.9. Custom Thumbnail

Upload a custom thumbnail in the video manager under Info & Settings (you will need to verify your account first). Dimensions should be 1280(w) x 720(h) pixels. This will appear in search results and the “related searches” section in YouTube. Try writing something in BIG LETTERS.



9.10. Transcript

Google doesn’t go a good job in transcribing videos into text (look at how sloppy it is in the photo). You will need to transcribe it manually, otherwise the keywords you mention in your video will go to waste. You can also outsource this to a freelancer for cheap on





9.11. Embedding Videos

Tweaking The Iframe

Option 1: Copy the YouTube link and paste it to your content (WordPress will do the rest).

Option 2: Go to the YouTube video you want to embed, then copy and paste the embed code into your HTML. This method allows you to specify the video’s width and height:

Embed a YouTube Video

Option 3: Open a video when you click a link using the WP Video Lightbox Plugin.

Hide YouTube Video Title

<iframe src="//" width="680" height="380" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Hide YouTube Video Controls

<iframe width="680" height="380" src="" frameborder="0" allowfullscreen></iframe>

9.12. Respond To Comments

What makes videos rank higher? Comments. What gets more comments? Responses!

YouTube Comments


10. Odds And Ends

A few things I didn’t have a category for…

10.1. Homepage SEO

Your homepage should usually target the main keyword you want to rank for. In Yoast go to SEO → Search Appearance → General. This is where you will write your homepage snippet (your SEO title + meta description that appears in search results). Your homepage should usually target your primary keyword which should be researched in a tool like Google Autocomplete or Moz Keyword Explorer. You should be writing these for EVERY page/post on your site not just to include a keyword, but to make them read nice and increase CTR…


Here’s what a widgetized homepage looks like…


Here’s what a non-widgetized homepage looks like…


A non-widgetized homepage has a link to your ‘front page’ where you can write these…


Do NOT go over (or under) the character limit when writing SEO titles + meta descriptions – the length bar in Yoast should be green! You won’t see this bar in Yoast’s settings under Dashboard → Homepage or Tools → Bulk Editor). In these places you MUST do a word count.

It’s better to go short than over since long snippets can get cut off by Google (usually because people stuff multiple keywords here instead of writing it to sound like a legitimate headline).

Here’s a good example…



10.2. Write A Killer “About” Page

I didn’t know how important this was until I started getting emails saying my story inspired them to quit their job and do affiliate marketing full-time, how people appreciated the GoFundMe donation I do each year, or even a simple LOL about my Uber story. Google wants to know you’re a legit business, and people want to know you’re a legit person. Check out my about me page to see what I did (just be prepared to learn a few very strange things about me).



10.3. Duplicate Content (Siteliner)

Siteliner finds duplicate content which (IMO) occurs mostly when people create geo-targeted landing pages for local SEO (to target different cities) but instead of unique content they create “search and replace” pages that are the exact same page, only the city name is changed. You can reuse an image and a few lines of text, but don’t create duplicate pages. Noindexing tags, author archives, and other content in Yoast’s settings can also prevent duplicate content.

Siteliner Duplicate Content


  • Shorten summaries (excerpts) on your blogroll
  • Noindex tags, author archives, and date-based archives in Yoast’s settings
  • Avoid creating “search and replace pages” where 2 pages and nearly identical
  • Enable Cloudflare’s scrape shield to prevent people from stealing your content


10.4. SSL

Google cracked down on websites that don’t have SSL as of July, 2018. I recently switched to SSL using SiteGround’s free Let’s Encrypt SSL and didn’t notice any drop in traffic or affiliate sales. In fact, my sales increased a little and I think it’s because people see my site as more credible. It’s always easiest to add SSL before launching your website, but there is still no reason not to. Just make sure you’re working with a developer who knows what they’re doing.


10.5. Google Penalties


Penalty vs. Algorithm – Google penalties are easy to discover (they will appear in Manual Actions of Google Search Console). It’s harder to detect changes in Google’s algorithm that affected your website, but you can check your analytics to see when the drop occurred, then check Google’s algorithm change history for updates during the time your traffic dropped.

Unnatural Links To Your Site – avoid all types of link schemes (spammy link builders, paying for links, etc). Google will find you, and they will crush you. If you already have this penalty, here are a few things you can do. I have successfully removed a penalty using these steps…

  • View all links to your site in Google Search Console
  • Go through each link and write down the spammy ones (eg. those with keyword-rich anchor text, links on irrelevant websites/content, links in spammy blog comments)
  • Find the contact info to those webmasters, then request those links be taken down
  • Wait for their responses, but follow up with them if they don’t respond
  • Once you’ve made a solid effort to remove those links, disavow all remaining bad links
  • Submit a reconsideration request to Google explaining your attempt to remove them

Thin Content With Little Or No Added Value – short content with little substance rarely ranks. Use Google Analytics to find low quality content (pages with high bounce rates + low average time on page). Beef these up especially if they’re important topics for your readers. I published my first version of this WordPress SEO tutorial in 2014 and I still work on it today.

Hacked Website – shows in Manual Actions, or use Sucuri’s SiteCheck.

Keyword Stuffing – avoid injecting keywords to get green lights in Yoast.

Affiliate Penalties – affiliate sites got hit hard in 2014 for thin content, deceptive practices, and providing little value beyond selling. I listed tips in section 4.15.5, but by far the best thing you can do is to add value to your content (beyond trying to make sales). Avoid using too many affiliate links especially near the top of content, since this screams salesy to Google. I would also avoid Google AdSense and any type of banner ads (they make your entire site look spammy are rarely get clicked) and instead rely on strategically placed affiliate links in the text.


10.6. National Ranking Factors

Moz’s post on Weighting the Clusters of Ranking Factors in Google’s Algorithm may be from 2013, but the core ranking factors have not changed. It’s still the best chart I’ve seen. Sure, exact match domains don’t have as much weight and the pie slices have changed a bit, but it’s a great way to remind yourself to stop worrying so much about alt text and start thinking more about what’s still important – content and links. Moz does a new survey every 2 years… here are 2015’s ranking factors. 2017’s have not come out yet, but I will post it here when it does.

Google Ranking Factors


10.6. Tools & Terms

Here is a complete list of SEO tools I use, plus some terms you should know.


Frequently Asked Questions

Which SEO plugins are most important?

A main SEO plugin like Yoast or Rank Math is most important, but you should also have a plugin for rich snippets that can add FAQs, reviews, and other types of rich snippets which are dependent on your site.

Do Yoast green lights really matter?

Not really. Yoast is really only good for detecting keyword usage and there's more to on-page SEO than this. The only place it's important to use your keyword are the page title, URL, SEO title, meta description, and a couple times in the content body. The rest is completely dependent on content and on-page SEO factors. Don't obsess over green lights.

What other on-page factors exist besides Yoast?

Adding rich snippets, FAQ rich snippets, optimizing click-through rates, and adding an HTML table of contents to long posts (along with creating in-depth content) can all improve your SEO. Making your website load faster and getting backlinks help too.

How did you get those FAQ rich snippets?

I used the Structured Content plugin (same one used by Neil Patel) and adding emojis to the question parts.

How do you get 100% GTmetrix scores?

Hosting, cache plugins, CDNs, optimizing images, and other factors will help you improve scores + load times in GTmetrix. I have a full WordPress speed guide to help you do that.

Wow… That Was Long.
I’m considering turning it into a book on Amazon – I would seriously love to hear your feedback, good and bad. Either way, thanks for reading and comment if you have questions.


Posted in SEO
Notify of
Oldest Most Voted
Inline Feedbacks
View all comments