WordPress SEO Checklist
An ordered, plugin-neutral WordPress SEO checklist — permalinks, Yoast/Rank Math/SEOPress setup, sitemap, robots.txt, archive noindex, images, caching, redirects, schema, and a before-you-launch gate.
1 evidence signal on this page
- Related live toolScout Site Audit Free
This is the ordered task list for setting up SEO on a WordPress site — the what-to-click layer, with the why living in the WordPress SEO deep dive it links to. Set permalinks to /%postname%/ before you publish. Run exactly one SEO plugin (Yoast, Rank Math, or SEOPress) and finish its wizard. Confirm the sitemap is live and submit it in Google Search Console and Bing Webmaster Tools. Edit robots.txt through the plugin — never Disallow pages you want deindexed, because Google can't read a noindex it isn't allowed to crawl. Noindex date and thin tag archives; treat category archives as a judgment call. Compress and alt-text images. Check whether your host already caches before stacking a caching plugin. Install a redirect manager before you need it. Validate schema in the Rich Results Test. Then walk the before-you-launch gate.
TL;DR — This is the click-by-click list for setting up SEO on a WordPress site. Do these in order: set your permalinks to the post-name style, install one SEO plugin (Yoast, Rank Math, or SEOPress — never two), run its setup wizard, make sure your sitemap is on and submitted to Google and Bing, compress your images and give them alt text, and — the one that catches everyone — uncheck “Discourage search engines” before you go live. The full explanation of why each of these matters lives in my WordPress SEO guide; this page is just the to-do list.
Evidence for this claim WordPress's Discourage search engines setting asks search engines not to index the site but does not block access to the site. Scope: WordPress core setting; search engines decide whether to honor the request. Confidence: high · Verified: WordPress.org: Settings Reading Screen Evidence for this claim WordPress core exposes an XML sitemap index for public content on supported installations. Scope: WordPress core sitemap behavior; plugins may alter or replace it. Confidence: high · Verified: WordPress Developer Blog: XML sitemaps
How to use this list
WordPress works fine for SEO out of the box — but its defaults leave a few things half-done, and one setting can accidentally hide your whole site from Google. This checklist is the ordered set of things to fix or confirm. Building a new site? Go top to bottom. Auditing a site that’s already live? Jump to whatever section looks shaky.
I keep this to “what to click.” For the reasoning behind each item — why ?p=123
URLs are bad, why two SEO plugins fight each other — see the full WordPress SEO
article.
1. Fix your permalinks first
Go to Settings → Permalinks and choose Post name, so your URLs look like
/your-post-title/ instead of /?p=123. Do this before you publish real content —
changing it later means setting up redirects so old links don’t break.
2. Install one SEO plugin and run the wizard
Pick one of Yoast SEO, Rank Math, or SEOPress. Install it, run its setup wizard, and connect Google Search Console when it offers to. Do not run two SEO plugins at once — they’ll produce conflicting tags and step on each other.
3. Turn on the search-engine visibility (this is the big one)
Go to Settings → Reading and make sure “Discourage search engines from indexing this site” is unchecked. People leave this ticked from the build phase and then wonder why they never rank. Check it first, check it again before launch.
4. Make sure your sitemap is on — and submit it
Your SEO plugin generates an XML sitemap automatically. Confirm it loads (Yoast and
Rank Math use /sitemap_index.xml), then submit that URL in both Google Search
Console and Bing Webmaster Tools. WordPress does not submit it for you.
5. Handle your images
- Give every content image real alt text (describe it; don’t stuff keywords).
- Compress images before or on upload — WordPress doesn’t shrink them for you. Plugins like ShortPixel, Smush, or Imagify do it automatically.
- Name files descriptively (
black-labrador-puppy.jpg, notIMG_4021.jpg).
6. Decide what to hide from search
Your SEO plugin lets you noindex (hide from Google) thin pages. Good defaults: hide
date archives and usually tag archives — they tend to be thin and duplicate
your categories. Leave category pages indexed only if they’re real, useful
landing pages. Important: use the plugin’s noindex setting for this, never a
robots.txt “Disallow” — Google can’t obey a “hide me” instruction on a page it isn’t
allowed to look at.
7. Check caching and speed
Many good WordPress hosts (Kinsta, WP Engine, Pressable) already cache your site at the server. Check that first — piling a caching plugin on top can conflict. If your host doesn’t cache, WP Rocket, LiteSpeed Cache, or W3 Total Cache handle it.
8. Before you launch
Uncheck “Discourage search engines,” confirm permalinks, confirm one plugin, confirm HTTPS with no mixed-content warnings, and submit your sitemap in both consoles. The Advanced tab has the full gated launch checklist.
Want the plugin-by-plugin menu paths, the robots.txt do’s and don’ts, the schema and redirect details, and the full launch gate? Switch to the Advanced tab.
TL;DR — This is the execution artifact, not the explainer — the ordered task list, with the “why” routed to the WordPress SEO deep dive. Set
Evidence for this claim WordPress's Discourage search engines setting asks search engines not to index the site but does not block access to the site. Scope: WordPress core setting; search engines decide whether to honor the request. Confidence: high · Verified: WordPress.org: Settings Reading Screen Evidence for this claim WordPress core exposes an XML sitemap index for public content on supported installations. Scope: WordPress core sitemap behavior; plugins may alter or replace it. Confidence: high · Verified: WordPress Developer Blog: XML sitemaps/%postname%/before publishing. Run exactly one of Yoast / Rank Math / SEOPress and finish its wizard; kill any theme-level SEO tags too. Confirm the sitemap is live, contains only indexable URLs, and is submitted in Google Search Console and Bing Webmaster Tools (add IndexNow if you publish often). Edit robots.txt through the plugin: add aSitemap:line, never Disallow/wp-content/, and never Disallow a page you want deindexed — a disallowed page’snoindexis never read. Noindex date and thin tag archives; category archives are a judgment call, and whatever you noindex must stay crawlable. Compress and alt-text images. Check for host-level caching before stacking a plugin. Install a redirect manager before the permalink change needs one. Confirm JSON-LD output and validate it in the Rich Results Test. Then walk the before-you-launch gate.
New build or existing-site audit?
- New build: work top to bottom — the order is roughly the order you’d actually do the work.
- Existing site: treat this as a triage list. Jump to permalinks, the single-plugin check, and the archive-indexing decision first — those are where unmanaged WordPress sites break most often.
Everything below is the “what to click / what to confirm” layer. The reasoning —
WordPress’s self-canonicalization, the core-vs-plugin sitemap tradeoffs, the
wp_head() conflict behind the one-plugin rule — already lives in my full WordPress
SEO article, and each section here links back rather than re-deriving it.
1. Permalinks and URL structure
- Settings → Permalinks → Post name (
/%postname%/). - Do this before publishing. WordPress auto-redirects standard posts when you change the permalink structure, but custom post types and pages may not — verify.
- Don’t bake the category into the permalink (
/%category%/%postname%/) unless you have a deliberate reason; it creates fragile, deeply nested URLs. - If you’re changing structure on an established site, map the old→new URLs with 301s (see the redirects section below) before flipping the switch.
2. SEO plugin setup (Yoast / Rank Math / SEOPress)
Do the same core steps regardless of plugin, then use the menu-path table.
- Install exactly one SEO plugin and run its setup wizard.
- Confirm Settings → Reading → “Discourage search engines from indexing this site” is unchecked.
- Set the homepage title and meta description template; set a default Open Graph social image.
- Connect Google Search Console (and Bing Webmaster Tools where the plugin
supports it). Google’s official Site Kit plugin is a clean way to wire up GSC
- Analytics if you prefer.
- Confirm only one SEO source is active — check that your theme (Genesis, Thesis, some page builders) isn’t also emitting its own title/meta/schema, and disable that if so.
| Task | Yoast SEO | Rank Math | SEOPress |
|---|---|---|---|
| First-run setup | SEO → General (wizard) | Rank Math → Setup Wizard | SEOPress → Setup Wizard |
| Titles / meta templates | SEO → Search Appearance | Rank Math → Titles & Meta | SEOPress → Titles & Metas |
| Per-taxonomy noindex | SEO → Search Appearance → Taxonomies | Rank Math → Titles & Meta → per-taxonomy | SEOPress → Titles & Metas → per-taxonomy |
| GSC / integrations | SEO → Integrations | Rank Math → General Settings | SEOPress → Advanced |
| Sitemap path | /sitemap_index.xml | /sitemap_index.xml | /sitemap.xml |
(Plugin UIs shift between versions — confirm the exact menu label in your install.)
3. XML sitemap configuration
- Confirm the plugin’s sitemap is enabled and reachable at its URL (paths in the table above).
- Exclude noindexed post types and taxonomies from the sitemap — don’t list what you’re telling Google not to index.
- Submit the sitemap manually in Google Search Console and Bing Webmaster Tools. WordPress and the plugins do not auto-submit.
- If you rely on WordPress core’s
/wp-sitemap.xmlinstead of a plugin, know its limits (all public taxonomies/authors, no image sitemap, 2,000-URL cap per file) — the full explanation is in the WordPress SEO article. - Note: Google ignores
<priority>and<changefreq>— the plugin’s priority/frequency toggles do nothing for crawl behavior, so don’t fuss over them.
4. robots.txt configuration
- Edit the virtual robots.txt from the plugin dashboard (Yoast and Rank Math both allow this without FTP). Self-hosted WordPress can serve a real robots.txt — you’re not locked like a hosted CMS.
- Add a
Sitemap:line pointing to your sitemap (many plugins do this automatically once the sitemap module is on — verify). - Do NOT Disallow
/wp-content/— it blocks CSS/JS/images and breaks rendering. - Do NOT Disallow pages you want deindexed. Use the
noindexmeta tag instead. A disallowed page’snoindexis never seen (see Quotes) — Google may even index a blocked URL with no snippet. - Reasonable Disallow candidates:
/wp-admin/(WordPress adds this by default) and internal-search query variants (?s=) if not otherwise handled.
5. Category, tag, and archive indexing decisions
Set these per-taxonomy in your plugin’s title/meta section. The guiding rule: index what functions as a real landing page, noindex what’s thin — and keep noindexed pages crawlable.
- Tag archives: usually noindex — thin, and they overlap your categories.
- Date archives: noindex almost always — nobody searches by publish month; Yoast noindexes these by default.
- Author archives: noindex on single-author sites; keep indexed only on genuine multi-author publications where the author page adds value.
- Category archives: judgment call, not a blanket rule — index a curated category page with real intro copy and meaningful post volume; noindex a bare list of post titles.
- Whatever you noindex, do not also Disallow it in robots.txt — this is the single most-missed nuance in generic checklists.
- Don’t belt-and-suspenders a noindex and a canonical to another page on the same archive — pick one signal (see Quotes).
6. Image alt text and compression
- Descriptive alt text on every content image — describe the image, don’t keyword-stuff. Depth lives in the alt-text article; don’t re-derive it here.
- Compress/resize before upload — WordPress won’t optimize on upload without a plugin. Common choices: ShortPixel, Smush, Imagify, EWWW.
- Descriptive filenames before upload (
black-labrador-puppy.jpg, notIMG_4021.jpg) — renaming after upload doesn’t change the live file/URL. - Serve modern formats (WebP/AVIF) via plugin or host support.
7. Caching and CDN setup
- Check host-level caching first. Many managed WordPress hosts (WP Engine, Kinsta, Pressable) cache at the server — stacking a caching plugin can conflict or add nothing.
- If you’re self-managing: WP Rocket (paid, easiest), LiteSpeed Cache (free, best on LiteSpeed hosting), W3 Total Cache (free, most configurable), WP Super Cache (free, simplest).
- Add a CDN — many caching plugins bundle or partner with one; Cloudflare is a common standalone option.
- Clear the cache after any SEO-plugin config change, then spot-check the cached HTML shows the correct title/meta/canonical — caching before the SEO plugin’s hooks fire can serve stale metadata. This ties straight into your Core Web Vitals work.
8. Broken links and redirects
- Install a redirect manager before you need it. Rank Math and AIOSEO bundle one free; Yoast’s is a paid add-on; or use the standalone Redirection plugin. Set 301s for any URL-structure change — including the permalink change in step 1.
- Broken-link checking: AIOSEO’s Broken Link Checker or the standalone Broken Link Checker plugin — scans internal/external links and flags 404s.
- Prefer a redirect/broken-link tool that reads Search Console’s 404 data so you catch the 404s Google actually found, not only what a local scan surfaces.
9. Schema / structured data output
- Confirm the SEO plugin outputs JSON-LD (not legacy microdata). Yoast and Rank Math auto-add Organization/Person, WebSite, WebPage, Article, and BreadcrumbList.
- Add specific types where they fit the content: FAQ, HowTo, Review / AggregateRating.
- WooCommerce: core WooCommerce does not output Product JSON-LD — you need Yoast WooCommerce SEO (paid) or Rank Math Pro for full Product schema (price, availability, reviews).
- Validate with Google’s Rich Results Test — plugin defaults aren’t guaranteed error-free against your specific theme. Bing reads JSON-LD too, so the same output benefits both.
10. Before you launch — final gate
A distinct pre-launch pass, separate from ongoing maintenance:
- Settings → Reading → “Discourage search engines” is UNCHECKED.
- Permalink structure finalized (
/%postname%/) before real URLs get indexed. - Exactly one SEO plugin active and fully configured.
- XML sitemap live, reachable, contains only indexable URLs.
- robots.txt reviewed — no
/wp-content/block, no Disallow standing in for a noindex. - SSL/HTTPS active site-wide, no mixed-content warnings.
- Caching/CDN configured and cache cleared after the last config change.
- Core Web Vitals spot-checked (PageSpeed Insights / Search Console) on the home page, a post, and a key landing page.
- Redirect plugin installed; staging→production and any migration URLs mapped with 301s.
- Schema validated via Rich Results Test on a representative page.
- Google Search Console and Bing Webmaster Tools verified; sitemap submitted in both.
- Analytics / Site Kit connected.
A note on Bing and IndexNow
There’s no Bing-specific “WordPress checklist” — the same technical items apply, you just also submit to Bing Webmaster Tools. If you publish or update frequently, add the IndexNow plugin: it hosts the required API key at your site root and pings Bing (and Yandex, Seznam) on new/changed/deleted URLs for faster discovery, separate from the standard sitemap submission.
AI summary
A condensed take on the Advanced version:
- This is the task list, not the explainer. The “why” lives in the WordPress SEO deep dive; every section here is “what to click / what to confirm.”
- Permalinks first: Settings → Permalinks → Post name (
/%postname%/), before publishing; 301-map any later structure change. - One SEO plugin only (Yoast, Rank Math, or SEOPress). Run its wizard; disable any theme-level SEO tag output. Connect GSC (Site Kit optional).
- Uncheck “Discourage search engines” (Settings → Reading) — the single most common launch-killer.
- Sitemap: confirm it’s live and contains only indexable URLs; submit manually
in Google Search Console and Bing Webmaster Tools. Google ignores
<priority>/<changefreq>. - robots.txt via plugin: add a
Sitemap:line; never Disallow/wp-content/; never Disallow a page you want deindexed — a disallowed page’snoindexis never read. - Archive indexing: noindex date and thin tag archives (and single-author author archives); category archives are a judgment call; keep noindexed pages crawlable; don’t stack noindex + canonical on the same page.
- Images: descriptive alt text (no stuffing), compress before/on upload, descriptive filenames, modern formats.
- Caching: check for host-level caching first before stacking a plugin; clear cache after SEO-config changes and verify cached metadata.
- Redirects: install a redirect manager before you need it; add a broken-link checker; prefer tools that read GSC 404 data.
- Schema: confirm JSON-LD output; add FAQ/HowTo/Review where relevant; WooCommerce needs a paid add-on for Product schema; validate in the Rich Results Test.
- Launch gate: visibility checkbox, permalinks, one plugin, sitemap, robots.txt, HTTPS, caching, CWV, redirects, schema, both consoles, analytics.
- Bing/IndexNow: same items apply; add the IndexNow plugin if you publish often.
Official documentation
Primary-source documentation behind the checklist items.
- Build and submit a sitemap — CMS sitemaps, the 50MB / 50,000-URL cap, and the sitemap index.
- Create and submit a robots.txt file — hosted vs. self-hosted CMS robots.txt editing.
- Robots meta tag, data-nosnippet, and X-Robots-Tag — why a noindexed page must stay crawlable.
- Intro to structured data markup — installing a schema plugin on a CMS.
- Google Images best practices — image size, descriptive filenames, and alt-text guidance.
- Site Kit is now available for all — Google’s official WordPress plugin for GSC/Analytics.
Bing / Microsoft
- Sitemaps (Bing Webmaster Tools) — submitting and passive discovery via the
Sitemap:robots.txt directive.
Quotes from the source
On-the-record statements behind the checklist’s trickier calls. Each link jumps to or sources the quoted passage.
Google — CMS sitemaps
- “If you’re using a CMS such as WordPress, Wix, or Blogger, it’s likely that your CMS has already made a sitemap available to search engines.” — Google Search Central, Build and submit a sitemap. Jump to quote
Google — hosted CMS robots.txt
- “If you use a site hosting service, such as Wix or Blogger, you might not need to (or be able to) edit your robots.txt file directly.” — Google Search Central, Create and submit a robots.txt file. (Self-hosted WordPress can edit a real robots.txt — this is Google’s general hosted-CMS note.) Jump to quote
Google — why noindex needs crawlability
- “If a page is disallowed from crawling through the robots.txt file, then any information about indexing or serving rules will not be found and will therefore be ignored.”
— Google Search Central, Robots meta tag. (The reason you
noindexthin archives via the meta tag, never via a robots.txt Disallow.) Jump to quote
Google — images and page weight
- “images are often the largest contributor to overall page size, which can make pages slow and expensive to load” — Google Search Central, Google Images best practices. Jump to quote
- “Avoid filling
altattributes with keywords (also known as keyword stuffing) as it results in a negative user experience” Jump to quote
Google — structured data on a CMS
- “If you use a CMS, such as WordPress, you might not be able to edit your HTML directly. Instead, your CMS may have a search engine settings page, or you may be able to install a plugin that allows you to specify structured data.” — Google Search Central, Intro to structured data markup. Source
Yoast — archive noindex defaults
- “The plugin allows you to either add
noindex, followthe archives or to disable them completely.” and “If you insist on having a date-based archive present, at least ensure that you applynoindex, nofollowto it” — Yoast, Archive SEO. (Supports the “noindex date archives; categories are a choice” call.) Source
John Mueller, Google — pick one signal, and don’t strand a noindex
- “So noindex and follow is essentially the same as a noindex, nofollow. There’s no really big difference there in the long run.” — reinforcing that a noindexed archive must stay crawlable and shouldn’t be doubly blocked. Read the coverage
- On combining canonical and noindex: “I’d just pick one (noindex or followed links). Links on a noindexed page can be picked up, but it’s not guaranteed. SEO is often about making your preference very clear and not about maybe’s.” Read the coverage
The WordPress SEO checklist
Work top to bottom for a new build; jump to a section for an audit.
1. Permalinks
- Settings → Permalinks → Post name (
/%postname%/), set before publishing. - No category baked into the permalink without a deliberate reason.
- Any structure change on a live site is 301-mapped before flipping.
2. SEO plugin setup
- Exactly one SEO plugin (Yoast / Rank Math / SEOPress) installed; wizard run.
- Settings → Reading → “Discourage search engines” UNCHECKED.
- Homepage title/meta template set; default Open Graph image set.
- Google Search Console (and Bing) connected; theme-level SEO tags disabled.
3. XML sitemap
- Sitemap live and reachable at its URL.
- Noindexed post types/taxonomies excluded from the sitemap.
- Sitemap submitted in both Google Search Console and Bing Webmaster Tools.
4. robots.txt
-
Sitemap:line present. - No Disallow on
/wp-content/. - No Disallow standing in for a
noindex. -
/wp-admin/(default) and internal-search?s=handled as needed.
5. Archive indexing
- Date archives noindexed.
- Tag archives noindexed (unless genuinely useful).
- Author archives noindexed on single-author sites.
- Category archives indexed only when they’re real landing pages.
- Nothing noindexed is also Disallowed; no noindex+canonical on the same page.
6. Images
- Descriptive alt text (no keyword stuffing) on content images.
- Images compressed before/on upload.
- Descriptive filenames; modern formats (WebP/AVIF) served.
7. Caching / CDN
- Host-level caching checked first before adding a plugin.
- Caching plugin/CDN configured; cache cleared after SEO-config changes.
- Cached HTML verified to show correct title/meta/canonical.
8. Redirects / broken links
- Redirect manager installed before it’s needed; permalink change 301-mapped.
- Broken-link checker running.
- Tool reads GSC 404 data where possible.
9. Schema
- SEO plugin outputting JSON-LD (Org, WebSite, WebPage, Article, Breadcrumb).
- Content-specific types (FAQ/HowTo/Review) added where they fit.
- WooCommerce Product schema handled (needs a paid add-on).
- Output validated in the Rich Results Test.
10. Before you launch
- “Discourage search engines” UNCHECKED.
- Permalinks finalized.
- One SEO plugin, fully configured.
- Sitemap live, indexable URLs only, submitted in both consoles.
- robots.txt reviewed.
- HTTPS site-wide, no mixed content.
- Caching/CDN set, cache cleared.
- Core Web Vitals spot-checked on home / post / key landing page.
- Redirects mapped for staging→production and any migration.
- Schema validated.
- GSC + Bing verified; sitemap submitted in both.
- Analytics / Site Kit connected.
WordPress launch gate
| Area | Pass condition |
|---|---|
| Visibility | ”Discourage search engines” is off on production |
| URLs | Intended permalink structure is stable; sample routes return expected statuses |
| Plugin | One SEO plugin owns metadata, sitemap, canonicals, and schema |
| Indexation | Categories, tags, authors, search, media, and attachments are intentional |
| Discovery | Sitemap contains canonical public URLs and is submitted |
| Templates | One title, canonical, description, and appropriate robots directive per sample |
| Migration | Old valuable URLs redirect directly to relevant live destinations |
| Performance | Production templates and key images are tested with field/lab evidence |
Tools for the checklist
- Scout Site Audit Free — sample status, metadata, canonical, and crawl issues.
- Sitemap Validator — verify WordPress or plugin sitemap output.
- Robots.txt Tester — test production crawl rules by URL and crawler.
- Schema Validator — inspect combined theme/plugin JSON-LD output.
- Redirect Chain Mapper — validate migration and permalink redirects.
- Core Web Vitals Checker — review page-template performance evidence.
Test yourself: WordPress SEO Checklist
Five quick questions on setting up SEO on a WordPress site. Pick an answer for each, then check.
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Updated Jul 25, 2026.
Editorial summary and recorded change details.Summary
Aligned legacy tool display names with returntag and Scout Site Audit Free.
Change details
-
Updated the linked tool names to match their current public labels.
Full comparison unavailable — no prior snapshot was archived for this revision.