Highlights

After auditing 400+ sites, we separated the checks that actually correlate with ranking gains from the ones that don't. These 47—ranked by measurable impact—are the difference between sites that rank and sites that stall.

Crawlability & Indexation (Checks 1–12)

Before any ranking factor matters, Google has to find and index your content. Half the sites we audit have preventable crawlability issues actively suppressing their rankings.

Robots.txt & XML Sitemap (Checks 1–5)

  • Check 1: Robots.txt blocks no critical pages. Run your robots.txt through Google's testing tool and verify your main content directories aren't accidentally disallowed.
  • Check 2: XML sitemap contains only indexable URLs. Remove redirected, noindexed, and 404 pages from your sitemap. Googlebot reads your sitemap as a quality signal.
  • Check 3: Sitemap is submitted to Search Console. Not submitted means slower content discovery — especially for new or updated pages.
  • Check 4: Sitemap regenerates automatically on publish. Static sitemaps go stale. Use a plugin or script that rebuilds the sitemap every time content changes.
  • Check 5: Hreflang is correct in sitemap for multilingual sites. Mismatched hreflang is one of the most common — and most damaging — international SEO errors we encounter.

Crawl Budget & Index Health (Checks 6–12)

  • Check 6: Index coverage report shows under 5% excluded URLs. Log into Search Console. If you're over 20% excluded, you have an index bloat problem that's diluting crawl budget.
  • Check 7: Internal noindex pages aren't linked from indexed pages. Links to noindex pages waste crawl budget and distort internal link equity distribution.
  • Check 8: No session-ID parameters generating duplicate URLs. Dynamic parameters create duplicate content at scale. Use URL normalization or canonical tags to consolidate.
  • Check 9: Faceted navigation is handled consistently. E-commerce sites: use canonical tags or disallow facets in robots.txt — not both. Conflicting signals confuse crawlers.
  • Check 10: Pagination is applied consistently across all templates. Whether you use self-referencing canonicals or paginated page numbers, apply the same pattern site-wide.
  • Check 11: Orphaned pages have at least one internal link pointing to them. Pages with no internal links get crawled infrequently. Run a programmatic audit against your sitemap to identify them.
  • Check 12: Log file analysis confirms Googlebot crawling high-priority pages. If you have server log access, use Screaming Frog Log Analyzer to verify crawl distribution matches your priority pages.

Core Web Vitals (Checks 13–22)

Core Web Vitals are a confirmed ranking signal. More importantly, poor CWV directly predicts higher bounce rates and lower conversion rates. Fix them for users first — rankings follow.

LCP: Largest Contentful Paint (Checks 13–15)

LCP measures how long it takes the largest visible element to render. The 2026 "Good" threshold is under 2.5 seconds on mobile.

  • Check 13: LCP element is identified and targeted. Use PageSpeed Insights or Chrome DevTools to pinpoint your LCP element. For most pages, it's the hero image or H1 text block.
  • Check 14: Hero images use fetchpriority="high". This single attribute is the highest-impact LCP improvement available. Add it to every above-the-fold hero image across all page templates.
  • Check 15: No render-blocking resources delay the LCP element. Defer non-critical CSS and JS. Every 100ms of render-blocking adds roughly 100ms to LCP — it's a 1:1 relationship.

CLS: Cumulative Layout Shift (Checks 16–18)

CLS measures visual instability — elements jumping around as the page loads. The "Good" threshold is under 0.1. Even minor shifts are noticeable and erode user trust.

  • Check 16: Images have explicit width and height attributes. Without declared dimensions, the browser can't reserve space, causing layout shifts on load completion.
  • Check 17: Ads, embeds, and iframes have pre-reserved space. Dynamically injected content is the #1 CLS culprit. Reserve space with CSS min-height before content loads.
  • Check 18: No custom font FOUT causing layout shifts. Use font-display: swap and preload critical fonts. Better yet: use system fonts for critical text where brand flexibility allows.

INP: Interaction to Next Paint (Checks 19–22)

INP replaced FID as a Core Web Vital in March 2024. It measures responsiveness across all user interactions, not just the first. The "Good" threshold is under 200ms.

  • Check 19: No long tasks block the main thread for over 50ms. Long tasks block all user interaction. Use Chrome's Performance tab to identify and break up tasks exceeding 50ms.
  • Check 20: Event handlers do minimal synchronous work. Move heavy computation off the main thread using Web Workers or async patterns where possible.
  • Check 21: Third-party scripts don't block interaction. Tag managers, chat widgets, and analytics scripts are common INP culprits. Audit impact with WebPageTest's blocking breakdown.
  • Check 22: INP is tracked in field data, not just lab data. CrUX data and Real User Monitoring often tell a very different story than PageSpeed Insights. Both sources are required for an accurate picture.

On-Page Technical Signals (Checks 23–31)

These are the most commonly audited checks — and the most commonly half-done. The ranking differences are in the details, not the checklist items themselves.

