Technical SEO Audit: The 2026 Checklist for Crawl, Render, and AI Access
A five-layer technical SEO audit checklist for 2026, covering crawl access, JavaScript rendering, indexing, AI crawler access, and Core Web Vitals, plus how to run the whole pass in 90 minutes.

Most technical SEO audits still check the same 40 things they checked in 2019. Crawl the site, look for broken links, flag the missing meta descriptions, export a spreadsheet. That audit is not wrong, it is just aimed at a version of search that no longer exists on its own.
The web a crawler sees in 2026 is majority machine. Cloudflare reported in June 2026 that bots now generate about 57.5% of HTML traffic, with humans at 42.5%, and that AI crawlers plus AI search bots make up roughly a quarter of verified bot activity. Your pages are being read more often by software that summarizes them than by software that ranks them. An audit that only measures rankability is measuring half the surface.
This is a technical audit checklist built for that reality. It is organized by pipeline stage rather than by tool output, because that is the order in which things actually break: crawl, render, index, then AI access, with Core Web Vitals cutting across all of it. If you want the broader snapshot version that also covers on-page and competitive gap, use the 40-point SEO audit checklist. This piece goes deeper on the technical half.
Contents
- What changed about technical audits in 2026
- Layer 1: Crawl access
- Layer 2: Rendering
- Layer 3: Indexing and index bloat
- Layer 4: AI crawler access
- Layer 5: Core Web Vitals
- Running the audit in 90 minutes
- Turning findings into something a client will sign
- Frequently asked questions
What changed about technical audits in 2026
Three things shifted, and each one added work to the audit rather than replacing existing work.
The first is that answer engines became a separate distribution channel with separate access rules. Being crawlable by Googlebot no longer implies being readable by the systems generating AI answers, because those systems run their own bots with their own user agents. We covered the strategic side of this in the GEO versus SEO breakdown, but the technical consequence is simple: your robots.txt is now a distribution policy, not a housekeeping file.
The second is that the economics of being crawled got worse. Cloudflare Radar's crawl-to-refer ratios, measured over a 28-day window ending in July 2026, showed Mistral crawling roughly 3,389 pages for every referral it sent back, Anthropic's ClaudeBot around 2,237 to 1, and OpenAI's GPTBot around 217 to 1. Google sits near 5 to 1. Those numbers have been improving through 2026, but the gap is still wide enough that "should we allow this bot" is now a real commercial question rather than a default yes.
The third change is that thin technical debt compounds faster. When a site is competing for a handful of blue links, a slow render queue costs you some rankings. When the same content is also feeding AI Overviews and chat answers, content that never rendered is content that never entered the citation pool at all. The penalty for being technically sloppy now applies in two places.
Layer 1: Crawl access
Everything downstream is wasted effort if this layer is broken, so audit it first and audit it properly rather than glancing at robots.txt and moving on.
Check robots.txt line by line, not as a whole. The failure mode is almost never a catastrophic Disallow: /. It is a rule written for a staging environment that shipped to production, or a Disallow: /api/ that also blocks the JSON endpoints your front end needs to render content. Fetch the file, read every line, and ask what each one was for.
Reconcile the sitemap against reality. An XML sitemap should contain canonical, indexable, 200-status URLs and nothing else. Sitemaps that include redirects, noindexed pages, or 404s are common and they degrade the trust Google places in the file. Pull the sitemap, run every URL for status and canonical, and compare the count against Search Console's submitted versus indexed numbers. A wide gap is the single most informative number in the whole audit.
Trace redirect chains to their end. One analysis of roughly 11 million URLs found that about half of redirect chains terminated in an error rather than a 200. Chains are easy to create during migrations and almost never get cleaned up. Every internal link should point at the final destination, not at a hop.
Look at Crawl Stats, not just crawl errors. Search Console's Crawl Stats report shows request volume, response time, and file type breakdown over 90 days. A rising average response time with flat request volume means your server is becoming the bottleneck. A collapse in requests after a deploy usually means something in the crawl layer broke and nobody noticed.
Find the orphans. Pages with no internal links pointing at them are functionally invisible regardless of what your sitemap says. Cross-reference your crawl against your sitemap: anything in the sitemap that the crawler never reached by following links is an orphan. This is where a proper internal link structure earns its keep, and it is usually the cheapest fix in the entire audit.
Layer 2: Rendering
Google processes JavaScript in two waves. The first wave downloads and indexes the raw HTML. The second queues the page for rendering in a headless Chromium instance, executes the JavaScript, and updates the index with whatever appears. Those two waves are separated by a queue.
Google has narrowed that gap considerably, and for most sites rendering now happens in minutes. But the queue is prioritized, and low-priority sites during high-demand periods can wait much longer. Search Console data reported in early 2026 suggested a large majority of single page applications carry crawl budget waste from pages queued for rendering that never got rendered.
The test that matters: disable JavaScript in your browser and load your most important pages. Whatever remains is what wave one indexes. If the page is blank, your indexing is entirely dependent on a queue you have no control over.
Then check what the rendered output actually contains. The URL Inspection tool in Search Console shows you the rendered HTML Google produced. Compare it against what you see in a browser. Content that appears for you but not for Google usually points at a blocked resource, a script that failed, or a timeout.
Also confirm your key content does not sit behind an interaction. Text revealed only by a click, an accordion that loads on demand, or infinite scroll without paginated URLs all put content out of reach. This is a recurring finding in programmatic SEO builds, where templates are optimized for perceived speed and quietly hide the substance.
Layer 3: Indexing and index bloat
The Pages report in Search Console is the most under-read screen in the product. It tells you, by reason, why Google chose not to index things. Work through the categories in this order.
Crawled, currently not indexed. This is a quality signal, not a technical one. Google reached the page, understood it, and declined. A large bucket here means thin or duplicative content, which is a content audit problem rather than a technical one. If that describes your situation, the content audit process is the right next step.
Discovered, currently not indexed. Google knows the URL exists but has not spent crawl budget fetching it. On large sites this usually means crawl priority is being consumed elsewhere, often by faceted navigation or parameter URLs.
Duplicate, Google chose a different canonical. Your canonical suggestion was overruled. Look for near-identical pages, parameter variants, and the trailing slash or protocol inconsistencies that create them.
Soft 404s. Pages returning 200 with nothing useful on them. Empty category pages, out-of-stock products, and search result pages are the usual culprits.
Then check index bloat from the other direction. Faceted navigation is the classic generator: filter combinations produce a combinatorial explosion of URLs that are all crawlable, all near-duplicate, and all consuming budget. The fix is rarely noindex alone, because a noindexed page still gets crawled. Combine robots.txt disallow rules for parameter patterns you never want fetched with canonical tags on the ones you do.
Finally, validate your structured data. Schema is not decorative anymore, it is how machines resolve what your entities are, which feeds directly into entity-based ranking. Confirm Organization sitewide, BreadcrumbList on non-root pages, and Article or BlogPosting on editorial pages, each with author and dateModified populated. Our schema markup generator will produce valid blocks if you are patching gaps, and the structured data guide covers which types actually earn enhancements.

