A WordPress SEO audit checks whether Google can crawl, index and understand your site, then finds the pages where a specific fix would earn more search traffic. Done properly it takes 60 to 90 minutes with free tools — Search Console, PageSpeed Insights, a crawler and your SEO plugin — and ends in a short list of fixes you ship that week, not a PDF.
That last part is where most audits fail. A consultant crawls the site, exports 400 issues into a report, and moves on. Three issues get fixed because someone recognized them. The other 397 sit in a Google Drive folder until next year's audit. WordPress sites are especially prone to this because the CMS makes publishing easy and maintenance hard: orphan pages, duplicate metas, broken redirects and page-two rankings pile up faster than any manual process clears them.
This guide gives you both halves: the 10-step audit, each step with a tool, a check and an output, and the operating model that turns findings into shipped changes — including how to make the audit recurring instead of annual.
Last updated: October 13, 2026.
TL;DR
- A WordPress SEO audit should produce a ranked list of fixes with evidence, not a 50-page report.
- The 10 steps: crawlability, indexing, speed, mobile, on-page, content quality, internal links, backlinks, schema, conversions. All doable with free tools.
- Sort findings into three buckets: technical blockers (fix first), on-page gaps on pages with impressions (where the traffic is), structural cleanup (schedule it).
- Ship ten fixes on audit day. Momentum matters more than completeness.
- Run the full audit quarterly and the Search Console part weekly. WordPress SEO automation can run the weekly part and draft the fixes for your approval.
- Measure the audit by shipped changes and 30-day Search Console movement, not by issue count.
What you need before you start
All of these are free:
- Google Search Console (the site must be verified)
- Google PageSpeed Insights (pagespeed.web.dev)
- Screaming Frog SEO Spider, free version (crawls up to 500 URLs)
- Google's Rich Results Test
- Your WordPress SEO plugin — Yoast, Rank Math, AIOSEO or SEOPress — because that is where most fixes get made
Optional: Ahrefs Webmaster Tools (free for sites you verify) for backlink data and a second crawl.
If you would rather tick items off as you go, keep the WordPress SEO Checklist open in a second tab — it maps closely to the steps below.
The 10-step WordPress SEO audit
Step 1: Crawlability (10 minutes)
What you are checking: can Googlebot reach your pages?
In Search Console, open Settings → Crawl stats. Look at the response breakdown. A rise in 4xx or 5xx responses, or a sharp drop in daily crawl requests over the past month, means something is blocking or failing.
Check robots.txt. Load yourdomain.com/robots.txt in a browser. Confirm there is no Disallow: /, that /wp-content/ and /wp-includes/ are not blocked, and that the Sitemap: line points at a sitemap that actually loads. WordPress serves a virtual robots.txt unless a physical file exists, so read the live URL, not the plugin settings screen. The WordPress robots.txt guide covers the default file and how to fix "Blocked by robots.txt".
Check crawl depth. Crawl the site in Screaming Frog and look at crawl depth. Pages more than four clicks from the homepage are often under-crawled; move important ones closer with internal links.
Output: blocked URLs, URLs returning errors, and important pages buried too deep.
Step 2: Indexing (15 minutes)
What you are checking: what Google indexes, and whether it is the right stuff.
In Search Console → Indexing → Pages, note the indexed and not-indexed counts and click through the reasons.
Indexed — look for junk. Export the indexed URLs and filter for things that are not real posts or pages: date archives (/2024/), tag archives, author archives, internal search (?s=), and filtered or sorted URLs (?orderby=, ?filter_). Leave paginated archives (/page/2/ and onward) alone: Google recommends keeping them indexable with self-referencing canonicals, because they are how crawlers reach older posts.
Not indexed — look for important pages. If a key post or landing page is listed, inspect it. Common causes: a stray noindex, a canonical pointing elsewhere, or a robots.txt block.
Read the reasons. "Discovered – currently not indexed" means Google knows the URL but has not crawled it yet. Google’s help puts this down to crawl scheduling; on WordPress, the URLs stuck there are often poorly linked. "Duplicate without user-selected canonical" means Google found near-duplicates and picked one itself — find the pairs and set canonicals. "Excluded by noindex tag" is fine on pages you meant to hide and a problem everywhere else.
Output: junk URLs to noindex, and important URLs that should be indexed but are not.
Step 3: Page speed (10 minutes)
What you are checking: LCP, CLS and INP on the pages that matter.
In Search Console → Core Web Vitals, the mobile report lists URL groups rated Poor or Need improvement. Those are your targets.
In PageSpeed Insights, run the homepage and your top three posts by traffic. For each, note the LCP time and which element is the LCP (usually the hero or featured image), plus the top one or two opportunities.
The target is LCP under 2.5 seconds on mobile. On WordPress the usual fixes are image size and format, lazy-loading below the fold, caching, and fewer render-blocking plugins.
Output: pages with mobile LCP above 2.5s and the main cause for each.
Step 4: Mobile (5 minutes)
What you are checking: whether the mobile layout works.
Search Console's old Mobile Usability report and Google's Mobile-Friendly Test were retired at the end of 2023, so check directly: open your homepage and one key post on a phone, and run Lighthouse in Chrome DevTools in mobile mode. URL Inspection in Search Console also shows a screenshot of the page as Googlebot rendered it, which catches CSS or JavaScript that fails to load.
Output: pages with tap targets too close together, text too small, or content wider than the screen.
Step 5: On-page SEO (15 minutes)
What you are checking: titles, meta descriptions, H1s and image alt text.
In Screaming Frog, after the crawl:
- Page Titles: sort by length. Find missing titles and titles over about 60 characters, which often get cut off in results.
- Meta Description: find missing descriptions (Google writes its own, often worse) and ones over about 160 characters.
- H1: find pages with no H1 or several.
- Images: filter for missing alt text, starting with your highest-traffic posts.
Output: a spreadsheet of on-page issues by URL, type and severity.
Step 6: Content quality (10 minutes)
What you are checking: thin content, duplicates and keyword cannibalization.
Thin content. Add a word count column in your crawler and sort ascending. Pages under about 300 words are candidates for expansion, merging or noindexing.
Duplicates. The "Duplicate without user-selected canonical" list from Step 2 is your starting point. Set canonicals to the preferred version or merge the pages.
Cannibalization. In Search Console → Performance, filter by one of your target queries and open the Pages tab. If two or more of your pages share the impressions, consolidate them or give each a distinct intent.
Step 7: Internal links (10 minutes)
What you are checking: pages with few or no internal links pointing at them.
In Screaming Frog, look at the inlinks count for every page. Pages with zero to two inlinks are isolated. Rank them by Search Console impressions, then add two or three contextual links to the best ones from related posts. While you are there, check Response Codes → 4xx for broken internal links.
Step 8: Backlinks (5 minutes)
What you are checking: lost links worth reclaiming.
Most small WordPress sites do not need an elaborate backlink audit. In Ahrefs Webmaster Tools, look for good sites that used to link to you where the link now hits a 404. Redirect the dead URL to its replacement and the link starts counting again.
Step 9: Structured data (5 minutes)
What you are checking: missing or invalid schema.
In Search Console, the rich result reports under Enhancements list errors and warnings by type. In the Rich Results Test, check your homepage, your most important post and any page with special schema.
Common WordPress problems: Article schema missing an image or author, dateModified that does not change when content does, two plugins printing the same schema type twice, and FAQPage markup on pages with no visible FAQ.
Step 10: Conversions (5 minutes)
What you are checking: whether search traffic turns into anything.
In GA4 or your analytics tool, check the conversion rate from organic sessions and which organic landing pages convert best and worst. If a page ranks well and converts nothing, that is a page problem — the call to action, the offer — not an SEO problem.
Running the audit from Search Console alone
If you only have 30 minutes, Search Console covers the parts of the audit that matter most:
| Report | What it tells you | What to do |
|---|---|---|
| Indexing → Pages | Which URLs are indexed, and why others are not | Fix stray noindex, canonicals and robots.txt blocks on important pages |
| Performance → Pages + Queries | Pages ranking in positions 5–15 with impressions | Rewrite titles, add sections, add internal links |
| Performance, sorted by impressions | High-impression pages with low CTR | Rewrite titles and meta descriptions |
| Sitemaps | Whether your sitemap is read without errors | Fix or resubmit the sitemap |
| Core Web Vitals | URL groups failing on mobile | Fix the template causing it |
| URL Inspection | How Google sees one specific URL | Check before and after every fix |
That is a Google Search Console SEO audit in its simplest form. The crawler steps add on-page and internal link detail Search Console does not show.
Turn the findings into three buckets
Ten steps produce a long list. Sort it into three buckets before you fix anything.
Bucket A: technical blockers (fix before anything else)
These stop Google from seeing or trusting the site:
- robots.txt blocking important paths
noindexon pages that should be indexed- sitemap errors or a sitemap that points at missing URLs
- critical 404s on internal links
- redirect chains longer than two hops
- Core Web Vitals rated Poor on top-traffic templates
Fix these in your SEO plugin, hosting or caching setup. No amount of on-page work helps if Google cannot crawl the site.
Bucket B: on-page gaps on pages with impressions
These pages are visible to Google and underperform:
- missing or duplicate meta descriptions on your top 30 URLs by impressions
- titles that do not match the queries the page gets impressions for
- pages ranking in positions 5–15 with weak content or metas — your striking distance keywords
- isolated pages with no internal links
Output format: URL | Search Console query | position | impressions | specific fix. This bucket is where most traffic gains hide.
Bucket C: structural cleanup (schedule over 30 days)
Important, not urgent:
- orphan pages
- tag and author archive bloat
- near-duplicate posts
- image alt text gaps
- old posts with stale years in titles
Work through Bucket C at five to ten items a week.
Ship fixes the same day
An audit finding that does not ship today tends to be forgotten within days. For each Bucket B item that takes under ten minutes, ship it immediately:
- Missing meta: write a 155-character, outcome-led description in your SEO plugin.
- Title mismatch: front-load the main Search Console query in the SEO title. Do not change the slug.
- Striking distance page: add one H2 section (150–200 words) answering the query, plus two internal links.
- Schema: fix or add it, then validate in the Rich Results Test.
Target ten Bucket B fixes on audit day. Not thirty — ten.
What a "ships fixes" audit looks like
Instead of a PDF appendix, the deliverable is a table like this:
| URL | Issue | Evidence | Fix | Owner | Shipped |
|---|---|---|---|---|---|
| /blog/email-guide | Title mismatch | "email marketing tips" pos 9, 840 impressions | New title front-loading the query | You | 2026-10-13 |
| /services/audit | Missing meta | 1,200 impressions, 0.6% CTR | Outcome-led 155-character meta | You | 2026-10-13 |
| /category/tools | Index bloat | Duplicates /blog/tools | Noindex the category | Developer | Pending |
Ten rows like this beat fifty pages of crawl warnings. Each row is a ticket that closes.
What to fix in your SEO plugin vs what to automate
| Issue | Where to fix it | Why |
|---|---|---|
| Sitemaps, canonicals settings, breadcrumbs | SEO plugin | The plugin owns the technical layer |
| Missing meta on high-impression posts | Automation queue | Prioritized by Search Console data |
| Striking distance title rewrites | Automation queue | Drafted with the evidence attached |
| Schema templates | SEO plugin | Site-wide settings |
| Internal links to isolated pages | Automation queue | Drafted with anchor text and placement |
| Core Web Vitals | Hosting, theme, caching | Not an SEO plugin or agent fix |
Clean separation prevents two tools editing the same field.
The three findings that pay back fastest
If you only act on three things from the audit, make them these.
1. Important pages excluded from the index (Step 2). An unindexed page earns nothing, however good it is. A stray noindex left over from staging, a wrong canonical or a robots.txt block can be fixed in minutes, and a page that already had impressions can recover within one or two crawls.
2. Striking distance pages with weak titles (Steps 5 and 6). A page at position 6–12 with a generic or truncated title already has the ranking signals; a better title can lift CTR, and often position, within a few weeks.
3. Mobile LCP above 2.5 seconds on top templates (Step 3). Speed fixes on a template apply to every page that uses it. Converting the featured image to WebP and lazy-loading images below the fold is often an hour's work.
Prioritization: impact × effort
Score each finding. Impact: monthly impressions, commercial intent, current position (positions 5–15 first), page type. Effort: a meta or title rewrite is low, a new section or redirect cleanup is medium, a full rewrite or theme fix is high.
Priority = impact ÷ effort. Work from the top and ignore low-impact findings, even when a crawler flags them in red. A crawler will happily report thousands of "issues" on a healthy WordPress site; Search Console impressions separate signal from noise.
How often to run a WordPress SEO audit
Weekly: the Search Console part — new striking distance queries, pages losing clicks, new indexing errors. This is where automation earns its keep.
Monthly: a 30-minute check of indexing, Core Web Vitals and new errors.
Quarterly: the full 10-step audit, including content quality, cannibalization and conversions.
After every major change: a new theme, a plugin swap, a URL structure change, a host or domain migration. These are when robots.txt, noindex and redirect mistakes get introduced.
Make the audit recurring
Manual audits are snapshots. Search Console data changes weekly: new posts enter striking distance, seasonal queries shift, a plugin update flips a setting. A one-time audit starts going stale the day after.
The recurring version looks like this:
- Weekly Search Console pull
- Opportunity detection: striking distance, CTR gaps, missing metas, indexing problems
- Drafted fixes, not "improve this page"
- An approval queue you review
- Approved fixes written to WordPress
- A change log that replaces the PDF
RankHive runs that loop every week. From your Search Console data it finds the on-page work in Steps 5 to 7 (striking distance pages with weak titles, pages with impressions and a missing or weak meta description, under-linked pages) and the technical checks: pages Google isn't indexing, sitemap errors, canonical and robots/noindex mistakes, and Core Web Vitals from Chrome UX Report data (advisory only). Where there is a fix it can make, it drafts it with the evidence next to it. You approve it, it ships to WordPress, and the Change Log keeps the before and after so you can revert it. The quarterly strategic pass — content quality, conversions, cannibalization decisions — stays with you.
When to hire a human audit vs automate
Hire an experienced technical SEO when you are migrating domains, recovering from a penalty or a hack, changing themes on a large site, or facing a ranking drop you cannot explain. These need judgment across the whole site.
Automate the recurring performance audit when the site is technically sound, has Search Console history, and the problem is "we know we should optimize but we don't" — the job autopilot SEO is for.
The 10 steps are the human technical pass. Automation is the recurring performance pass. Sequential, not either/or.
Agency model: audits that retain clients
If you sell SEO audits to WordPress clients, the PDF model creates churn: the client gets a report, feels overwhelmed, questions the value, and shops for a cheaper audit next year.
The shipping model is easier to defend:
- Month 1: run the manual audit, ship the top ten fixes, record the Search Console before state.
- Months 2–3: weekly passes; the client approves proposals (or you do, with permission); share the change log every two weeks.
- Month 4: report shipped changes alongside Search Console movement on the queries you worked on.
The deliverable stops being "we found 200 issues" and becomes "here is what we changed and what moved". Clients can check every change in wp-admin.
Measuring audit success
Thirty days after the audit and shipping sprint, check:
- Performance: impressions, clicks, CTR and average position for the URLs you fixed, filtered to those URLs only.
- Indexing: did excluded important pages move to indexed?
- Core Web Vitals: did Poor URL groups shrink?
- Striking distance: how many Bucket B queries moved from positions 8–15 into the top 7?
If numbers are flat, either the fixes were too cosmetic (add content, not just metas) or the queries are competitive and need longer. Iterate; do not abandon the shipping model.
Anti-patterns
Audit as procrastination. Running a third audit before shipping the first one's findings.
Perfect report syndrome. Six hours formatting a PDF instead of an hour shipping fixes.
Tool tourism. Trying four crawlers in one week without fixing anything in any of them.
Chasing green scores. Getting a plugin to 100/100 on a page with zero impressions.
Ignoring Search Console. Auditing crawl data without connecting findings to the queries that actually drive visibility.
Worked example: from a PDF audit to the shipping model
This is an illustrative scenario, not a customer result. Picture a law firm's WordPress marketing site (~85 pages) that paid for a traditional audit last quarter: a 62-page PDF, 340 flagged issues, generic recommendations. Three months later, 11 items are fixed and traffic is flat.
They rerun the process in-house using the steps above. Bucket A is empty. Bucket B has 28 pages with 100+ monthly impressions, 12 of them with practice-area queries in striking distance. They ship ten title and meta fixes on audit day and review a weekly queue after that, with attorney bios, disclaimers and the contact page on a written do-not-touch list.
At 60 days they check the change log for what shipped, how many of the 12 striking distance queries moved into the top 7, and clicks on the 28 pages against the before numbers. The firm did not need more issues found. It needed fewer issues left open.
Frequently asked questions
How long does a WordPress SEO audit take?
60 to 90 minutes for a site under 500 pages using the 10 steps above. Sites with thousands of pages can take a day, mostly in the content quality step.
Do I need paid tools?
No. Search Console, PageSpeed Insights, Screaming Frog's free version (500 URLs), Ahrefs Webmaster Tools and the Rich Results Test cover all 10 steps. Paid tools add speed and some extra data.
What should I fix first?
Anything stopping important pages from being indexed. A page Google cannot reach or will not index cannot rank. After that, striking distance pages with weak titles, then mobile speed on your top templates.
Can I skip the manual audit and go straight to automation?
If the site is under about 50 pages and technically sound, yes — connect automation and let the weekly pass surface issues. Larger or messier sites benefit from one manual technical pass first.
Will automation miss technical issues?
Some. RankHive's weekly audit flags pages Google isn't indexing, sitemap errors, canonical and robots/noindex mistakes, and Core Web Vitals (advisory), but hosting, theme and caching problems still need a human. Run the technical audit quarterly and automate the performance loop.
Can I audit a new WordPress site?
Yes, but the focus changes. A site under six months old has little Search Console data, so the audit is about setup: is the SEO plugin configured, is the sitemap submitted, are robots.txt and the "Discourage search engines" setting correct?
Should I hire someone to audit my site?
If you have 50 or fewer pages and are comfortable with the tools above, do it yourself. For 500+ pages, complex URL structures, heavy index bloat or a recent ranking drop, an experienced SEO adds value.
Should I audit staging or production?
Production, as Google sees it. Staging is for testing fixes, not for discovering what Google indexes.
How many fixes should I ship per week?
A sustainable cadence is 5 to 15 performance fixes a week from the queue, plus Bucket C cleanup at your own pace.
Related reading
- Striking Distance Keywords: WordPress Quick Wins
- WordPress Technical SEO: 8 Fixes That Move Rankings
- How to Improve WordPress SEO
- SEO Automation Without Auto-Publishing
- WordPress SEO Checklist (free, 47 items)
- WordPress SEO Automation
Your job after any audit is getting the findings live, not filing them. Ship them by hand with the steps above, or let RankHive run the weekly audit on your Search Console data and ship each fix to WordPress after you approve it.