Title Tags & Meta Descriptions (Checks 23–25)

  • Check 23: Every page has a unique title tag under 60 characters. Duplicate titles are a crawl quality signal. Never let your CMS auto-generate titles from H1s without a unique pattern.
  • Check 24: Title tags front-load the primary keyword. Google rewrites titles that are too long or keyword-stuffed. Keyword placement within the first 60 characters generally sticks.
  • Check 25: Meta descriptions exist and are under 160 characters. Meta descriptions don't directly affect rankings. But click-through rates do. Write them for humans scanning SERPs.

Heading Structure & Canonicals (Checks 26–28)

  • Check 26: Each page has exactly one H1 tag. Multiple H1s aren't a documented penalty, but they dilute semantic clarity. One H1 per page is the clear standard.
  • Check 27: Canonical tags point to the correct preferred version. Self-referencing canonicals are fine. Verify that paginated, filtered, and parameterized pages point to the intended canonical URL — not themselves or the wrong page.
  • Check 28: HTTPS is consistently the canonical version. Search Console should show zero mixed-content issues. Your canonical tag must always reference the HTTPS URL.

Duplicate Content & Thin Pages (Checks 29–31)

  • Check 29: No significant duplicate content exists at scale. E-commerce category and location pages are the most frequent offenders. Use Siteliner or Copyscape for a bulk content similarity audit.
  • Check 30: Thin pages under 300 words are either improved or noindexed. Google has been explicit: thin content is a quality signal. If a page can't justify 300 words of genuinely unique content, it shouldn't consume index budget.
  • Check 31: WWW vs. non-WWW is consolidated with a 301 redirect. Pick one canonical domain version and redirect all others. Check Search Console's Coverage report for discrepancies.

Structured Data & Schema Markup (Checks 32–38)

Schema doesn't directly improve rankings, but rich results — which require structured data — significantly impact CTR. For eligible page types, missing schema is a missed opportunity at scale.

Schema Implementation (Checks 32–35)

  • Check 32: Site-level Organization and BreadcrumbList schema is present. Organization schema belongs on your homepage. BreadcrumbList on every page helps Search Console parse your site structure accurately.
  • Check 33: Article schema is implemented on all blog and editorial posts. Required fields: headline, datePublished, dateModified, author, and image. All are necessary for Article rich result eligibility.
  • Check 34: Product schema includes offers, aggregateRating, and SKU. Google requires price and availability data in Product schema for Shopping eligibility. Missing fields silently disqualify pages.
  • Check 35: FAQ schema is used only on genuine FAQ content. Google significantly reduced FAQ rich result appearances in 2024. Only implement where the FAQ format genuinely serves users — not as a ranking tactic.

Rich Results Eligibility (Checks 36–38)

  • Check 36: All schema is validated with Google's Rich Results Test. Run every schema-enabled template through this tool. Common failure modes: missing required fields and incorrect data types.
  • Check 37: No schema is implemented for content types you don't publish. Review schema on pages with no user reviews is a manual action risk. Schema must reflect actual on-page content.
  • Check 38: Schema entities match the visible on-page content. Discrepancies between markup and visible content can trigger manual actions. Validate schema against live rendered page content, not just source HTML.

Page Speed & Core Infrastructure (Checks 39–47)

Server performance and asset delivery affect rankings via Core Web Vitals and crawl budget allocation. These checks address the infrastructure layer that everything else depends on.

Server & Hosting Performance (Checks 39–41)

  • Check 39: Time to First Byte is under 800ms. TTFB above 800ms is a "Needs Improvement" signal for Core Web Vitals. For most sites, a CDN or server-side edge caching resolves this without code changes.
  • Check 40: Hosting uses a CDN for static assets. Without a CDN, international visitors face geographic latency that tanks Core Web Vitals field data regardless of how well-optimized your code is.
  • Check 41: Server consistently returns correct HTTP status codes. Intermittent 5xx errors are hard to catch manually but devastating for crawl budget. Set up uptime monitoring with error-rate alerting.

Image & Asset Optimization (Checks 42–44)

  • Check 42: Images are compressed and served in WebP or AVIF. WebP saves 25–35% over JPEG at equivalent quality. AVIF saves another 20% on top of WebP. Both have 95%+ browser support in 2026.
  • Check 43: Below-fold images use loading="lazy". Lazy loading reduces initial page weight measurably. The one exception: above-the-fold images must always eager-load to avoid LCP regressions.
  • Check 44: No oversized images served at inflated dimensions. A 2000px image displayed at 400px wastes 5× the bandwidth. Use the srcset attribute to serve appropriately sized images per viewport.

JavaScript & CSS Optimization (Checks 45–47)

  • Check 45: JavaScript execution time is under 3.5 seconds total. High JS execution time is the most common cause of poor INP scores. Audit with Chrome DevTools → Performance tab → Bottom-Up view.
  • Check 46: Unused CSS is removed or deferred. Use PurgeCSS or browser coverage tools to identify and strip styles that are never applied. Unused CSS bloats the initial download without contributing to rendering.
  • Check 47: Critical CSS for the initial viewport is inlined. Inlining the CSS that renders your above-the-fold content eliminates render-blocking stylesheet requests from the critical path entirely.