The five layers of a 2026 technical SEO audit, in the order they break.
Layer 4: AI crawler access
This is the layer most audits skip, and it is the one with the widest gap between assumed state and actual state. A cohort audit published by CapstonAI in Q1 2026 found roughly 41% of B2B sites still blocking at least one major AI bot, with each blocked bot estimated to cost a meaningful share of potential citations on that engine.
Almost none of those blocks were deliberate current policy. They were 2024-era decisions about training data that were never revisited, and they now also block the search bots that send traffic back.
Audit your robots.txt against the current user agent landscape. Decide separately for training and for search:
| Bot | Operator | Purpose | Typical decision |
|---|---|---|---|
| GPTBot | OpenAI | Training | Business call |
| OAI-SearchBot | OpenAI | Search index | Allow |
| ChatGPT-User | OpenAI | Live user fetch | Allow |
| ClaudeBot | Anthropic | Training | Business call |
| Claude-SearchBot | Anthropic | Search index | Allow |
| PerplexityBot | Perplexity | Search index | Allow |
| Google-Extended | Gemini training | Business call | |
| CCBot | Common Crawl | Open dataset | Business call |
The general shape most teams land on is to allow anything that can cite and refer, and to treat pure training crawlers as a separate commercial decision. If your content is your product, blocking training crawlers is defensible. If your content is marketing, blocking them mostly costs you presence.
Beyond access, audit for citability. Search-purpose crawling accounted for under 10% of AI crawler requests in May 2026, which means most of the crawl is feeding summarization rather than a link. Content that gets cited in that environment tends to answer the question in the first two sentences under each heading, use headings that read like questions, and carry clean factual statements that a model can lift without ambiguity. The mechanics are covered in the llms.txt breakdown and the answer engine optimization guide.
Measure the outcome rather than assuming it. Track whether your brand actually appears in generated answers for your core queries. Our free LLM mention checker gives you a baseline, and the broader approach is in the AI visibility guide.
Layer 5: Core Web Vitals
The thresholds have not moved. You pass when at least 75% of real page views hit good on each metric: LCP under 2.5 seconds, INP under 200 milliseconds, CLS under 0.1.
INP replaced FID and it is a harder test, because it measures every interaction across the session rather than just the first one. FID could be gamed by getting the main thread free early. INP cannot. The causes are almost always long JavaScript tasks, third-party scripts, and event handlers doing too much synchronous work.
Three audit habits make this layer useful rather than decorative:
Use field data, not lab data, for the verdict. Lighthouse produces a lab score that is fine for debugging and misleading as a measure of pass or fail. The Core Web Vitals report in Search Console shows real user data over 28 days. That is what counts.
Check origin level and page level separately. An origin-level failure points at your sitewide template. A page-level failure points at that specific page. Fixing a template issue one page at a time is the most common wasted quarter in technical SEO.
Treat mobile as the real number. Mobile is where nearly every failure originates and desktop parity tells you nothing useful on its own.
For the fixes themselves, LCP usually responds to preloading the hero image and serving properly sized modern formats. CLS responds to explicit width and height on every image and embed plus reserved space for anything injected late. INP responds to breaking up long tasks, deferring non-critical third-party scripts, and auditing what your tag manager is loading. If you want a quick baseline on a URL, the free SEO and Core Web Vitals audit covers the technical and structured data items in about fifteen seconds.
Running the audit in 90 minutes
A full technical deep-dive on a large site is a multi-day engagement. A useful audit that surfaces what deserves the deep-dive is a 90-minute job. Work in this order, because each stage can invalidate the ones after it.
| Stage | Time | Inputs | Output |
|---|---|---|---|
| Crawl access | 20 min | robots.txt, XML sitemap, GSC Crawl Stats | Blocked paths, sitemap hygiene, orphan list |
| Rendering | 15 min | JS-disabled load, URL Inspection rendered HTML | What wave one actually sees |
| Indexing | 20 min | GSC Pages report by reason | Ranked list of exclusion causes |
| AI access | 15 min | robots.txt vs bot list, mention baseline | Accidental blocks, citation baseline |
| Core Web Vitals | 20 min | GSC CWV report, origin and page level | Template failures vs page failures |
Then triage into three buckets rather than handing over a flat list. Bleeding now covers anything blocking crawl or render on revenue pages, plus accidental AI bot blocks, and it gets fixed this week. Compounding covers schema gaps, internal linking, and index bloat, and it gets a 30-day sprint. Structural covers rendering architecture and template-level Core Web Vitals, and it gets scoped as engineering work with a real estimate.
Re-run the crawl and render stages after every significant deploy. Run the full pass quarterly. The reason is unglamorous: technical regressions are introduced by shipping, and shipping happens more often than auditing.
Turning findings into something a client will sign
Here is the part that decides whether the audit was worth doing. A list of 60 findings, sorted by a tool's severity score, does not change behavior. It gets skimmed, filed, and referenced once during the next renewal conversation.
What changes behavior is a small number of claims, each traced to the evidence that produced it, each with a named next action. "INP fails on mobile for 43% of sessions on the template used by your top 12 landing pages, measured in Search Console field data over the last 28 days" is a claim someone can act on and defend internally. "Improve page speed" is not.
This is the gap MarqOps was built around. The platform sits above your existing data layer as an evidence and narrative system: material claims are matched against source data, flagged as verified, needs context, or unsupported, and held for human approval before they reach a client. An audit finding that says a campaign caused a result, when the data only shows correlation, gets blocked rather than shipped. SEO Ops handles the research through publish pipeline, and Analytics Ops lets you ask connected GSC and GA4 data a plain-language question with the source view attached to the answer.
For agencies running this checklist across a portfolio, the constraint is rarely knowing what to check. It is producing a defensible report per client per month without three days of manual assembly. That is the same problem the marketing reporting software comparison walks through, and it is why SEO automation pays off at the reporting layer before it pays off anywhere else.
Run a free technical audit on any URL
Frequently asked questions
How often should I run a technical SEO audit?
Run the full five-layer pass quarterly, and re-run the crawl and render stages after any significant deploy or migration. Sites publishing daily or running frequent template changes benefit from a monthly light pass. The failure mode is not auditing too rarely in the abstract, it is auditing on a calendar that ignores your release cadence.
What is the difference between a technical SEO audit and a content audit?
A technical audit asks whether machines can reach, render, index, and read your pages. A content audit asks whether the pages deserve to rank once they can. They overlap at one point: a large "crawled, currently not indexed" bucket in Search Console is a technical symptom with a content cause, and no amount of technical work will clear it.
Should I block AI crawlers in robots.txt?
Separate the two cases. Search bots that cite and link back, such as OAI-SearchBot, Claude-SearchBot, ChatGPT-User, and PerplexityBot, should generally be allowed because blocking them removes you from answers without saving meaningful bandwidth. Pure training crawlers are a commercial decision that depends on whether your content is the product or the marketing. What you should not do is leave a blanket 2024 block in place without revisiting it.
Do I need paid tools to run this audit?
No. Every stage in the 90-minute version runs on Google Search Console, browser DevTools, and a free crawler. Paid crawlers become worth it above roughly 10,000 URLs, where manual reconciliation of sitemaps against crawl results stops being practical. Competitive gap analysis is the other place paid tooling genuinely saves time.
Why does my site pass Lighthouse but fail Core Web Vitals in Search Console?
Lighthouse runs a simulated test on a single load from one machine. Search Console reports field data from real users at the 75th percentile over 28 days, across the range of devices and networks your actual audience uses. When they disagree, the field data is correct. This gap is widest on INP, because a synthetic test rarely reproduces the interaction patterns that cause real responsiveness failures.
Technical SEO stopped being a checklist you complete and became a surface you monitor. The layers above are worth running quarterly, but the deeper shift is that findings now need to survive contact with a client or an executive, which means they need evidence attached. Start with the crawl layer, fix what is bleeding, and build the reporting habit around it.