0%

Initialising Guide...

How to Run and Interpret a Technical SEO Audit

A technical SEO audit examines how search engine bots discover, fetch, render, and index your website pages. Learn how to configure disciplined crawls, interpret HTTP evidence, diagnose canonical and duplicate issues, and prioritize high-leverage fixes.

Comprehensive Field Guide
16 min read
Verified against Google Search Central

1. What a Crawler Can and Cannot Tell You

A website crawler (such as GroCrawl) simulates automated web bots by requesting pages, parsing their HTML, extracting discovered links, and evaluating on-page markup. It provides an objective snapshot of how your site responds to automated inspection.

What a Crawler Directly Verifies

  • HTTP status codes: 200 OK, 301/302 redirects, 404 broken links, and 500 server crashes.
  • Indexability directives: noindex, nofollow, canonical tags, and robots.txt blocks.
  • On-page metadata: Page titles, meta descriptions, Open Graph cards, H1–H6 structures, and images.
  • Link architecture: Internal link depth, inlinks, outlinks, anchor texts, and external endpoints.

What a Crawler Cannot Know Alone

  • Actual Google index status: An HTTP 200 code does not guarantee a page is indexed or will rank.
  • Real-world search impressions or clicks: Only Google Search Console performance data provides queries and impressions.
  • Off-site orphan pages: If no internal links point to a page, a crawler starting at the homepage cannot find it without an XML sitemap or log file.
  • Algorithm penalties: Search engines do not report algorithmic demotions in HTTP response headers.

A crawler reveals technical friction and architecture issues. It does not replace Search Console, log analysis, or qualitative content assessment. See Google Search Central crawling and indexing documentation for official background.

2. Defining Audit Scope & Configuring a Small First Crawl

A common mistake is launching an unbounded crawl against an enterprise domain on your first attempt. Large ecommerce sites or faceted catalogs can produce millions of parameter URLs, exhausting client memory or overloading web servers.

Always perform a staged audit workflow:

  1. Stage 1 — Smoke Crawl (25 to 50 URLs): Set Max URLs to 50 and Depth to 2. Confirm your target hostname resolves, verify canonical domains (HTTP vs HTTPS, www vs non-www), inspect basic response times, and verify robots.txt compliance.
  2. Stage 2 — Sectional or Directory Crawl: Target key template archetypes (e.g., /blog/, /products/, /services/). Verify template-wide metadata, canonical formats, and schema markup.
  3. Stage 3 — Full Frontier Crawl: Increase limits to 500+ URLs to inspect link equity, orphan detection, and sitewide status code integrity.

Seed URL Protocol Consistency

