Free resource · No email required

The 26-point technical SEO audit checklist

For any website on any platform. Every check runs on free tools — Search Console, URL Inspection, PageSpeed Insights, the Rich Results Test and your robots.txt. 5 are marked fix first: they decide whether Google can crawl and keep your pages at all.

Where this comes from. It is the audit behind the technical SEO case studies: Michigan Outdoor Sports (indexing rebuilt after a de-indexing event) and Remit Choice (international SEO for a UK remittance brand). Tick what is true today; progress is saved in this browser. Running a WooCommerce store? The WooCommerce checklist covers the platform specifics. For the service itself, see technical SEO.

26 checks

Crawling

0/5

Whether Googlebot can reach the pages that matter — and does not waste its time on the ones that don't.

  • robots.txt does not block pages, CSS or JavaScript you need indexed

    Fix first

    Open yoursite.com/robots.txt and read every Disallow line. Blocking a folder of important pages, or the CSS and JavaScript files pages need to render, hides content from Google. Search Console's robots.txt report shows what Google fetched.

  • Pages you want out of Google use noindex, not a robots.txt block

    robots.txt stops crawling, not indexing — a blocked URL can still appear in results if other pages link to it. To keep a page out, let Google crawl it and serve a noindex meta tag or X-Robots-Tag header.

  • XML sitemaps list only canonical, indexable URLs that return 200

    No redirects, 404s, noindexed or non-canonical URLs. Each sitemap holds at most 50,000 URLs or 50MB uncompressed; larger sites split them and submit a sitemap index in Search Console.

  • Crawl traps are closed: filters, sort orders, calendars, session IDs

    Fix first

    Parameter combinations and endless calendar or search pages can create millions of near-duplicate URLs. Search Console → Settings → Crawl stats shows what Googlebot is actually fetching; if most requests go to parameter URLs, fix the links and canonicals that create them.

  • Server logs or Crawl stats checked for where Googlebot spends its time

    Crawl stats gives response codes, file types and purpose. On large sites, server logs show which sections Googlebot visits and which it ignores. Verify real Googlebot by reverse DNS — many bots fake the user agent.

Indexing

0/5

Whether the pages Google crawls are the ones it keeps — and the versions you intended.

  • The Pages report reasons are understood, section by section

    Fix first

    Search Console → Indexing → Pages. Group the "not indexed" reasons by site section. "Crawled – currently not indexed" on important templates usually means thin or duplicate content; "Discovered – currently not indexed" usually means crawl priority.

  • One version of every URL: https, one host, one trailing-slash style

    http, https, www and non-www should all 301 to one version, and /page and /page/ should not both return 200.

  • Canonical tags agree with sitemaps and internal links

    Each indexable page has an absolute, self-referencing canonical. A canonical is a hint, not a command — if internal links and sitemaps point somewhere else, Google may pick its own canonical. URL Inspection shows the user-declared and Google-selected canonical.

  • No important page carries a stray noindex

    Crawl the site and list every noindexed URL, from both meta tags and X-Robots-Tag headers. A template-level noindex left over from staging is one of the most common causes of sudden traffic loss.

  • Empty and near-empty pages return 404 or are improved

    Search Console flags soft 404s: pages that return 200 but look empty, such as empty categories or search results with no matches. Return a real 404, add content or noindex them.

Redirects and status codes

0/4

Every hop costs time and can lose signals. Migrations are where sites lose the most.

  • No redirect chains or loops

    Googlebot follows up to 10 redirect hops, but each hop slows crawling. Point every redirect straight at its final URL and fix any that loop.

  • Internal links point to final URLs, not redirects

    Update navigation, footer and in-content links to the destination URL so crawlers and visitors skip the hop.

  • Removed pages return 404 or 410, and moved pages 301

    Redirect removed pages only when there is a genuine replacement. Mass-redirecting everything to the homepage is treated like a soft 404.

  • Any site migration has a full old-to-new redirect map

    Fix first

    Before changing domains, platforms or URL structures, map every indexed and linked old URL to its new equivalent, test the map on staging, and keep the redirects in place long-term.

Rendering and mobile

0/3

Google indexes the mobile version of the page, as rendered. What a browser shows is not always what Google gets.

  • Main content and links appear in the rendered HTML Google sees

    URL Inspection → Test live URL → View tested page. The text, headings and links you care about should be in the rendered HTML. Links need to be real <a href> elements; Google does not follow links that only work with a click handler.

  • The mobile page has the same content, links and structured data as desktop

    Google uses the mobile version for indexing. Content hidden or removed on mobile is content Google may not index.

  • Lazy-loaded content loads without scrolling or clicking

    Googlebot does not scroll or click. Content that loads only on those actions — reviews, product details, "load more" lists — should use native lazy loading or load as it enters the viewport.

Page experience and speed

0/4

Core Web Vitals are measured on real visitors. Fix templates, not single URLs.

  • Core Web Vitals pass on real-user data for your main templates

    Fix first

    Search Console → Core Web Vitals. Good means LCP within 2.5 seconds, INP within 200 milliseconds and CLS within 0.1, measured on real Chrome users. Lab tools like Lighthouse help find causes, but the field data is what counts.

  • Images are sized, compressed and have width and height set

    Serve images at the size they display, in WebP or AVIF, with width and height attributes so the layout does not shift as they load. Do not lazy-load the main image at the top of the page.

  • Third-party scripts are audited

    Chat widgets, tag managers, heatmaps and ad scripts are common causes of slow interactions. Remove what nobody uses and delay the rest until after the page is usable.

  • Server response is fast and pages are cached

    A slow server response delays everything after it. PageSpeed Insights shows time to first byte; page caching and a CDN fix most of it.

Structured data and AI search

0/5

How Google, AI Overviews and other answer engines understand what a page is — and whether they are allowed to read it.

  • Structured data is valid and matches what the page shows

    Test key templates in Google's Rich Results Test and check the enhancement reports in Search Console. Markup must describe content visible on the page; marking up things that are not there breaks Google's guidelines.

  • Your site name and logo are declared

    WebSite structured data with your site name, and Organization structured data with your logo, help Google show the right name and image next to your results.

  • AI crawler rules in robots.txt are a deliberate choice

    Blocking Googlebot removes you from Google Search, AI Overviews included. Google-Extended controls use of your content for Gemini models and does not affect Search. OpenAI separates OAI-SearchBot (ChatGPT search results) from GPTBot (model training), so you can allow one and block the other.

  • hreflang is correct on multi-language or multi-country sites

    Each language version lists every alternate, including itself, and the alternates link back. Add x-default for the fallback page. Skip this check if the site is in one language for one country.

  • Every release is checked for SEO regressions

    After a deploy, check robots.txt, a sample of canonicals and noindex tags, the sitemap and structured data on each main template. Most sudden drops trace back to a release, not an algorithm update.

Found problems you can't trace to a cause?

This is the audit I run before any technical work starts, written out so you can do it yourself. If you would rather I found what is holding your site back and in what order to fix it, that is the offer below — free, within 24 hours.

Free · No obligation · Reply within 24 hours · Market Exclusivity (One client per city)

Google updates its crawling, indexing and page experience documentation from time to time. Where a check quotes a limit or threshold, confirm it against Google Search Central.