Loading tutorials…
Loading tutorials…
Installing Yoast or RankMath is step two. Step one is making sure WordPress itself is configured for SEO — permalinks, indexable content rules, taxonomy hygiene. Skip this and the SEO plugin is putting lipstick on a leak.
Who this is forWordPress site owners setting up SEO from scratch, or auditing an existing site they suspect was set up wrong. Especially relevant if you migrated from another CMS recently — migration often leaves broken permalinks and stranded redirects.
What you'll need
Step 1
Settings → Permalinks → Post name. This is the most SEO-friendly URL structure. If your site is established with a different structure, do NOT change it without a redirect plan.
WordPress Admin → Settings → Permalinks.
Select 'Post name.' URL becomes yoursite.com/your-post-title/. This is the standard.
Save Changes. WordPress regenerates the rewrite rules.
If your site is BRAND NEW (under 3 months, no significant traffic), this change is safe.
If your site has 6+ months of SEO history and uses a different structure (Day and name, Numeric, etc), DO NOT change. Changing permalinks on an established site changes every URL, breaks every external backlink, and requires 301 redirects on every URL — easy to mess up.
If you absolutely must change established permalinks: install Redirection plugin, export current URLs from Search Console, set up wildcard or per-URL redirects to new structure, test thoroughly, monitor 404 spikes for 30 days.
Step 2
yoursite.com/robots.txt should allow Googlebot, allow crawl of /wp-content/uploads/, and point to sitemap_index.xml. Yoast/RankMath manage this.
Visit yoursite.com/robots.txt in a private window. WordPress generates a virtual robots.txt by default.
Confirm it does NOT contain 'Disallow: /' (which blocks the entire site). This sneaks in from staging migrations or by accident from Settings → Reading → 'Discourage search engines' checkbox.
Confirm it allows /wp-content/uploads/ — Googlebot needs access to fetch images for image search.
Confirm it includes 'Sitemap: yoursite.com/sitemap_index.xml' at the bottom.
If your robots.txt looks wrong: Yoast SEO → Tools → File editor → robots.txt — edit directly. RankMath → General Settings → Edit robots.txt.
For a manual robots.txt (overriding the WP default): create robots.txt in the WP root via SFTP. WordPress no longer serves the virtual file when a real one exists.
Step 3
SEO plugin → content types and taxonomies. Posts: Index. Pages: Index. Tags: NOINDEX. Author archives: NOINDEX (single author) or Index (multi). Date archives: NOINDEX.
Yoast SEO → Settings → Content Types. For Posts, Pages: Show in search results = Yes. For custom post types (Products, Listings): usually Yes.
Yoast SEO → Settings → Taxonomies. Categories: usually Index. Tags: NOINDEX unless you actively curate tag pages with unique content. Date archives: NOINDEX always.
Yoast SEO → Settings → Author archives. NOINDEX if you are a single-author site (author archive = duplicate of homepage). Index if multi-author.
RankMath has the equivalent settings at Titles & Meta → Posts/Pages/Taxonomies. Same defaults apply.
Verify by inspecting page source on a tag archive — should see <meta name="robots" content="noindex, follow">.
Step 4
Every indexable URL needs a self-canonical tag. Yoast and RankMath do this by default. Verify on representative pages.
Open a published post in a private window. View Source. Search for "canonical."
You should see exactly one <link rel="canonical" href="https://yoursite.com/post-slug/"> tag. The URL should match the current page URL.
Repeat on a category archive, a tag archive (which should be noindex), a paginated archive (page 2).
Common issues: (1) trailing slash mismatch — page URL has trailing slash, canonical does not (or vice versa); (2) HTTPS/HTTP mismatch — page on HTTPS, canonical points to HTTP; (3) www/non-www mismatch.
Yoast and RankMath canonical tag the same as the page URL by default. If you see a different URL, something else (theme, conflicting plugin) is overriding — find and remove.
Step 5
GSC → Sitemaps → submit sitemap_index.xml. Wait 24-72 hours for processing. Verify "Success" status and URL count.
Open Google Search Console → your property → Sitemaps (left sidebar).
In "Add a new sitemap," enter sitemap_index.xml. Click Submit.
Status should change from Pending to Success within 24-72 hours.
Click into the submitted sitemap to see Discovered URLs. The number should roughly match your indexable URL count (subtract NOINDEX taxonomies and dates).
If "Couldn't fetch" appears: robots.txt is blocking the sitemap URL — check robots.txt does not Disallow /sitemap_index.xml.
Step 6
Yoast → SEO Insights / RankMath → Content AI both flag thin posts (<300 words) and orphan pages (no internal links pointing to them).
Yoast: there is no dedicated thin-content report in free Yoast. RankMath: SEO Analytics → Posts overview shows word count per post. Sort ascending.
For each post under 300 words: decide expand-rewrite-or-delete. Delete weak old posts with no traffic or backlinks (do 301 redirect to a related stronger post).
For orphan pages (no internal links pointing to them): they get poor crawl frequency from Google. Add at least 2-3 internal links from related stronger pages.
Use the LinkWhisper plugin (paid) or the Site Editor's link suggestions to find natural internal-linking opportunities.
After cleanup, request reindexing of remaining pages via GSC URL Inspection → Request Indexing.
Step 7
Paste 3 representative URLs (homepage, blog post, product/service page) into Google Rich Results Test. Should detect Organization, Article, BreadcrumbList schema with zero errors.
Open search.google.com/test/rich-results.
Paste your homepage URL. Click Test URL. Expect to see Organization schema detected.
Paste a published post URL. Expect Article (or BlogPosting) and BreadcrumbList schemas detected.
Paste a Product URL (if WooCommerce). Expect Product schema with offers, price, availability, ratings (if applicable).
Any 'Error' or 'Warning' icons need fixing. Common errors: missing image dimensions, missing author, duplicate schema (theme + plugin both outputting).
Use Yoast → Schema or RankMath → Schema Builder to fix per-template defaults.
Common mistakes
Leaving "Discourage search engines" checkbox checked
What goes wrong: Settings → Reading has a checkbox to discourage indexing. Commonly checked during dev/staging and forgotten on launch. Entire site stays out of Google for weeks or months while content investment goes nowhere.
How to avoid: Settings → Reading → uncheck "Discourage search engines from indexing this site." Verify robots.txt no longer contains "Disallow: /". Request reindexing in GSC.
Permalinks set to "Plain" or numeric (?p=123)
What goes wrong: URLs like yoursite.com/?p=123 are SEO-handicapped — no keyword in URL, no readability for Google or humans. Sites with plain permalinks rank significantly worse for branded + content queries.
How to avoid: Settings → Permalinks → Post name. CAUTION: only safe to change on new sites. On established sites, requires a redirect plan to avoid breaking external backlinks.
Tag archives indexed by default
What goes wrong: Every tag creates an archive URL (yoursite.com/tag/wordpress/). A site with 500 tags has 500 thin archive pages, mostly duplicating post content. Google sees site-wide quality drop.
How to avoid: SEO plugin → Taxonomies → Tags → NOINDEX. Or merge similar tags via Posts → Tags admin → Edit → consolidate.
No XML sitemap submitted to Search Console
What goes wrong: Google still discovers pages via internal links, but slower. New posts can take 7-30 days to be indexed without sitemap submission. Outdated/deleted pages stay in the index longer.
How to avoid: GSC → Sitemaps → submit sitemap_index.xml. Re-submit any time you do a major content overhaul.
Title tags missing or duplicated across pages
What goes wrong: Some themes hardcode <title> tags in header.php, conflicting with Yoast/RankMath output. Result: two <title> tags per page, or template-only titles like 'Home - Site Name' across many pages.
How to avoid: View source on 5 different page types. Search for '<title>'. Should appear exactly ONCE per page, with unique content per URL. If duplicated, find and remove the hardcoded version in theme files.
Categories with the same slug as posts
What goes wrong: WordPress allows a category and a post to share a slug. Visiting that URL is unpredictable — sometimes serves the category, sometimes the post. Soft 404s and ranking confusion follow.
How to avoid: Audit categories: Posts → Categories. Rename any category that shares a slug with a post. Set up a 301 redirect from the old slug to the new one if it had traffic.
Recap
Done — what's next
How to install and configure Yoast SEO on WordPress
Read the next tutorial
Hand it off
WordPress SEO fundamentals are a one-time investment that pays back forever — or never, if set wrong. A vetted technical SEO specialist audits the site, fixes structural issues, and produces a maintenance doc in 4-6 hours. Typically $60-120 total at $14-16/hr — and the content investments on top of it actually compound.
See specialist rates
Two immediate fixes: (1) Settings → Permalinks → Save Changes again (regenerates .htaccess rewrite rules); (2) install the Redirection plugin and set up 301 redirects from the old URL pattern to the new one. For established sites, prepare a redirect map BEFORE changing permalinks.
Depends. Categories with curated content (intro paragraph, organized post lists, unique value) deserve indexing. Categories with just a default post list and no unique content are duplicate of search results pages — noindex them.
Set once, audit quarterly. Major triggers for re-audit: redesign, theme change, content overhaul, ranking drops. Annual audit by a specialist catches drift.
Mostly no — Yoast and RankMath work identically on block themes. The only material difference is that breadcrumbs are inserted via the Site Editor (block) instead of via theme code (PHP snippet).
Aim for 85%+ of indexable URLs (Posts, Pages, indexed categories) actually indexed. Lower than that means thin content, crawl-budget issues, or canonical conflicts. GSC → Indexing → Pages shows the breakdown with reasons for non-indexing.
No. Both Yoast and RankMath generate XML sitemaps automatically at /sitemap_index.xml. A separate sitemap plugin would duplicate functionality and create conflicts. The only exceptions: video sitemaps for video-heavy sites (use the SEO plugin's video module), news sitemaps (RankMath PRO).
WordPress
Yoast is the default SEO plugin for 13M+ WordPress sites — but most installs ship with the wrong sitemap settings, broken breadcrumbs, and schema that contradicts your theme. This walks through the install + the configuration the wizard skips.
WordPress
RankMath has eaten 35% of the WordPress SEO market in 5 years for one reason: it ships with features Yoast charges Premium for, free. This is the full setup — and the honest comparison so you pick the right plugin once.
WordPress
A slow WordPress site costs you ad ROAS, organic rankings, and conversion rate at the same time. This checklist walks through the speed wins that actually move marketing metrics — not just PageSpeed scores.
WordPress
WordPress is the easiest CMS to start with and the easiest to make a mess of by month 18. This is the honest framework for when DIY becomes the bottleneck and a specialist pays for themselves.