Always input your exact canonical production protocol and host as the seed URL (e.g. https://example.com/, not http://example.com). If the seed URL immediately issues a 301 redirect, verify that internal links throughout the site do not still reference the old non-canonical protocol.

3. Crawl Depth vs. URL Path Depth

One of the most frequent misunderstandings in technical SEO is confusing crawl click depth with URL path slug depth.

Concept Definition Example SEO Significance
Crawl Click Depth (Level) The minimum number of internal links a bot must follow from the seed URL (usually homepage = Depth 0) to reach the target page. Homepage (0) → Header Nav (1) → Category (2) → Product (3) Pages closer to the homepage receive more internal link equity and are crawled and re-indexed more frequently by search engines.
URL Path Slug Depth The number of slashes (/) in the URL structure. /store/clothing/mens/jackets/winter-parka/ A page with 5 slashes can still have a Crawl Depth of 1 if it is linked directly from the global navigation or homepage. Google assesses internal link architecture, not slug slash counts.

In GroCrawl, the Max Depth setting limits how many link hops the crawler will follow from the starting address. Setting Max Depth to 3 means the crawler explores pages at levels 0, 1, 2, and 3, but will not enqueue links discovered on level-3 pages.

4. Page Limits, Concurrency, Delays, and Partial Results

Responsible crawling requires balancing audit speed against origin server health. Automated crawlers should never degrade website performance for real human visitors.

  • Max URLs (Frontier Cap): Restricts the total number of unique addresses the spider will fetch. Once reached, crawling stops, preserving all discovered and crawled data for analysis.
  • Concurrent Worker Threads: Governs how many HTTP requests run simultaneously. For small production servers or shared hosting, 2 to 5 concurrent workers prevent CPU and database connection pool exhaustion.
  • Crawl Delay (Politeness): Introduces an intentional pause between consecutive requests. If a server responds with HTTP 429 (Too Many Requests) or 503 (Service Unavailable), increase the delay immediately to 1.5–3.0 seconds.

When an audit halts because it hit the Max URLs limit, the resulting dataset is a partial crawl. A partial crawl is valid for template audits and high-priority fixes, but you cannot compute absolute sitewide link metrics (like total orphan pages) from an incomplete crawl.

5. Robots.txt Compliance & JavaScript Rendering

Search engines follow strict protocol specifications before requesting web documents.

Robots.txt Directive Compliance

The robots.txt file instructs web robots which URL paths they are allowed or forbidden to crawl. GroCrawl parses your site's /robots.txt and respects Disallow rules by default.

Crucial Distinction: Disallow vs. Noindex

Blocking a page in robots.txt prevents bots from crawling it, but it does not prevent indexing if other websites link to that URL. Furthermore, if a page contains a <meta name="robots" content="noindex"> tag but is blocked in robots.txt, the crawler can never download the page to see the noindex tag! To guarantee de-indexing, allow the URL in robots.txt and let bots read the noindex directive.

Headless JavaScript Rendering: When and Why

Modern web applications built with frameworks such as React, Next.js, Vue, or Angular often render content and links dynamically via client-side JavaScript. Standard fast HTTP crawlers only receive the raw initial HTML stream.

When to enable JavaScript rendering:

  • Client-Side Rendered (CSR) Single-Page Applications: When view-source reveals an empty <div id="root"></div> without navigation links or headings.
  • Dynamically Injected Links: When product pagination or category menus only populate after script execution.
  • Interactive Elements: Accordions, tabs, or pricing toggles containing critical text content.

Trade-offs and Limitations: Headless rendering (using automated Chromium instances) consumes significantly more CPU and RAM per URL and crawls at roughly 10% the speed of direct HTTP streaming. Always crawl first with standard HTTP mode; only enable JS rendering if critical content or links are missing from initial HTML responses.

6. HTTP Responses, Redirects, Chains, Loops, and Broken Links

Status codes communicate the outcome of an HTTP request. Clean technical architecture ensures that all internal links point directly to canonical, 200 OK destinations without intermediate hops.

Status Class Key Codes Audit Implication
2xx Success 200 OK Page was successfully retrieved. All internal links should ideally resolve directly to 200 URLs.
3xx Redirect 301 (Permanent), 302/307 (Temporary), 308 Redirects are normal for site migrations, but internal links should point directly to the final target to avoid wasting crawl budget and adding network latency.
4xx Client Error 404 (Not Found), 410 (Gone), 403 (Forbidden) Broken links erode user experience and waste crawl allocation. Internal 404 links must be updated or removed.
5xx Server Error 500 (Internal Error), 502 (Bad Gateway), 503 (Unavailable) Indicates origin infrastructure failures. High 5xx rates can cause search engines to reduce crawl frequency.

Redirect Chains and Loops

A redirect chain occurs when Page A redirects to Page B, which redirects to Page C. Each hop introduces network latency, and search engines may abandon crawling after 4–5 consecutive hops. A redirect loop (Page A → Page B → Page A) causes bot failure and browser crash errors.

The Fix: Update internal links and redirects so Page A points directly to Page C in a single 301 hop.

7. Meta Robots, X-Robots-Tag, and Canonicals

Search engines rely on page-level directives to decide whether to index a document and how to handle duplicates.

Robots Meta Tags vs. X-Robots-Tag Headers

  • HTML Meta Robots: Placed in the HTML <head> (e.g. <meta name="robots" content="noindex, follow">). Applicable only to HTML documents.
  • HTTP X-Robots-Tag: Emitted in the HTTP response header (e.g. X-Robots-Tag: noindex). Essential for non-HTML assets such as PDFs, downloadable spreadsheets, and API responses.

Canonical Tags (Rel=Canonical)

The canonical tag specifies the preferred version of a webpage when multiple URLs contain identical or substantially similar content (e.g., tracking URLs, print versions, category filters). Reference: Google Canonicalization Guidelines.

Common canonical issues flagged in audits:

  • Self-Referencing Canonicals (Best Practice): Clean canonical pages should point to themselves using absolute HTTPS URLs.
  • Canonical Mismatch: Page A declares Page B as canonical, but internal links consistently link to Page A.
  • Canonicalizing to a 404 or Redirect: The canonical target must always return 200 OK. Canonicalizing to a 301 or 404 confuses search engines.
  • Canonical in Body: Canonical links outside the <head> tag are ignored by Google.

8. Titles, Descriptions, Headings & Duplicate Content

On-page textual metadata helps search engines determine page relevance, topical hierarchy, and search result snippets.

Title Tags & Character Limits: The Myth

Many legacy SEO checklists enforce strict "60 characters" as a rule. In reality, Google measures title display by pixel width (typically around 600px on desktop), not character counts. Furthermore, Google frequently rewrites titles in SERPs if they are repetitive, generic, or do not accurately match user intent. Write descriptive, human-centered titles with primary brand and product context.

Duplicate Content: Penalties vs. Dilution

A widespread misconception is that duplicate content triggers an active "Google penalty." Google does not penalize sites for duplicate content unless it is deemed manipulative or malicious. Instead, duplicate content causes ranking dilution: search engines choose one version to display and ignore the rest, scattering backlinks, crawl frequency, and signals across multiple URLs.

In GroCrawl, duplicate detection evaluates exact title matches as well as weighted content similarity (comparing titles, descriptions, H1 headings, and word count ratios). An audit threshold of 85% flags pages that risk competing against one another.

Search bots discover pages primarily by following hyperlinks (<a href="...">) from already-known pages. Internal link architecture distributes authority and guides crawl priority.

What is an Orphan Page?

An orphan page is a live webpage on your domain that has zero internal links pointing to it from any other page on the site. Humans cannot navigate to it, and search crawlers traversing the site link graph will never find it.

Can a Crawler Alone Find All Orphan Pages?

No. By definition, if a crawler only follows links on your site, it cannot discover a page that has no links pointing to it! To detect true orphan pages, you must cross-reference your crawl results against external data sources:

  • XML Sitemaps: URLs declared in your sitemap that were not discovered during the crawl.
  • Google Search Console Coverage: Indexed URLs receiving search impressions that have zero inlinks.
  • Web Server Access Logs: URLs receiving organic bot requests that exist outside the current internal link tree.

10. PageSpeed: Lighthouse Lab Results vs. CrUX Field Data

Performance auditing requires distinguishing between synthetic lab simulations and real-world user observations.

Dimension Lighthouse Lab Data Chrome UX Report (CrUX) Field Data
Environment Simulated, controlled test (fixed CPU throttling and 4G network emulation). Aggregated observations from millions of opted-in real Chrome users over a rolling 28-day window.
Metrics Measured FCP, LCP, TBT (Total Blocking Time), CLS, Speed Index LCP, INP (Interaction to Next Paint), CLS, FCP, TTFB
Google Ranking Role Lab scores do not directly affect Google rankings; they serve as developer debugging diagnostics. Real-world Core Web Vitals (CrUX) at the 75th percentile are used in Google's page experience signals.
When Missing? Always available when tested. Low-traffic URLs lack sufficient aggregated Chrome visits to meet privacy thresholds (missing data is not a zero score).

In GroCrawl, the PageSpeed integration queries Google's PageSpeed Insights API to display both real-world CrUX field percentiles (when available) and detailed Lighthouse lab diagnostics for audited URLs.

11. Content & Trust Checks as Transparent Heuristics

In technical audits, terms like "E-E-A-T" (Experience, Expertise, Authoritativeness, Trustworthiness) refer to concepts from Google's Search Quality Rater Guidelines. Google raters use these human guidelines to evaluate search algorithm quality; there is no single "Google E-E-A-T algorithm score" inside search ranking algorithms.

GroCrawl's Content & Trust workspace evaluates transparent, observable editorial and structural signals:

  • Author Byline & Attribution: Checks for author metadata, Person schema, or byline classes.
  • Structured Data (JSON-LD): Detects schema markup helping search engines parse article, product, or organizational entities.
  • External Citations: Checks for authoritative outbound references and documentation citations.
  • Transport Security (HTTPS): Confirms encrypted transport integrity.
  • Content Depth: Evaluates word count baseline thresholds (>300 and >600 words) to flag thin utility stubs.

Treat these checks as editorial hygiene and user trust indicators, never as a guaranteed ranking formula.

12. Prioritizing Findings, Exporting Actionable Work, and Rechecking Fixes

Audits often return hundreds of alerts. Effective technical SEO requires ruthless prioritization based on real business impact.

Understanding GroCrawl's SEO Health Score

GroCrawl computes an internal diagnostic index using the following verified formula:

// GroCrawl Health Score Calculation
penalty = (Critical Errors × 8) + (Warnings × 2)
Health Score = Math.max(10, Math.min(100, Math.round(100 - penalty)))

Critical errors (such as 4xx broken links, 5xx server crashes, or indexable pages canonicalizing to 404s) incur an 8-point penalty, while minor warnings incur a 2-point penalty. The score serves as a benchmark to track remediation progress across crawl sessions.

A 3-Tier Remediation Matrix

  1. Tier 1 — High Severity (Direct Indexing Blockers):
    • Accidental noindex tags on revenue-generating product or service pages.
    • 5xx server errors on core landing pages.
    • Broken redirect loops or sitewide 404 chains.
    • Unintentional Disallow directives in robots.txt blocking entire sections.
  2. Tier 2 — Medium Severity (Signal Dilution & Waste):
    • Internal links pointing to 301 redirects instead of canonical destinations.
    • Conflicting canonical tags (e.g. self-canonical on HTTP while site runs on HTTPS).
    • Faceted navigation creating duplicate indexable URLs.
    • Missing H1 tags or duplicate titles on primary category pages.
  3. Tier 3 — Low Severity (Polish & Minor Hygiene):
    • Image alt text missing on decorative elements.
    • Meta descriptions exceeding desktop pixel width.
    • Missing optional schema attributes.

13. Fictional Worked Example: Step-by-Step Remediation

To understand how technical audit findings translate into engineering tickets, review this worked case study for the fictional brand Apex Footwear.

Case Study: Faceted Filter Crawl Explosion

1. Observed Finding

A crawl capped at 250 URLs reached its limit at Depth 2 without discovering key blog posts or contact pages. The duplicate content report flagged 84 URLs with identical titles and H1 tags: Men's Trail Running Shoes.

2. Technical Evidence

Reviewing the Master URL Explorer revealed that faceted sidebar filters (color, size, sort order) generated unique parameter URLs:

https://apexfootwear.example/shoes/trail?color=black&size=10
https://apexfootwear.example/shoes/trail?sort=price_asc&color=black
https://apexfootwear.example/shoes/trail?size=10&color=black

Inspecting HTML headers showed that none of these parameter URLs contained a canonical tag, and the multi-select sidebar links lacked rel="nofollow".

3. Interpretation

The spider was trapped in an infinite faceted navigation matrix. Because parameter combinations were internally linked without canonical tags, the bot consumed the entire crawl budget traversing duplicate permutations, missing major site sections.

4. Proposed Action

  • Add a self-referencing canonical tag on the base category: https://apexfootwear.example/shoes/trail.
  • Ensure all filtered parameter URLs declare the base category URL as their canonical target.
  • Add a Disallow: /*?*sort= rule in robots.txt for pure sorting parameters that add no search value.

5. Verification

Following deployment, a 250-URL re-crawl reached Depth 4, successfully discovering blog articles and company pages. Duplicate title issues dropped from 84 to 0, and the SEO Health Score improved from 64% to 96%.

Ready to inspect your website?

Run a free technical audit using GroCrawl directly in your browser.

Open GroCrawl Tool