Every technical SEO audit tool will happily hand you a spreadsheet with 4,000 "issues." Missing alt text on a footer icon. A 302 that should be a 301 on a page with no traffic. Meta descriptions two characters over an imaginary limit. The result is predictable: the spreadsheet gets filed, nothing ships, and the two problems that were actually suppressing rankings survive another quarter.
This checklist is the opposite. It's the 30 checks we run on every technical SEO engagement, ordered by the pipeline search engines actually follow: crawl → render → index → rank. A failure early in that pipeline makes everything downstream irrelevant, so that's the order you audit in.
For each check you'll get what to verify, the tool to verify it with, and what "pass" looks like. Work through it top to bottom and you'll have covered everything that materially affects organic performance, and safely ignored everything that doesn't.
Crawlability: can search engines reach your pages? (Checks 1–7)
Crawling is the front door. If Googlebot can't fetch a URL, nothing else on this list matters for that URL. These seven checks confirm the door is open, and that you're not wasting crawl budget on doors that should be closed.
- robots.txt doesn't block anything important. Fetch
/robots.txtand read every Disallow line. The classic failure is a staging rule (Disallow: /) that shipped to production, or a pattern likeDisallow: /*?silently blocking faceted category pages you want indexed. - The XML sitemap exists, is referenced in robots.txt, and contains only canonical, indexable, 200-status URLs. A sitemap full of redirects and noindexed pages tells Google your site is poorly maintained and wastes its crawl requests.
- Every important page is reachable within 3 clicks of the home page. Crawl your site with Screaming Frog and check crawl depth. Pages buried 5+ levels deep get crawled less often and inherit less link equity, a structural problem your internal linking architecture should fix.
- No orphan pages. Compare your crawl output against your sitemap and analytics. URLs that appear in the sitemap but not in the crawl have zero internal links, Google may know they exist, but has no reason to think they matter.
- Faceted navigation and URL parameters are controlled. Filters, sorts, and session parameters can multiply one category into thousands of crawlable near-duplicates. Block crawl-trap parameters in robots.txt and canonicalize the rest.
- Redirect chains are ≤1 hop. Every hop adds latency and leaks link equity, and Google stops following after roughly 10 hops (5 per crawl session). Export chains from your crawler and repoint internal links straight to the final URL.
- Server responds reliably to Googlebot. In Search Console's Crawl Stats report, check for spikes in 5xx responses or average response times above ~600ms. Sustained server errors cause Google to slow crawling of the whole site.
# A sane robots.txt for most sites
User-agent: *
Disallow: /cart
Disallow: /checkout
Disallow: /search
Disallow: /*?sort=
Disallow: /*?sessionid=
Sitemap: https://www.example.com/sitemap.xmlIndexation: are the right pages in the index? (Checks 8–14)
Indexation is a two-sided problem. Pages you need indexed sometimes aren't, and thin, duplicate, or parameterized junk often is, diluting how clearly Google models your site. The Page Indexing report in Search Console is your primary instrument here.
- Indexed count roughly matches your count of valuable pages. If you have 800 real pages and Google reports 12,000 indexed, you have an index-bloat problem. If it reports 150, you have a discovery or quality problem. Either gap is a finding.
- "Crawled, currently not indexed" is small and stable. A growing bucket here is Google telling you it fetched pages and judged them not worth storing, a content quality signal, not a technical bug. Consolidate or improve those pages.
- Canonical tags are self-referencing on unique pages and point to the right target on variants. Spot-check with the URL Inspection tool: "Google-selected canonical" should match "user-declared canonical." When they disagree, Google is overruling you, investigate why.
- No accidental noindex tags. Crawl for
noindexin both meta tags and X-Robots-Tag HTTP headers. CMS plugins and migration leftovers put these in surprising places, and a single templated noindex can remove an entire page type. - Pagination is crawlable. Paginated archives should use plain crawlable links, self-canonicalize each page, and never canonicalize page 2+ to page 1, that hides every product or post that only appears deeper in the series.
- One protocol, one host. HTTP, HTTPS, www, and non-www versions must 301 to a single canonical origin in one hop. Test all four combinations with curl.
- Soft 404s and expired content are handled deliberately. Empty category pages and dead listings should return a real 404/410 or redirect to a genuinely relevant parent, not render a "no results" page with a 200 status.
“Index bloat is the quietest ranking problem there is. Google models your site from everything it indexes, every thin page in the index dilutes its confidence in the pages that matter.”
Rendering: does Google see what users see? (Checks 15–19)
Google renders pages with an evergreen Chromium, but rendering happens in a second wave after crawling, can be deferred, and fails silently when scripts error or time out. If your framework is React, Vue, or anything client-heavy, this section is where audits find their biggest surprises.
- Primary content exists in the server-rendered HTML. View source (not DevTools' rendered DOM) and search for your H1 and opening paragraph. If they're absent, you're depending entirely on Google's rendering pass. Prefer SSR or static generation for anything you want ranked.
- Internal links are real
<a href>elements in the initial HTML. Links injected by JavaScript, or built as click-handler divs, may never be discovered. Crawl once with JavaScript rendering off, any important page that disappears from the crawl is at risk. - Rendered output matches the source. Use URL Inspection's "View crawled page" to compare Google's rendered HTML against what users get. Watch for hydration replacing server content, or consent walls blanking the page for bots.
- Nothing critical loads only on user interaction. Content behind "load more" clicks, infinite scroll without paginated URLs, or hover-triggered tabs is invisible to Googlebot, which doesn't click or scroll.
- Render-critical resources aren't blocked. If robots.txt blocks your JS or CSS bundles, Google renders a broken page and may judge it low quality. Check the "Page resources" list in URL Inspection for blocked files.
Speed and Core Web Vitals (Checks 20–24)
Speed matters twice: as a modest ranking signal via Core Web Vitals, and as a large conversion and crawl-efficiency factor. The key discipline is measuring field data (what real Chrome users experience, via CrUX) rather than lab scores, Google ranks on the former.
- LCP under 2.5s at the 75th percentile. The Largest Contentful Paint element is usually a hero image or headline. Preload the hero image, serve it in AVIF/WebP at the right dimensions, and never lazy-load it.
- INP under 200ms. Interaction to Next Paint punishes heavy JavaScript. Break up long main-thread tasks, defer third-party scripts, and ship less JS, tag managers and chat widgets are the usual suspects.
- CLS under 0.1. Reserve space for images (width/height attributes), ads, and embeds; never inject banners above existing content after load.
- TTFB under ~600ms globally. Slow HTML responses cap everything downstream and throttle crawl rate. Cache at the edge or CDN; a dynamic origin response for content that changes weekly is wasted latency.
- Total page weight and request count are sane. As a working budget: under ~1.5MB transferred and under ~80 requests for content pages. Every megabyte is a tax on mobile users and on your crawl budget.
Diagnose with PageSpeed Insights (which shows both field and lab data) and fix in the order LCP → INP → CLS, since LCP failures are the most common and most visible. For the full optimization playbook, see our Core Web Vitals guide.
Schema and site hygiene (Checks 25–30)
The final six checks make your pages easier for machines to interpret and keep the site's signals clean. Structured data in particular has outgrown "nice to have", it's how you hand Google and LLM-based engines your entity model directly, which is central to how modern search parses entities.
- Sitewide Organization schema plus page-type schema on every template. At minimum:
OrganizationwithsameAs,Articlewith author on posts,Productwith offers on product pages,FAQPagewhere you have real FAQs. Validate with the Rich Results Test; details in our schema markup guide. - Schema matches visible content. Markup describing content that isn't on the page violates Google's guidelines and risks a manual action. Schema is a translation layer, not a place to add claims.
- Titles and H1s are unique and descriptive per page. Crawl for duplicates, templated titles like "Products | Brand" across 400 pages flatten your entity signals and your click-through rate simultaneously.
- Internal 404s and broken links are near zero. Every internal link to a dead page wastes crawl budget and equity. Fix the link at the source rather than papering over it with a redirect.
- Hreflang is reciprocal and self-referencing (international sites only). One-directional hreflang pairs are ignored entirely. If you serve multiple locales, this check alone justifies the audit.
- HTTPS is universal with no mixed content. Every asset loads over HTTPS, HSTS is set, and the certificate covers all subdomains in use.
| Priority | Checks | Typical impact when failing | Re-check cadence |
|---|---|---|---|
| P0, blocking | robots.txt, noindex, canonicals, server errors (1, 7, 10, 11) | Total loss of visibility for affected pages | Monthly + every deploy |
| P1, structural | Crawl depth, orphans, rendering, redirect chains (3, 4, 6, 15–19) | Suppressed rankings, slow indexing of new content | Monthly |
| P2, quality | Index bloat, soft 404s, duplicate titles (8, 9, 14, 27) | Diluted site-level quality and topical signals | Quarterly |
| P3, incremental | Core Web Vitals, page weight, schema coverage (20–26) | Marginal rankings, real UX and citation gains | Quarterly |
How to run this checklist without drowning
Thirty checks is still a lot if you treat them as equals. Don't. Run them as a funnel:
- Day 1, kill switches. Check robots.txt, sitewide noindex, canonical sanity, and server errors. These four cause total failure and take an hour to verify.
- Day 2, full crawl. Run Screaming Frog (once with JS rendering, once without), export depth, orphans, chains, duplicates, and status codes.
- Day 3, index reconciliation. Compare crawl output, sitemap, and Search Console's Page Indexing report. Every mismatch between the three lists is a finding.
- Day 4, templates, not pages. Audit rendering, schema, and Core Web Vitals on one URL per template. A fix at the template level repairs thousands of pages at once.
- Day 5, ship the top ten. Write findings as tickets with evidence and expected impact, sorted by the priority table above. Ten shipped fixes beat two hundred documented ones.
Technical SEO decays continuously, every release can introduce a stray noindex, a new redirect chain, or a heavier JS bundle. Treat this checklist as recurring maintenance, and fold it into a broader SEO audit process that also covers content and links. A technically clean site doesn't rank by itself; it just guarantees that your content gets a fair hearing.
Key takeaways
- Technical SEO has one job: make sure every page you want ranked can be crawled, rendered, indexed, and understood. Everything else is secondary.
- Crawlability and indexation issues cause silent, total failure, a page Google can't index earns zero traffic no matter how good the content is. Check these first.
- Rendering is the modern blind spot: if critical content or links only exist after JavaScript executes, you're gambling on Google's second rendering pass.
- Core Web Vitals are a real but small ranking factor, fix them for conversion and crawl efficiency, not because you expect a rankings jump.
- Run the full checklist quarterly and the crawl/index subset monthly. Technical SEO decays as teams ship, it's maintenance, not a one-time project.
Frequently asked questions
How often should I run a technical SEO audit?
Run the P0 checks (robots.txt, noindex, canonicals, server errors) monthly and after every major deploy, and the full 30-check list quarterly. Sites with frequent releases or active migrations should automate the P0 checks in CI so regressions are caught before Google sees them.
What are the most common technical SEO problems?
In our audits the same five dominate: index bloat from parameters and thin pages, important content rendered only client-side, redirect chains left over from migrations, misconfigured canonicals, and orphan pages with no internal links. None are exotic, they're all maintenance failures that compound quietly.
Do Core Web Vitals really affect rankings?
Yes, but modestly, Google has confirmed page experience is a lightweight signal, closer to a tiebreaker than a lever. Fix Core Web Vitals primarily for conversion rate, crawl efficiency, and user retention; treat any ranking lift as a bonus rather than the business case.
What tools do I need to run this checklist?
Three cover everything: Google Search Console (indexation, crawl stats, URL inspection), a desktop crawler like Screaming Frog with JavaScript rendering (crawlability, depth, duplicates), and PageSpeed Insights for field and lab performance data. Everything on this list can be verified with those three plus curl.
Can technical SEO alone improve my rankings?
Only if technical problems were suppressing pages that already deserved to rank, in which case fixes can produce fast, dramatic recoveries. On a technically sound site, further technical work yields diminishing returns; the growth lever shifts to content depth, topical coverage, and internal linking.
Should I fix every issue my audit tool reports?
No. Audit tools report deviations from best practice, not ranking problems, and most flagged items have zero measurable impact. Map every reported issue to the crawl → render → index → rank pipeline; if you can't articulate which stage it harms and for which pages, deprioritize it.
Founder & Semantic SEO Lead · Permanent SEO
Writes about entity SEO, topical authority, and how modern and AI-powered search actually rank content.
View full profile