I completed a 17-report SEO audit for a 200-page travel agency site in January 2026. Good content across every page. Decent backlink profile. Professional design. But 62% of their pages weren’t showing up in Google’s index. The content wasn’t the problem. The technical foundation was. Conflicting canonical tags on 40+ pages were confusing Google about which version to rank. Eighty-seven orphaned pages had zero internal links pointing to them, making them invisible to crawlers. Their robots.txt was accidentally blocking the entire /blog/ directory from being crawled. And crawl budget was being wasted on 400+ tag archive pages containing 1-2 posts each that should never have existed in the index.
Every item on this checklist is something I’ve found broken on real client sites across 400+ projects on Upwork. This isn’t a theoretical list assembled from WordPress documentation. It’s the exact sequence I follow during technical SEO audits, organized by category so you can work through it systematically on your own site.
Crawlability (Points 1-8)
Crawlability determines whether search engines can discover and access your pages. If Google can’t crawl a page, that page cannot rank. Period. Everything else in SEO is irrelevant for pages search engines can’t reach.
1. Robots.txt configuration. Navigate to yoursite.com/robots.txt in a browser. Verify it’s not accidentally blocking important directories. Common mistakes: Disallow: / left from development that blocks the entire site, Disallow: /blog/ that blocks your content directory, Disallow: /wp-content/uploads/ that blocks image crawling. RankMath generates an optimized robots.txt. Test your file at Google Search Console > Settings > robots.txt.
2. XML sitemap submitted and valid. Check Google Search Console > Sitemaps. Your sitemap should show status “Success” and the discovered URL count should approximately match your actual publishable page count. RankMath generates sitemaps automatically at /sitemap_index.xml with separate sitemaps for posts, pages, and categories. Common mistake: sitemap includes noindexed URLs, 404 pages, or redirect chains, sending Google mixed signals about which pages you actually want indexed.
3. Crawl errors in Search Console. Check GSC > Pages > “Not indexed” section. Every URL listed has a specific reason: “Crawled – currently not indexed” (Google found it but chose not to index it, often a quality signal), “Discovered – currently not indexed” (Google knows it exists but hasn’t crawled it yet, often a crawl budget issue), “Blocked by robots.txt” (your robots.txt is preventing access), “Noindex tag detected” (you or a plugin added noindex). Each reason requires a different fix.
4. Crawl budget efficiency. For sites with 100+ pages, crawl budget matters significantly. Google allocates a certain number of pages to crawl per visit to your site. If 40% of those crawls are wasted on tag archives, author archives, paginated pages, search result pages, and attachment URLs, your important service and product pages get crawled less frequently. This means new content and updates take longer to appear in search results. Eliminate waste by noindexing or removing low-value automatically-generated URLs.
5. Internal linking structure. Every important page should be reachable within 3 clicks from the homepage. This isn’t a UX preference; it’s a crawlability requirement. Pages buried 5-6 clicks deep get crawled less frequently and receive less authority. Orphaned pages (pages with zero internal links pointing to them) are effectively invisible to search engine crawlers that navigate through links. Screaming Frog’s site crawl reveals orphan pages immediately.
6. Redirect chains and loops. Page A redirects to Page B which redirects to Page C. Google follows redirect chains but loses PageRank at each hop and may stop following entirely after 3-5 sequential redirects. Every chain should be collapsed so each redirect points directly to the final destination URL. Screaming Frog’s redirect report identifies all chains. This is especially common after site migrations where old redirects weren’t updated when URLs changed again.
7. Broken internal links. Links pointing to 404 pages waste crawl budget, create dead ends for users, and leak link equity into nowhere. Run a crawl with Screaming Frog (free version crawls 500 URLs) or use RankMath’s 404 monitor to identify broken links as they occur. Fix each one by updating the link to the correct URL or removing it if the destination no longer exists.
8. URL parameter handling. WordPress plugins sometimes append URL parameters (?ref=, ?utm_source=, ?filter=color) that create duplicate versions of the same page. Each parameter variation looks like a separate URL to Google. A product page with 5 filter parameters could generate dozens of duplicate URLs all competing with each other. Canonical tags handle this (telling Google which version is the “real” one), but it’s cleaner to prevent parameter-based indexing entirely through proper plugin configuration.
Indexing (Points 9-15)
Crawling and indexing are fundamentally different processes. Google can crawl a page (download and read its content) but choose not to index it (not add it to the search results database). These checks ensure your pages actually enter Google’s index where they can appear in search results.
9. Index coverage analysis. GSC > Pages shows your total indexed page count. Compare this to your actual publishable page count. If you have 150 pages but only 80 are indexed, 70 pages are completely invisible in search results regardless of how good their content is. This single metric is the most important number in technical SEO. I check it first on every audit.
10. Canonical tag verification. Every page should have a self-referencing canonical tag (). This tells Google “this is the official version of this page.” RankMath handles this automatically. Common mistakes I find: canonical accidentally pointing to a different page (often caused by copying page settings during development), canonical on paginated archive pages pointing to page 1 instead of themselves, and conflicting canonicals from multiple SEO plugins running simultaneously.
11. Noindex directive audit. Verify that only pages you intentionally want excluded from search have noindex tags. Check systematically: tag archives (should be noindexed), author archives (noindex on single-author sites or redirect to about page), date archives (noindex), search results pages (noindex), WordPress attachment pages (redirect to parent post), and any thin category pages with insufficient content. Critically, verify that service pages, blog posts, and product pages are never accidentally noindexed. One wrong checkbox in RankMath can remove your most important page from Google.
12. Duplicate content resolution. Identical or near-identical content on multiple URLs confuses Google about which version to rank, often resulting in neither version ranking well. Common WordPress duplicates: www vs non-www (both versions accessible), HTTP vs HTTPS (both versions accessible), trailing slash vs no trailing slash (/page/ vs /page), and URL parameters creating duplicate versions. All versions should resolve to a single canonical version through 301 redirects. Check by searching site:yourdomain.com in Google and looking for duplicate titles in the results.
13. Thin content identification. Pages with minimal content (under 300 words of unique value) dilute your site’s overall quality assessment. Google’s Helpful Content system evaluates sites holistically, not just page by page. A site with 200 pages where 80 are thin tag archives, empty categories, and placeholder pages signals lower overall quality, dragging down the ranking potential of your genuinely valuable pages. Identify thin pages with Screaming Frog’s word count report. Either add substantial content, noindex them, or delete them.
14. Pagination handling. Blog archive pages (page/2/, page/3/) and WooCommerce product category pages with pagination should be handled carefully. Noindex paginated pages with follow attribute (so Google follows links to individual posts but doesn’t waste index space on the archive page itself). Most WordPress sites benefit from noindexing paginated archives because the individual posts and products are what you want ranking, not the archive pages.
15. Hreflang verification (multilingual sites only). For sites serving content in multiple languages, hreflang tags tell Google which language version to show which audience. Tags must be reciprocal (if English page points to French page, French page must point back to English page). Most single-language WordPress sites can skip this entirely.
Site Structure and URLs (Points 16-21)
How your site is organized determines how effectively search engines understand your content relationships and how authority flows between pages.
16. Permalink structure. WordPress permalink setting should be /%postname%/ for blog posts, producing clean URLs like /how-to-speed-up-wordpress/. Never use date-based (/2024/01/15/post-title/) or default (/?p=123) structures. Critical: once set, permalink structure should never change after launch. Changing it breaks every URL on the site and requires redirect mapping for every page. Set it correctly during initial development.
17. Silo architecture. Related content should be grouped and interlinked in topical clusters. My own site uses silo structure: the WordPress development hub links to all development service pages (theme customization, WooCommerce, Elementor, speed, migration, maintenance, malware, membership, advanced). The SEO hub links to all SEO pages (technical, on-page, WordPress SEO, audits, link building). This concentrates topical authority within each cluster.
18. Breadcrumb implementation. Breadcrumbs display page hierarchy visually (Home > SEO Services > Technical SEO) and provide Google with explicit structural data when paired with BreadcrumbList schema. Enable breadcrumbs in RankMath and display them in your Elementor templates. The visual breadcrumbs and schema breadcrumbs must match exactly.
19. Internal link equity distribution. Your most important pages should receive the most internal links. Use Screaming Frog’s internal link report to check distribution. Hub/pillar pages should receive links from all related spoke pages. If your highest-priority commercial page has 3 internal links while a random blog post has 15, your link equity distribution is inverted.
20. Navigation architecture. Primary navigation should include main service categories accessible in one click. Footer navigation can include all important pages for crawlability. Avoid mega-menus with 100+ links that dilute link equity across too many destinations and overwhelm crawlers with choices.
21. Custom 404 page. Configure a custom 404 page that helps visitors find what they were looking for instead of WordPress’s default “Page not found” dead end. Include: a search bar, links to main service categories, link to homepage, and a contact link. Monitor 404 hits in RankMath’s 404 monitor and create redirects for frequently-hit 404 URLs.
Schema Markup (Points 22-27)
Schema markup is structured data that tells search engines exactly what your content represents. Without schema, Google interprets your content through natural language processing alone. With schema, you’re giving Google explicit metadata that enables rich snippets and enhanced search result features.
22. Site-wide entity declaration. Your site should declare the primary entity it represents: Organization (for business sites) or Person (for personal brands). This connects your site to Google’s Knowledge Graph. Configure once in RankMath > Titles & Meta > Local SEO / Knowledge Graph. Include: name, logo, social profiles, contact information.
23. WebPage schema on every page. Each page should have WebPage schema (or appropriate subtype: AboutPage for your about page, ContactPage for contact, FAQPage for FAQ, CollectionPage for portfolio and archive pages). RankMath generates this automatically when configured correctly.
24. Article schema on blog posts. Every blog post should have Article (or BlogPosting) schema declaring: headline, author, datePublished, dateModified, image, publisher, and description. This enables article rich snippets displaying publication date and author. RankMath generates this automatically when the default schema type for posts is set to Article.
25. FAQPage schema on qualifying pages. Pages containing FAQ sections qualify for FAQ rich snippets that expand your search listing with dropdown question-answer pairs. This dramatically increases visual real estate in search results and click-through rates. Every service page and blog post with an FAQ section on my site includes FAQPage schema.
26. Product schema for WooCommerce. WooCommerce product pages need Product schema with: name, description, image, price, priceCurrency, availability, brand, SKU, and aggregateRating. This enables price, availability, and star rating rich snippets. RankMath’s WooCommerce integration handles basic product schema. Variable products with multiple prices need additional configuration.
27. BreadcrumbList schema. Matches your visual breadcrumbs and tells Google the exact page hierarchy for display in search results. Google often shows breadcrumb paths instead of raw URLs in search snippets. RankMath generates BreadcrumbList schema automatically when the breadcrumbs module is enabled.
Validation process. Test every schema implementation at search.google.com/test/rich-results and validator.schema.org. Fix all errors. Test representative pages from each template type: homepage, service page, blog post, product page, category page. One misconfigured template affects every page using it.
Core Web Vitals (Points 28-32)
Google’s Core Web Vitals are three performance metrics used as ranking signals. Detailed optimization methods are covered in my WordPress speed optimization guide. This section covers what to check and the pass/fail thresholds.
28. LCP under 2.5 seconds. Largest Contentful Paint measures when the primary visible content renders. Usually your hero image or main heading. Fix priorities: optimize hero image (WebP, correct dimensions, preloaded, NOT lazy-loaded), improve TTFB through quality hosting, inline critical CSS so above-fold content renders without waiting for external stylesheets. Test at pagespeed.web.dev on mobile tab.
29. INP under 200ms. Interaction to Next Paint measures how quickly the page responds to user actions. The gap between the user’s click and the browser’s visual response. Fix priorities: defer and delay non-essential JavaScript, minimize main thread blocking from heavy scripts. Most WordPress sites fail INP due to bloated JavaScript from too many plugins and third-party scripts.
30. CLS under 0.1. Cumulative Layout Shift measures visual stability during loading. Every time an element shifts position unexpectedly, it contributes to CLS. Fix priorities: set explicit width and height attributes on all images and embeds, preload fonts to prevent text reflow, reserve fixed space for dynamically injected content.
31. Mobile-specific testing. Core Web Vitals must pass on mobile, not just desktop. Google uses mobile-first indexing, meaning mobile performance determines your rankings even for desktop searches. Mobile scores are consistently lower than desktop. Optimize specifically for mobile constraints. The speed optimization service includes mobile-specific testing.
32. Field data vs lab data. PageSpeed Insights displays two datasets. Lab data tests under controlled conditions. Field data aggregates performance from real users over 28 days. Google uses field data for ranking decisions. A site can score 95 in lab testing but fail field data if real visitors on slower connections experience poor performance. Monitor field data in GSC > Core Web Vitals report.
Security and HTTPS (Points 33-37)
Google confirmed HTTPS as a ranking signal in 2014. Beyond rankings, security issues create cascading SEO problems: Safe Browsing warnings that tank click-through rates, malware injections that trigger manual actions, and trust erosion that increases bounce rates.
33. SSL/HTTPS on every resource. Every page, image, script, stylesheet, and font must load over HTTPS. No mixed content. Mixed content triggers “Not Secure” browser warnings that destroy trust. Check in browser DevTools console for mixed content warnings. Force HTTPS redirect server-side through .htaccess or hosting control panel.
34. Security headers. HTTP security headers prevent common attack vectors: X-Content-Type-Options, X-Frame-Options, Content-Security-Policy, Strict-Transport-Security/HSTS, and Referrer-Policy. These don’t directly impact rankings but prevent vulnerabilities that lead to malware infection and Google Safe Browsing blocklisting, which absolutely destroys rankings.
35. WordPress security fundamentals. Updated WordPress core. Updated plugins and themes. Strong admin passwords (16+ characters). Two-factor authentication on admin accounts. Limited login attempts. Correct file permissions (644 for files, 755 for directories, 600 for wp-config.php). Detailed security hardening on my malware removal page.
36. Google Safe Browsing status. Check transparencyreport.google.com/safe-browsing/search with your domain. If flagged, Google displays a red warning interstitial page before visitors can access your site. Click-through rates drop to near zero. The flag persists until malware is cleaned and a reconsideration request is approved through GSC.
37. WordPress login security. Change default login URLs to custom paths. Disable XML-RPC if not actively used. Install login rate limiting. These prevent brute force attacks that compromise admin accounts and lead to malware injection.
Mobile SEO (Points 38-42)
Google uses mobile-first indexing. The mobile version is the primary version Google evaluates for rankings.
38. Responsive design verification. Every page must render correctly on mobile without horizontal scrolling, overlapping elements, or text too small to read. Test on actual mobile devices. All Elementor builds should be tested across mobile, tablet, and desktop breakpoints.
39. Mobile usability in GSC. Check GSC > Mobile Usability for flags: “Text too small to read” (font under 16px), “Clickable elements too close together” (insufficient spacing), “Content wider than screen” (oversized elements). Target: zero issues.
40. Touch target sizing. Buttons and links must be at least 48×48 pixels with 8px spacing between adjacent targets. Undersized targets cause frustration and impact INP when users repeatedly miss their target.
41. Viewport meta tag. must be present. WordPress themes include this by default, but verify it exists, especially on sites with custom themes or heavily modified headers.
42. Mobile page speed. Serve appropriately-sized images through responsive srcset attributes. Minimize JavaScript execution (mobile processors are slower). Ensure above-the-fold content renders within 2.5 seconds on 4G, not just WiFi.
WordPress-Specific Technical SEO (Points 43-50)
These issues are unique to WordPress and commonly missed because generic SEO checklists don’t cover platform-specific configurations.
43. Single SEO plugin only. Running RankMath and Yoast simultaneously causes duplicate schema, conflicting canonicals, and double sitemaps. Pick one. I use RankMath on every project.
44. Attachment pages disabled. WordPress creates a separate HTML page for every uploaded media file. A site with 500 images has 500 thin attachment pages competing for crawl attention. In RankMath > General Settings > Links: redirect attachment URLs to parent post.
45. Comment spam controlled. Spam comments inject low-quality content and spammy links into your pages. Disable comments if unused (Settings > Discussion). If active, use Akismet plus manual moderation. Close comments on posts older than 90 days.
46. Search results pages noindexed. WordPress internal search (/?s=keyword) creates infinite URL variations with thin content. RankMath noindexes these by default in Titles & Meta > Misc Pages.
47. Author archive handling. Single-author sites should redirect author archives to the about page or noindex them. Without this, the author archive and about page compete against each other. Multi-author sites can keep author archives indexed if each author has substantial content.
48. Tag and category optimization. Tags with only 1-2 posts should be noindexed or deleted. They create thin pages. Categories should have custom descriptions and enough posts to justify indexation. Most sites benefit from noindexing all tags.
49. Permalink structure locked. After launch, never change permalink structure. Changing from /%postname%/ to /%category%/%postname%/ breaks every URL and invalidates every backlink. Set correctly during development and leave permanently.
50. PHP and WordPress version currency. Run latest stable WordPress and PHP 8.2+. Outdated versions have published security vulnerabilities and run 20-30% slower. Check in Tools > Site Health > Info > Server. Update on staging first.
Advanced Technical SEO (Points 51-54)
These apply to larger sites (500+ pages) or complex technical requirements.
51. Server log file analysis. Server access logs show exactly which pages Googlebot crawls, how frequently, and which it ignores. For large sites, log analysis reveals crawl patterns GSC doesn’t expose. If Googlebot visits 200 pages but 150 are low-value archives, only 50 important pages get regular attention.
52. JavaScript rendering verification. If your site uses JavaScript-dependent content loading, verify Google sees rendered content via GSC > URL Inspection > “View Crawled Page.” Standard WordPress with Elementor renders server-side and avoids this issue, which is one reason I recommend it over JavaScript-heavy page builders.
53. International targeting. For sites targeting specific countries with the same language, set geographic targeting in GSC. Ensure hreflang tags are correct, reciprocal, and self-referencing. Misconfigured international targeting causes wrong country versions to rank.
54. Cross-template schema validation. Test schema on URLs from every page template type: homepage, service page, blog post, product page, category. One misconfigured Elementor template or RankMath default affects every page using that template.
How to Use This Checklist
Priority order for fixing issues. Start with indexing (points 9-15) because unindexed pages cannot rank. Then crawlability (points 1-8) to ensure Google reaches important pages. Then site structure (points 16-21) for authority flow. Then schema (points 22-27) for rich snippets. Then Core Web Vitals (points 28-32) for performance signals. Then security (points 33-37) and mobile (points 38-42). WordPress-specific items (points 43-50) throughout.
Tools you need. Google Search Console (free, essential). PageSpeed Insights (free, Core Web Vitals). Screaming Frog SEO Spider (free version crawls 500 URLs). Google Rich Results Test (free, schema validation). Browser DevTools (free, mixed content and network analysis). These five free tools cover 80% of this checklist.
DIY vs professional audit. Working through this checklist yourself takes 4-8 hours for a small site and reveals the most impactful issues. A professional SEO audit goes deeper: 17 separate reports including competitor analysis, keyword gap analysis, content audit, backlink analysis, and a prioritized 12-month action plan. The professional audit also includes someone who has seen these patterns across 400+ sites and can immediately distinguish critical issues from cosmetic ones.
My full technical SEO service covers every point on this checklist plus ongoing monitoring. On-page SEO covers per-page content optimization. WordPress SEO configuration covers the RankMath setup powering points 1, 2, 10, 11, 22-27, 43-48. Link building amplifies what you’ve built. Browse portfolio, case studies, and reviews for verified results. Background on about page. Pricing on cost page. Platform comparisons: WordPress vs Shopify and WordPress vs Wix. Design and theme choices affect technical SEO. Maintenance keeps it healthy. Malware damages it. Migration must preserve it. WooCommerce and membership sites have additional layers. Advanced builds require careful planning. Hiring guide: how to hire a developer. FAQ. Contact or Upwork.
Frequently Asked Questions
How often should I run a technical SEO audit?
Comprehensive audit: annually or after major site changes (redesign, migration, platform update). Quick health check: quarterly. My maintenance plans include quarterly technical SEO health checks.
Can I do a technical SEO audit myself?
Yes for most items using Google Search Console, PageSpeed Insights, and Screaming Frog. You’ll catch the biggest issues. The full 17-report professional audit with competitor analysis requires experience across hundreds of sites.
Which checklist items should I fix first?
Indexing issues (points 9-15) always first because unindexed pages cannot rank. Then crawlability (points 1-8). Security issues (points 33-37) are urgent if present because a single malware infection undoes months of SEO progress.
How long does a professional technical SEO audit take?
DIY with this checklist: 4-8 hours for sites under 100 pages. Professional 17-report audit with competitor analysis and action plan: 5-8 business days. The timeline accounts for crawling, data analysis, and creating prioritized recommendations.
Does technical SEO matter for small sites?
Absolutely. A 10-page site with 3 pages accidentally noindexed loses 30% visibility. Technical errors don’t scale with size. Small sites have fewer pages to rank, so each page carries more weight, making technical errors proportionally more damaging.
Need the Full Professional Audit?
This checklist shows you what to check. A professional audit shows you what to do about each finding, in what order, with estimated ranking impact. Seventeen reports. Competitor analysis. Prioritized 12-month action plan. Fixed price on Upwork.


