Technical SEO Audit Checklist: 20 Checks for Crawling, Indexing, Rendering and Performance
1. Why a technical audit needs four quadrants
A lot of people treat a technical audit as running PageSpeed Insights once and glancing at the error count in GSC. In reality, technical SEO has four layers: can Google crawl it (crawling), will it index what it crawled (indexing), is the content right (rendering), and does it run fast (performance). If any one of them breaks, all the work above it is wasted.
Counterintuitive: a 100% index rate is not the goal. On a 1,000-page site, if 900 of those pages are thin content, parameter pages or search result pages, having Google index them all actually drags down your overall quality score. The right move is to noindex low-quality pages on purpose and concentrate your crawl budget on the 100 pages that genuinely have value.
| Quadrant | Core issues | If it breaks | Weight |
|---|---|---|---|
| Crawling | Can Googlebot reach your pages | Pages never get visited at all | Foundation layer, a single failure kills everything |
| Indexing | Will what was crawled make it into the index | Pages never enter Google’s database | Foundation layer, a single failure kills everything |
| Rendering | Is the HTML that was crawled the complete content | Content is correct but Google can’t read it | A common trouble spot on modern sites |
| Performance | Does the page run fast | Rankings get penalized or users leave | One of the ranking factors |
The four quadrants build on each other in order: first make sure pages can be crawled, then that they can be indexed, then that they render correctly, and only then optimize performance. The order can’t be reversed. If robots.txt is blocking important pages, no amount of LCP optimization will help. And Google SEO how it relates to other modules: a technical audit is the foundation,Structured data (Schema) builds the house on that foundation, and Core Web Vitals Optimization is a deep dive into the performance quadrant.
2. The crawling quadrant: 5 checks
Crawlability is the foundation. If Googlebot can’t reach your pages, nothing else matters.
| # | Checklist | Pass criteria | Tools | FAQ |
|---|---|---|---|---|
| 1 | robots.txt blocks nothing by mistake | Key pages aren’t Disallowed | GSC robots testing tool | Redesign left a stray Disallow: / |
| 2 | XML sitemap is reachable | Returns 200, no errors | GSC sitemap report | Sitemap path is wrong or never submitted |
| 3 | Crawl errors 4xx/5xx < 1% | 404/500 errors under 1% | GSC crawl stats | Redesign created mass 404s with no 301s |
| 4 | Crawl budget isn’t wasted | Parameter and duplicate pages don’t burn crawl budget | GSC crawl stats + log analysis | Search result pages get crawled endlessly |
| 5 | No broken internal links | Every internal link returns 200 | Screaming Frog crawl | Old posts link to deleted pages |
Example 1: After a site redesign, the tech team set robots.txt to Disallow: / and forgot to revert it. Three weeks later, “Crawled – currently not indexed” pages in GSC jumped from 200 to 2,000. How to catch it: when the Coverage report shows an unusual spike in “Crawled – currently not indexed,” check robots.txt first. After fixing it, request indexing manually with the URL Inspection tool; recovery takes 1 to 3 days.
Crawl budget: Google only crawls each site so often. If your site has lots of parameterized URLs (like /products?sort=price&filter=red), Googlebot spends most of its time on those duplicates, and your important product pages never get crawled. The fix: block parameterized URLs in robots.txt, or point them to the main version with a canonical.
3. Indexing: 5 checks
Google crawling your page doesn’t mean it will index it. The indexing checks cover two things: are the pages you want indexed actually indexed, and are the ones you don’t want indexed kept out?
| # | Checklist | Pass criteria | Tools | FAQ |
|---|---|---|---|---|
| 6 | All key pages are indexed | Core product and article pages indexed > 95% | GSC coverage report | New product pages never submitted in the sitemap |
| 7 | No accidental noindex | Live pages carry no noindex tag | Screaming Frog + GSC | noindex left on from the dev environment |
| 8 | No duplicate content | Multiple URL versions of the same content < 5% | Siteliner + Screaming Frog | HTTP/HTTPS and www vs. non-www duplicates |
| 9 | canonical tags are correct | Every page has a self-referencing canonical | GSC + URL Inspection tool | canonical points to the wrong page |
| 10 | Index coverage is reasonable | Indexed page count matches the number of valuable pages | GSC coverage report | Thin pages are indexed in bulk |
Example 2: A B2B site’s product listing page had 50 filter combinations, each generating its own URL (/products?category=valve&material=steel). Google indexed them all, and the total index count grew from 200 to 2,000. The result: the site was flagged for large amounts of duplicate thin content, its overall quality score dropped, and product detail pages actually ranked lower. The fix: add noindex to parameterized filter URLs, or block them outright in robots.txt.
A stray noindex is the most common and most damaging mistake. During development, the team added noindex to the site-wide head to keep the test site out of Google, then forgot to remove it after launch. Three months in, searching the brand name on Google still wouldn’t surface the official site. How to check: crawl with Screaming Frog, then filter for “Meta robots contains noindex” — live pages should return zero results.
4. Rendering quadrant: 5 checks
Modern sites rely heavily on JS rendering (React, Vue, Next.js client-side rendering). Googlebot can execute JS, but not in real time — it first crawls the raw HTML and queues it, then runs it through the Chrome rendering queue days later. This delay and rendering failures are the biggest SEO pitfalls for SPA sites.
| # | Checklist | Pass criteria | Tools | FAQ |
|---|---|---|---|---|
| 11 | Googlebot can render JS | URL Inspection tool shows “Rendered” | GSC URL Inspection tool | JS errors cause rendering failures |
| 12 | Core content is in the HTML source | title, H1, and first body paragraph are in the raw HTML | View page source (not F12) | Pure client-side rendering, blank source |
| 13 | No rendering errors in the console | No errors in Chrome DevTools Console | Chrome DevTools | API call failures leave content blank |
| 14 | Structured data can be parsed | No errors in Rich Results Test | Rich Results Test | JSON-LD is injected dynamically via JS |
| 15 | hreflang tags are correct | Multilingual pages reference each other correctly | GSC + hreflang checking tools | hreflang loops or wrong language returned |
Key test: use “View page source” (Ctrl+U, not F12) to see the raw HTML. If the title, H1, and first body paragraph are visible in the raw HTML, the site uses SSR or SSG, and Google can read the content on its first crawl. If the raw HTML contains only div#app and a pile of script tags, the site uses pure client-side rendering (CSR), and Google has to wait for the Chrome rendering queue to read it.
hreflang errors are very common on multilingual sites: a German page pointing to an English page, an English page pointing to itself, or a missing x-default. For setup instructions, see Hreflang for multilingual sites. Injecting structured data dynamically via JS may eventually render for Google, but the crawl queue often misses it — JSON-LD is best placed in the raw HTML.Structured data (Schema)‘s verification workflow pairs with this one.
5. Performance quadrant: 5 checks
Performance covers the three Core Web Vitals plus mobile usability and HTTPS. Performance isn’t just about “running fast” — it’s a Google ranking factor. Since 2021, Core Web Vitals has been an official ranking signal.
| # | Checklist | Pass criteria | Tools | FAQ |
|---|---|---|---|---|
| 16 | LCP (Largest Contentful Paint) | ≤ 2.5s | PageSpeed Insights + CrUX | Above-the-fold images uncompressed, fonts blocking |
| 17 | INP (Interaction to Next Paint) | ≤ 200ms | PageSpeed Insights + CrUX | Third-party scripts block the main thread |
| 18 | CLS (Cumulative Layout Shift) | ≤ 0.1 | PageSpeed Insights + CrUX | Images without dimensions, ad slots not reserved |
| 19 | Mobile usability | No blocking layout errors | GSC Mobile Usability report | Tap targets too small, horizontal scrolling |
| 20 | HTTPS site-wide with no mixed content | All resources served over HTTPS | Browser console + GSC | Images/CSS still point to HTTP links |
Example 3: A B2B site scores LCP 4.2s and INP 350ms on PageSpeed. The diagnosis: the hero banner is an uncompressed 3MB PNG, and the homepage loads 8 third-party tracking scripts. The fix: convert images to WebP and compress them to 200KB, and defer scripts with Tag Manager. Two weeks later, LCP drops to 1.8s and INP to 120ms. See the optimization method at Core Web Vitals Optimization.
Performance priority: LCP before INP before CLS. If LCP fails, check hero images first (compression, lazy loading, preload) and TTFB, then look at render-blocking resources.Global CDN acceleration Directly improves TTFB and LCP for overseas sites.
FAQ
How often should I run a technical SEO audit?
Is a higher index rate always better?
How do I do SEO for a React/Vue SPA site?
What is crawl budget? How do I tell if it’s being wasted?
How do I quickly fix a failing LCP?
How do you find and fix an accidental noindex?
Final thoughts
A technical SEO audit is the foundation of all SEO work: no matter how good your content is or how much you paid for backlinks, it’s all wasted if Google can’t crawl your pages or only finds an empty JS shell. These 20 checks aren’t a one-time task — run through them every quarter.
Three steps to put this into practice: this week, export data from the GSC coverage report and crawl stats, then check off each of the 20 items; next week, rank the failures by priority — fix crawling and indexing first (these are dealbreakers), then rendering, and optimize performance last; in the third week, retest your fixes with the URL Inspection tool and PageSpeed.
One line worth remembering: technical SEO isn’t about being more complex, it’s about being cleaner — if Googlebot can crawl fast, index accurately, render correctly, and run stably, you’ve done your part. Leave the rest to content and backlinks.
