Technical SEO Fundamentals: A Practical Guide to Crawlability, Indexation, Site Architecture, and Core Web Vitals

53 min read

A comprehensive guide to URL discovery, crawlability, rendering, content interpretation, indexing, search result presentation, site architecture and the technical foundations of SEO, built around diagnosing warnings instead of fixing all of them.

What is technical SEO?

Technical SEO is the work of making sure a search engine can find your pages, fetch them, process their content and links, understand what they are, choose whether to include them in its index, and show them appropriately. It sits underneath content and links. A brilliant page that cannot be fetched or processed has no chance to be shown, and technical SEO exists to remove that kind of avoidable barrier.

The idea this guide is built on

Do not treat every technical SEO warning as a problem. Identify the underlying condition, collect evidence, work out its real impact, and recommend a fix only when the evidence justifies it.

That matters because crawler software produces long lists of warnings, and many describe harmless or intentional behaviour. Fixing all of them costs developer time and can introduce new faults. Fixing the few that genuinely affect discovery, access, rendering, indexing or presentation is where the value is. Technical SEO also does not guarantee rankings: it makes eligibility possible, and relevance, quality and competition decide the rest.

The six principles of technical SEO

This guide organises technical SEO into six principles. They describe distinct jobs in search processing and give you a diagnostic order: when a page is missing from results, ask at which stage it stopped. This is a practical model, not a claim that every search engine handles every URL in one strict line. Stages overlap, repeat and get skipped, and some decisions are not publicly observable.

1Discoverability

Does the search engine know the URL exists?

2Crawlability

Can it request the URL and retrieve what it needs?

3Rendering

Can important content and links be processed?

4Interpretation

Can it understand the page and its relationships?

5Indexing

Can the page be included, and what explains its status?

6Serving

Is the page suitable for a query, and how is it shown?

The six principles, the question each asks and the usual evidence
PrincipleQuestionTypical evidenceCommon tools
DiscoverabilityIs there a path to the URL?Inlinks, sitemap entry, referring pagesCrawler, sitemap file, Search Console
CrawlabilityCan it be requested and fetched?Status code, headers, robots.txt rule, logscurl, URL Inspection, Crawl Stats, logs
RenderingIs the content and are the links in the processed page?Source HTML versus rendered DOMBrowser DevTools, URL Inspection, JS crawler
InterpretationIs the page clear about what it is?Headings, links, canonical, markup, parityRendered HTML, crawler, structured data checks
IndexingWhy is it, or is it not, in the index?Index status, declared and selected canonicalURL Inspection, Page indexing report
ServingDoes it appear, and how?Impressions, clicks, CTR, position, queriesSearch Console performance reports

A useful habit: name the stage before proposing a fix. “The page is not indexed” is a symptom. “The page is crawled and rendered but treated as a duplicate” is a diagnosis at the indexing stage, and it points to different evidence and a different fix than “the page is not linked from anywhere”.

Discoverability: how search engines find URLs

A URL can exist on your server and in your CMS without a search engine knowing about it. Discovery is the step where the URL becomes known, usually by following a link from a page already known, by reading an XML sitemap, or through other signals such as links from other websites. I found no Google statement that lists every discovery signal, so treat any complete list with caution.

The main discovery paths

  • Internal links. Google documents that it finds links in a elements with an href attribute, and that every page should have at least one link from another page.
  • XML sitemaps. A sitemap tells search engines which URLs you consider important and can carry last modified dates. Listing a URL does not ensure it is crawled or indexed, and Google says sites with roughly 500 pages or fewer that are well linked internally may not need one.
  • External links. Links from other sites can surface a URL, but you cannot rely on them for your own pages.
  • Recently changed pages. Updated URLs are found again through recrawling of known pages, links and sitemap last modified dates, with no fixed schedule.

Where discovery fails

An orphan page has no meaningful internal links pointing to it. A common cause is a CMS page that is published but missing from navigation, category listings and contextual links, so only a sitemap or a direct address reveals it. Dynamic routes add another risk: filters, internal search and interaction-generated URLs can create huge numbers of discoverable URLs, many of them unwanted, while the pages you do want stay buried.

How to investigate a page missing from a crawl

Do not start by resubmitting the sitemap. Compare sources first, because each one answers a different question.

Sources to compare when a page is missing from a crawl
SourceQuestion it answersWhat a gap suggests
CMS URL inventoryDoes the page exist and is it published?Draft, scheduled or wrong status, not a discovery issue
XML sitemapIs it listed for search engines?Missing entry, a generation rule excluding it, or a stale sitemap
Crawler inlinks reportDoes any crawled page link to it?No inlinks means an orphan, or a crawler limit hid the linking page
Rendered navigationAre links present after JavaScript runs?Links injected late, or without href
Crawler settingsDid depth, URL or robots settings stop the crawl?A tool limit, not a site problem
Search Console URL InspectionDoes Google know the URL, its sitemaps and referring pages?Unknown URL points to discovery; known URL moves you to later stages

Then separate the causes: missing links (orphan), absent sitemap entry, a blocked route, an inaccessible page, or simply a delay on a new URL. Only the last needs patience. The others need a specific change, and resubmitting a sitemap fixes none of them. Scenario 1 below works through this.

Crawlability: can search engines access the website?

Crawlability is the ability of a crawler to request a URL and retrieve the resources needed to process it. Permission to request a URL is not the same as obtaining useful content: a server can answer with a 200 status and an empty shell, and a page can load while the scripts it depends on fail. Both look “crawlable” in a simple check and still fail the real job.

Different failures, different evidence (user-agent access)

Distinguishing access failures and the evidence for each
SituationWhat it meansEvidence
URL cannot be requestedDNS, network, TLS or server failureCrawl Stats host status, curl errors, server logs
Blocked by robots.txtA rule forbids crawling the pathrobots.txt content and matching rule; URL Inspection
Returns an HTTP error4xx or 5xx responseStatus code and headers; logs
Successful but thin200 response with little useful contentRendered HTML, content comparison, soft 404 status
Loads, but a required resource failsPage works but script or CSS blocked or failingResources list in URL Inspection; DevTools network
Content for users, not for the crawlerServer or script behaviour differs by agentCompare responses by verified crawler; rendered output

Each piece of evidence shows something different. robots.txt shows permission. HTTP responses and headers show what the server returned. Server logs show what crawlers actually requested. Rendered output shows what was processed. No single one covers all four.

A browser and a search crawler are not interchangeable. A request with a Googlebot user agent string from your laptop is not Googlebot, and rules in a firewall or CDN may treat the two differently. Google documents a way to verify its crawlers, using a reverse DNS lookup confirmed by a forward lookup, or matching against its published IP ranges. The URL Inspection live test uses Google’s own fetcher, so it is better evidence than a spoofed user agent.

Robots.txt, status codes and redirects

robots.txt tells compliant crawlers which paths they may request, mainly to manage server load. Google documents that it is not a mechanism for keeping a page out of Google. Check the actual response, because the handling of the file itself is specific:

  • A file applies to one exact host, protocol and port. A subdomain needs its own.
  • 4xx responses other than 429 are treated as if no robots.txt exists. Do not use 401 or 403 to limit crawling.
  • 5xx responses and unreachable files pause crawling for a period, then Google may use the last good cached copy for up to 30 days.
  • Rule paths are case sensitive, * and $ are supported, and the most specific rule wins. When rules conflict, the least restrictive applies.
How Google documents the handling of main status code classes
ResponseGoogle handlingPractical meaning
2xxContent processed, but indexing is not guaranteed204 gives no content; error-looking 200 pages can become soft 404
301 or 308Strong signal that the target should be canonicalUse for permanent moves
302 or 307Weaker signal for the targetUse when the original URL will return
Redirect chainsGoogle follows up to 10 hops by defaultFewer hops are faster for users and crawlers
404 or 410Content ignored, indexed URLs dropped over timeCorrect for truly removed pages
429 or 5xxCrawling slows; persistent errors can lead to removalInvestigate frequency and cause

URL parameters, faceted navigation and crawl budget

Parameters, filters and internal search can create near-endless URL combinations, called crawl traps when a crawler can keep following new variants. They are covered in detail in the robots.txt section below. Crawl budget is the amount of crawling a search engine is willing and able to do on your site. Google says its guide is aimed at sites with roughly a million or more unique pages that change about weekly, sites with 10,000 or more pages changing daily, or sites with many URLs showing “Discovered – currently not indexed”, and calls the figures rough estimates. For a small site, keeping the sitemap current and checking the Page indexing report is usually enough. Crawl budget is rarely the first suspect for a few hundred pages.

A blocked resource is not automatically a defect

A crawler may report blocked scripts, styles or images. That matters only when the blocked resource prevents access to content or functionality needed to process the page, for example the script that renders the product list. A blocked analytics tag or chat widget usually has no SEO effect. The way to tell is to compare the rendered output with and without the resource, as the JavaScript section explains.

How to test a URL

Hypothetical example: check status, redirects and headers for one URL
curl -sIL https://www.example.com/old-page/
# Read each hop: status code, Location header, final URL,
# and any X-Robots-Tag or Link: rel="canonical" header.

curl -s https://www.example.com/robots.txt -o /dev/null -w "%{http_code}\n"
# Confirm the robots.txt status code directly.

Then confirm four things: the URL returns a successful response, crawling is permitted for the relevant crawler, any redirect ends at the intended page, and that final page is the one you expect to be indexed. Finish with a URL Inspection live test to see what Google’s own fetcher gets.

Rendering: what do search engines receive and process?

The server returns source HTML. A browser, and Google’s renderer, may then run JavaScript and build the rendered DOM, the page as it exists after scripts finish. Content and links in the rendered DOM are what a user sees, and Google indexes from the rendered HTML.

Google documents a sequence of crawling, then rendering of 200 responses in a render queue using an evergreen Chromium, then indexing, and notes that rendering may be skipped for non-200 pages and pages blocked by robots.txt. It still recommends server-side or pre-rendering, partly because not all bots run JavaScript. So JavaScript is processed, and it is not categorically a problem.

Common rendering approaches and what to check
ApproachWhat it meansWhat to check
Static renderingHTML built ahead of time and served as filesPages regenerate when content changes
Server-side rendering (SSR)HTML built per request on the serverServer speed; content present in source HTML
Client-side rendering (CSR)Browser builds the page from scripts and dataContent and links exist in the rendered DOM; failures when APIs or scripts fail
Hybrid or hydrationServer HTML enhanced by scriptsLinks remain real links; nothing disappears on hydration

What can go wrong is specific. Content may appear only after a script that fails, links may be built without href, containers may stay empty when an API call errors, lazy-loaded content may never enter view, and a required script or stylesheet may be blocked. The difference between what a user sees and what a search engine processes comes from these gaps. The step-by-step comparison is in the JavaScript SEO section.

Interactions a crawler cannot reliably reproduce

Interactive interfaces are not inherently bad for SEO. The question is whether important URLs, links and content have a reliable path that does not depend on an action a crawler may not perform. Google says it will not load content that requires user interactions such as clicking, swiping or typing.

Interactive patterns, the risk and better implementation
PatternRiskBetter pattern
JavaScript navigation without hrefDestinations not discoverableReal a href links, enhanced by script
Tabs and accordionsFine if content is in the DOM and mobile content matches; risky if loaded only after a clickContent present on load, shown or hidden by CSS
Pagination through buttonsPage 2 and beyond may not be reachableReal links to distinct page URLs
Infinite scrollItems beyond the first load may not be reachablePaginated URLs underneath, with scroll as enhancement
Load more buttonsSame as aboveLink to a paginated URL that the button progressively replaces
Product filtersUnlimited combinations, or none reachableDecide which filter pages deserve URLs and links
Internal searchUnbounded URLs of low valueUsually keep out of crawling and indexing
Content after a clickMay never be seenInclude in initial or rendered content

The general pattern: use real links for destinations, give every item a reachable URL, and treat scripts as an enhancement on top of a working path. Lazy loading is fine when content loads as it enters the viewport, and a crawler or tester should be able to see it without scrolling interactions.

Interpretation: can search engines understand the page?

After content is retrieved and rendered, a search engine still has to work out what the page is, which part is the main content, and how it relates to other pages. Interpretation draws on the rendered HTML, the order and prominence of content, headings, internal links and their anchor text, breadcrumbs, canonical annotations, structured data, language annotations and the consistency between mobile and desktop versions.

  • Main content versus boilerplate. Navigation, footers and widgets repeat across pages. The page’s own content should be easy to tell apart and should not be buried in template code or pushed far down by repeated elements.
  • Semantic HTML. Elements such as main, nav, article, headings, lists and tables communicate purpose to browsers, assistive technology and crawlers. I treat this as good practice for structure and accessibility, and not a ranking factor.
  • Anchor text and links. Descriptive anchor text and real links tell readers and search engines what the destination is about.
  • Breadcrumbs and hierarchy. Breadcrumb links show where a page sits and add a crawlable path to its parents.
  • Structured data. Google says markup must represent content visible to readers and must not mislead.
  • Language and region annotations. Hreflang tells search engines about language versions. See the hreflang section.
  • Duplicate or ambiguous content. Near-identical pages make it harder to know which one should represent the topic. Canonicals and consistent links help, covered below.
  • Mobile and desktop consistency. The mobile version should carry the same primary content, headings, metadata and structured data as desktop.

Headings: a coherent hierarchy, not a counting exercise

Multiple H1 or H2 elements are not an automatic indexing or ranking failure. I found no Google documentation setting a required number of headings. Google’s title link guidance does say the main title should be the most prominent heading, for example the first visible H1, and that several equally prominent headings can leave no clear main title. A coherent outline helps people scan, helps screen reader users navigate, and keeps the page purpose clear. That is a reason to review headings that are used for styling, not a reason to treat “two H1s” as a defect by itself.

How to inspect interpretation

Open the rendered output, from DevTools or the URL Inspection rendered HTML. Check that the main content appears in a sensible order, that headings describe sections in a logical outline, that link destinations are appropriate, that the canonical, language and structured data match the visible page, and that the mobile version carries the same content.

Related readingUnderstanding Semantic SEO: Beyond Keywords

Covers the content side of this stage.

Indexing: why some crawled pages are not indexed

Discovery, crawling and rendering do not guarantee indexing. A page can be fully processed and still not be included, because of a directive, a canonical choice, duplication, an error response, or a judgement about whether it is worth including. The index is also not fully observable: Google shows a status and some reasons, not its complete internal decision.

Directives and controls

What each control does and its limits
ControlWhat it doesLimits
noindex (meta or X-Robots-Tag)Asks search engines not to index the pageMust be crawlable to be seen; Google does not support noindex in robots.txt
X-Robots-Tag headerSame directives in the HTTP responseWorks for non-HTML such as PDFs; check headers, not only HTML
nofollowA hint about not following or passing credit through a link or pageNot a simple indexation switch; do not rely on it to hide URLs
robots.txtControls whether crawlers may request a pathNot a way to keep a page out of Google; a blocked URL can still be indexed from links
CanonicalNames the preferred URL among duplicatesA signal, not a command; Google may choose another
Redirect (301/308)Sends users and crawlers to a replacementStrong signal for the target; use when the old URL is retired
404 or 410Says the page is goneRight for removed pages; wrong for pages that should exist
Sitemap inclusionLists the URL as one you care aboutWeak signal; no guarantee of indexing

The most common confusion is robots.txt versus noindex. Robots.txt controls crawling. noindex controls indexing, and the crawler must be able to fetch the page to see it. If robots.txt blocks a URL, Google never sees the noindex, and the URL can still appear in results through links from elsewhere.

Reading Search Console index states

Common Page indexing report statuses and a measured response
StatusGoogle describes it asSensible first response
Crawled, currently not indexedCrawled but not indexed; may or may not be indexed later; no need to resubmitCompare with indexed pages of the same template; assess uniqueness, purpose and links
Discovered, currently not indexedKnown but not yet crawled, often delayed to avoid overloading the siteCheck server health, internal links, and how many URLs are in this state
Alternate page with proper canonical tagAn alternate pointing correctly to an indexed canonicalUsually no action
Duplicate, Google chose different canonical than userDeclared and selected canonical differInspect both, compare content and signals
Soft 404Looks like not found but returns a success codeReturn a real 404, or give the page real content
Blocked by robots.txtA rule stops crawlingFine if intended; does not fully prevent indexing
Indexed, though blocked by robots.txtIndexed from other pages despite the blockUnblock; add noindex if it should not appear

Look for patterns. Group affected URLs by template, directory, parameter or content type. A status that affects one URL is an individual case. The same status across every page of one template points at the template or at a site-level quality judgement. Treat a status as a clue and not as proof of cause.

Declared versus selected canonical

The declared canonical is what your page and sitemap say. The Google-selected canonical is what Google chose among similar pages. URL Inspection shows both for the indexed version, but the live test cannot predict the selected canonical. When they differ, compare the content and your signals before changing anything.

Initial uptake and query coverage

Search Console impressions and queries show whether indexed content is appearing for relevant searches, which helps judge whether a newly indexed page is getting any visibility. They are not a direct or complete measure of Google’s index state. A page can be indexed with no impressions, and impressions do not list everything. I do not claim access to internal counts, and you should not invent them.

A diagnostic workflow for a page that is not indexed

  1. Inspect the URL. Read the index status, last crawl, declared and selected canonical, and the rendered page.
  2. Check the response. A 200, correct headers and no error on the final URL.
  3. Check directives. robots.txt, meta robots and X-Robots-Tag, and whether robots.txt hides a noindex.
  4. Check canonical signals. Declared canonical, internal links, sitemap entry and redirects, and whether they agree.
  5. Check links and sitemap. Is the URL reachable and listed?
  6. Check rendered content. Is the main content present after rendering?
  7. Check duplication and purpose. Does this page differ meaningfully from similar URLs, and does it deserve its own index entry?
  8. Compare patterns. Compare with indexed URLs of the same template before deciding the cause.

Steps 2 to 5 can confirm a technical restriction. If they come back clean, the remaining explanations are duplication, selection and quality, which need judgement and further investigation, and no tool will name the exact reason.

Serving: why indexed pages do not always appear as expected

Being indexed makes a page eligible. It does not guarantee a ranking for any query, nor that the result looks the way you wrote it. Serving depends on query relevance, search intent, content usefulness, broader ranking considerations and competition. Technical correctness cannot supply any of those.

Titles and snippets

Google generates title links automatically and may use other text, for example when a title is half empty, outdated, inaccurate, repeated across many pages, or mismatched with the page language. It states no length limit for the title element, and displays are truncated to fit the device width. Snippets come primarily from page content, and Google may use the meta description when it describes the page better. There is also no stated limit for meta descriptions. Do not assume a title or description will always show as written, and do not assume every one is rewritten either. A rewrite is information, not an automatic defect.

Investigating low impressions or low CTR

Symptoms, likely causes and where to look
SymptomQuestions to askEvidence
Indexed, few impressionsIs there demand for the query? Does the page match its intent? Is it ranking at all?Performance report queries and positions, keyword data, the live results page, content versus competitors
Impressions, low CTRIs position low? Do SERP features take clicks? Is the title unclear or rewritten?Position by query, device split, SERP check, title and snippet as shown
CTR down, indexation stableDid position, query mix, seasonality or the results layout change?Period comparison by query and device; branded versus non-branded
Page not appearing for its targetIs it a relevance, quality or competition issue rather than a technical one?Query-level data and content review

Only after those questions should you consider a technical change. Low CTR with strong position suggests presentation. Low position suggests relevance, quality, authority or competition. Both are separate from whether the page is crawlable and indexed. Google also says a page that is indexed and eligible to show a snippet can be a supporting link in AI features, with no special markup required.

Related reading

URL architecture and internal linking

Site architecture is how your URLs and links are arranged. Good architecture gives important pages short, clear, crawlable paths and keeps URL variants under control. Google lists simple, descriptive URLs and consistent internal links among its basics, and tells you to link to the canonical URL.

Internal links, link counts and anchors

  • Distribution and depth. Check how many clicks separate important pages from the homepage and how many unique internal links each receives.
  • Link types. Navigation links repeat sitewide. Contextual links sit in content and show relevance. Breadcrumbs reflect hierarchy. Each serves a different purpose.
  • Anchor text. Prefer descriptive, relevant anchors over “click here”. Google recommends descriptive anchor text.
  • Bad destinations. Links to redirects, broken URLs, non-canonical variants or non-200 pages waste crawl requests and send mixed signals.
  • Sitewide versus contextual. Repeating a link in the footer does not replace a relevant contextual link.

There is no ideal number of internal links per page. Judge whether each link is useful, accessible, relevant and proportionate to the page’s purpose. In a crawler, inspect inlinks, outlinks, link destinations, anchor text and crawl depth, then sort by importance: a key service page with two links needs attention, a utility page with two links does not.

URL variants: consistent handling

The concern is not URL length, case or trailing slashes as penalties. Google notes it treats URLs as case sensitive, so differently cased URLs are distinct URLs, and it advises removing parameters that do not change content. I found no Google statement on trailing slashes. The risk is that variants serve the same content at several addresses, creating duplication, extra redirects and conflicting signals. Pick one form per property and enforce it.

Check each variant of one page (hypothetical example, example.com)
VariantExpected resultHow to checkRed flag
http://example.com/page/301 to the canonical https URL in one hopcurl -sILServes 200 over HTTP, or chains through several hops
http://www.example.com/page/301 to the canonical URLcurl -sILEnds on a different host variant
https://example.com/page/ (if canonical)200, self-referencing canonicalStatus, canonical tag, headerRedirects elsewhere or canonicalises elsewhere
https://www.example.com/page/301 to the canonical host if differentcurl -sILBoth hosts return 200
https://example.com/page (no slash)301 to the chosen slash form, or the same URL if the platform normalisesStatus and Location headerTwo live 200 versions
https://example.com/Page/ (different case)301 or 404 if the server treats it as differentStatus codeDuplicate 200 page
https://example.com/page/?utm_source=x200 with canonical to the clean URLCanonical tag, internal linksTracking URLs linked internally or in the sitemap
https://example.com/page/?sort=priceDepends on whether the sort is a useful pageContent, canonical, robotsUnlimited crawlable sort variants

Internal links that pass through redirects

A redirect is often necessary and is not a defect: it protects users, bookmarks and external links after a move. The avoidable problem is your own links pointing at URLs that redirect. Causes include links to old URLs after a migration, HTTP links when HTTPS is canonical, the wrong hostname, inconsistent trailing slashes, and links to a URL that redirects to the canonical. Chains that add hops, and broken or looping destinations, make it worse. Find them in a crawl by listing 3xx internal links with the source page, then update each source link so it points straight at the final canonical destination. Keep the redirect itself in place. See Scenario 5.

Related readingBuilding Topical Authority: A Practical Framework for 2026

A related view of internal linking and topic structure.

Robots.txt, XML sitemaps and URL parameters

These three tools do different jobs and are often confused.

Purpose and limits of each tool
ToolPurposeDoes not do
Robots.txtManage which paths crawlers requestDoes not reliably remove a URL from the index
XML sitemapSuggest URLs you want search engines to know aboutDoes not guarantee crawling or indexing
noindexAsk that a crawlable page not be indexedDoes not work if the crawler cannot fetch the page
CanonicalDeclare the preferred duplicateIs not a command and does not remove duplicates

Blocking crawling and controlling indexing interact. If you want a URL out of the index, let it be crawled and use noindex, or remove it with a proper status code. Blocking first hides the instruction. Test your rules against real URLs, because matching depends on the exact path, case and wildcards.

Hypothetical example: parameter patterns that may need a decision
User-agent: *
# Example patterns only. Test every rule against real URLs.
Disallow: /search/
Disallow: /*?sort=
Disallow: /*?sessionid=
Allow: /products/

Parameter patterns that often create duplicate or low-value URLs include sort orders, tracking parameters, session identifiers, internal search queries, and stacked filter combinations. Others, such as a filter that produces a distinctive and wanted category, can be genuine landing pages. Do not block all parameters. For each one, ask whether it changes the meaningful content, whether it only reorders or duplicates, and whether the resulting pages deserve to be found.

Google’s faceted navigation guidance says to disallow crawling of filter URLs you do not need in search, notes that URL fragments are not crawled for this purpose, that canonical and nofollow are less effective long-term, and that filter combinations with no results should return a 404. Blocking resources needed for rendering is a separate risk: a disallow rule that covers the scripts or styles that build the page can make the processed page empty. Base crawl management on actual site behaviour from crawls, Crawl Stats and logs, not on a copied template.

Dynamic routes versus static routes

A dynamically generated URL is not inherently an SEO problem. What matters is whether the route is useful, reachable and not endlessly duplicated. Dynamic routing covers product filters, faceted navigation, search results, sort parameters, pagination, variants, query-string content, infinite scroll and client-side navigation. The decision table below applies the approach to a small set of routes.

Hypothetical example routes and a reasoned handling
RoutePurposeDiscoverable and crawlableIndexableHandling
/shoes/Main categoryYes, in navigationYesSelf-canonical, in sitemap
/shoes/black/Filter with real search demand and unique contentYes, linkedYes if it deserves a pageClean URL, self-canonical, sitemap
/shoes/?sort=price-ascSort order of the same itemsUsually no needNoCanonical to /shoes/ or disallow if it multiplies
/shoes/?color=black&size=9&brand=x&sort=priceStacked combinationNoNoDisallow or 404 for empty combos; do not link
/search?q=blue+shoesInternal searchNoNoKeep out of crawling and indexing
/product/runner?variant=42Variant of one productDependsUsually the main product onlyCanonical to the main product unless variants differ meaningfully
/shoes/?page=2PaginationYes, with real linksUsually yes, self-canonicalDistinct URL, real links, no canonical to page 1
/shoes/?utm_source=newsletterTracking variantNot linkedNoCanonical to the clean URL
/cart/Utility pageNoNonoindex if crawlable, or keep out of sitemaps

Managing auxiliary URLs: purpose first

Search pages, filter combinations, sort URLs, utility pages and duplicate parameter routes exist to support functionality. Decide per URL type whether to leave it as is, canonicalise it, redirect it, return a 404 or 410, block crawling, use noindex, or keep it out of the sitemap. Do not apply noindex to all paginated, filtered or utility pages: some are useful landing pages. And remember that a URL blocked in robots.txt cannot have its noindex read. Only include indexable, canonical URLs in your sitemap.

Canonical tags, redirects and HTTP status codes

A canonical URL is the preferred address for content that exists at more than one URL. Google says redirects and rel="canonical" are strong signals and sitemaps a weak one, that none is guaranteed, that you should use redirects to retire a duplicate and rel="canonical" when the duplicate must stay accessible, and that self-referencing canonicals with absolute URLs are recommended.

When to use which
QuestionCanonicalRedirect
Does the duplicate stay accessible?YesNo, users are sent on
Typical useTracking or sort variantsRetired URLs, migrated pages, HTTP to HTTPS
Strength of signalStrong, not guaranteedStrong for permanent redirects
Best forNear-identical pages that must remainPages that no longer need to exist

Common canonical mistakes

  • Canonical pointing to a redirected, broken or non-200 URL.
  • Conflicting canonicals declared by different methods for the same page.
  • Canonical in conflict with internal links and sitemap entries.
  • Using canonicals to combine unrelated pages, or as a way to hide every duplicate.
  • Relying on robots.txt or noindex for canonicalisation. Google says not to.

A canonical consistency audit

Compare the signals for one URL
SignalWhere to read itShould match
Declared canonicalHTML link element or Link headerThe preferred URL, absolute, self-referencing
HTTP destinationResponse status after redirectsPreferred URL returns 200
Internal linksCrawler inlinks reportPoint to the preferred URL
Sitemap entrySitemap fileLists the preferred URL only
Hreflang referencesHreflang annotationsUse the preferred URLs
Google-selected canonicalURL Inspection, indexed versionSame URL, or an understood reason it differs

If Google selects a different URL, that is information. Compare the pages, check each signal above, and decide whether the selected URL is acceptable. If it is, align your signals to it. If not, strengthen the consistency of your own signals, or differentiate or consolidate the pages. Google also notes it prefers HTTPS over HTTP in most cases.

JavaScript SEO and rendered HTML

Source HTML alone can mislead on JavaScript-dependent sites, because the content and links you need may not exist until scripts run. On a conventional server-rendered page, where the main content and links already appear in the source HTML, a simple source check is usually enough. The comparison matters when pages rely on scripts for content, navigation, product lists or pagination.

A source versus rendered comparison, step by step

  1. Pick representative URLs. One per template: category, product, article, search results.
  2. Read the source HTML. View the raw response with view-source or curl. Note the title, main content, links and any empty containers.
  3. Read the rendered DOM. Use DevTools Elements, or the rendered HTML from the URL Inspection live test.
  4. Compare the essentials. Is the main content present? Are navigation and pagination links present as a elements with href? Are product and contextual links present? Is metadata where you expect it?
  5. Look for failures. Empty containers, error messages, missing images, and failed network requests for scripts or API calls.
  6. Check resources. In URL Inspection, review any resources that could not load, then see whether they matter to content or links.
  7. Compare URL groups. A JavaScript crawl of a template group shows whether the same gap affects every URL, or only some.

A page that contains JavaScript is not a problem by itself. The question is whether important content and links are present, accessible and processed reliably. Do not state that Google cannot process JavaScript. Google’s documentation says it can, and also recommends server-side or pre-rendering as an aid. Not every other crawler or tool renders pages, so important links being present in the source HTML is a safer design.

Hreflang and multilingual technical SEO

Hreflang annotations tell Google about alternate versions of a page for different languages or regions. It helps the right version be served to the right audience. It does not guarantee a higher ranking in a target country, and a single-language website aimed at one audience does not need it.

  • Valid codes. Language uses ISO 639-1, with an optional ISO 3166-1 Alpha 2 region. A region alone is invalid, and reserved region values have no effect.
  • Reciprocal links. Each version must link to every other version, and the links must be bidirectional or the annotations are ignored.
  • Self reference. Each version must list itself.
  • x-default. A fallback for users whose language is not listed, such as a selector page.
  • Implementation. HTML link elements, HTTP headers or an XML sitemap. Google says these are equivalent, so choose one and keep it maintainable.
  • URL and canonical consistency. Reference the preferred, 200 HTTPS URLs and keep canonicals consistent with the annotations. Avoid HTTP URLs in hreflang.

Common errors are missing return links, invalid or made-up codes, pointing at redirected or non-200 URLs, a canonical pointing at another language version, and clusters built from different sources of truth. Audit clusters with a crawler, check each pair, then fix the generator, not just one page. Localised pages that keep untranslated main content can still be treated as duplicates. See Scenario 13.

Page UX, accessibility and mobile experience

Google primarily uses the mobile version of a page for indexing. It tells you to keep the same primary content, headings, metadata and structured data across mobile and desktop, to allow crawling of mobile resources, and not to make primary content depend on user interaction. Tabs and accordions are fine when the content is equivalent.

  • Content parity and order. Important content should not vanish on small screens, and should not be pushed far down by repeated elements.
  • Layout stability. Images, embeds and injected content that shift the layout hurt users and CLS.
  • Navigation and controls. Menus and controls should be accessible links and buttons, usable by keyboard and assistive technology.
  • Intrusive overlays. Overlays that cover the main content block users, and may hide content from view on mobile.
  • Interaction responsiveness. Slow interaction response is what INP measures.
  • Responsive templates. Test templates on real small screens, since a template can render incorrectly while desktop looks fine.

Accessibility, usability, technical processing and ranking are four different things. Not every accessibility issue is a ranking factor. They overlap often: descriptive links, a logical outline, real buttons and links, and stable layouts help people, assistive technology and crawlers alike. Fix accessibility because users need it, and treat any search benefit as a possible side effect.

Server performance and robots.txt accessibility

Crawling depends on a server that answers reliably. Google says 5xx and 429 responses lower the crawl capacity and make it crawl less, persistent 5xx errors can lead to pages being dropped, and it increases crawling again once the server recovers. A slow response is not an automatic ranking penalty. Establish what is happening before acting.

  • Frequency. One incident or a recurring pattern?
  • Scope. All URLs, one template, one directory, or only some requests, for instance requests from certain agents or IP ranges?
  • Severity. Timeouts, slow but successful responses, or hard 5xx errors?
  • Impact. Do Crawl Stats, logs or the Page indexing report show reduced crawling or recrawl delays?

Check infrastructure that sits in front of the site, such as a CDN or firewall: aggressive rate limiting or bot rules can return errors to crawlers while your own browser works. Check robots.txt directly rather than inferring from a third-party warning. A 200 with the intended content is the normal state. A 404 is read as no restrictions. A 5xx or timeout can pause crawling and rely on the last cached copy for up to 30 days. Distinguish a temporary incident, which should recover, from a persistent configuration problem, which will not. Scenario 15 shows the method.

Core Web Vitals and CLS

Core Web Vitals are three metrics of real-user experience. According to web.dev (page last updated 31 October 2024), they are Largest Contentful Paint (LCP) for loading, Interaction to Next Paint (INP) for responsiveness, and Cumulative Layout Shift (CLS) for visual stability. A page passes when it meets the good level for all three at the 75th percentile of page loads, segmented by mobile and desktop. First Input Delay is not a current Core Web Vital: INP replaced it.

Current metrics and thresholds from web.dev
MetricMeasuresGoodNotes
LCPLoading: when the main content appears2.5 seconds or lessMeasured from when the page starts loading
INPResponsiveness to clicks, taps and key presses200 ms or less200 to 500 ms needs improvement; over 500 ms poor
CLSVisual stability0.1 or lessOver 0.25 is poor

Lab data versus field data

Field data comes from real users, such as the Chrome UX Report, PageSpeed Insights field results, Search Console and the web-vitals library. Lab data comes from controlled tests such as Lighthouse and DevTools. Lab tools only capture shifts during load and, for INP, depend on the interactions you perform, so a good lab score does not prove users have good Core Web Vitals. Use field data to learn whether there is a problem, and lab tools to find and test causes.

What CLS measures

CLS measures the largest burst of unexpected layout shifts during a page’s life. Shifts are grouped in session windows when they occur less than one second apart, with a five-second maximum per window. Shifts that follow a click, tap or key press, within 500 ms, are excluded as expected. Scrolling and zooming do not count as input.

Common causes and the usual fix
CauseWhy it shiftsUsual fix
Images and videos without dimensionsSpace is reserved only after the file loadsSet width and height, or aspect-ratio
Ads and embedsSlot resizes when content arrivesReserve a minimum height for the slot
Content injected above existing contentPushes everything downInsert below the fold, or reserve space
Web fontsFallback and final font differ in sizeMatch fallback metrics, preload key fonts
Late banners and widgetsAppear after render and push contentOverlay without moving content, or reserve space
Animations using layout propertiesMove content unexpectedlyAnimate with transform
Hypothetical example: reserve space before content loads
<img src="hero.webp" width="1200" height="630" alt="Product overview">

.ad-slot { min-height: 250px; }
.card-img { aspect-ratio: 4 / 3; width: 100%; height: auto; }

How to find, reproduce, prioritise and verify

  1. Confirm the field problem. Check the Core Web Vitals report and PageSpeed Insights field data, split by mobile and desktop, and note which URL groups fail.
  2. Reproduce. Test on a throttled mobile profile, scroll, and try different consent and ad states, since many shifts happen after load or in conditions a single lab run misses.
  3. Identify the element. Use the DevTools Performance panel layout shift entries, or attribution from the web-vitals library.
  4. Prioritise. Start with templates that carry the most important pages and the largest shifts.
  5. Fix and verify. Re-run lab tests, then watch field data, which updates gradually as real visits accumulate.

Pay equal attention to LCP and INP. For LCP, find the main content element and what delays it: server response, render-blocking resources or a large image. For INP, look at long tasks and event handlers in interactions. DevTools, Lighthouse and PageSpeed Insights help diagnose, and field data confirms. See Scenario 10.

Need developer-ready fixes for layout, speed or templates?

Explore Website Development

Technical SEO Audit Warnings: What Matters, What Does Not, and How to Decide

Crawler output is diagnostic evidence, not a verdict. The table evaluates ten common findings individually. “Not automatically” means the finding needs the stated evidence before anyone writes a ticket.

Whether each audit finding is automatically a problem
Audit findingIs it automatically a problem?Evidence to inspectWhen action is justified
Pages with blocked resourcesNoBlocked resource list; rendered output with and without itThe resource builds content, links, layout or key function
Pages containing JavaScriptNoSource HTML versus rendered DOM; URL groupsImportant content or links are missing or unreliable after rendering
Multiple H1 or H2 elementsNoOutline, accessibility, clarity of the main titleThe outline is confusing or headings are used only for styling
Long or short titlesNoClarity, uniqueness, relevance, how it displays, CTRTitles are duplicated, vague, misleading or consistently rewritten badly
Long meta descriptionsNoHow the snippet shows, relevance, truncationThe description is irrelevant or the shown snippet underperforms
Long URLsNoParameters, duplicates, variant handling, link structureURLs are duplicated, unstable or generated without limit
Blocked external resourcesUsually notWhat the third-party resource doesIt is required for content or functionality that matters
General crawler warningsNo, they are leadsReal behaviour, search visibility, page purposeEvidence shows a real effect on important URLs
Low or high word countNoPage purpose, usefulness, difference from similar pagesThe page is thin, duplicate or has no reason to exist as a URL
Redirects and non-200 responsesNo, often intentionalPurpose of the response, destination, internal linksThe response does not match the URL purpose or the destination is wrong

A. Pages with blocked resources

A crawler may flag scripts, styles or images blocked by robots.txt. Many are not needed to understand the page. Compare the rendered output with and without the resource: does content, a link, the layout or a function change? Prioritise from that evidence, not the warning. A blocked bundle that builds the product list matters. A blocked tracking script does not.

B. Pages containing JavaScript

JavaScript presence alone proves nothing. Compare source HTML with the rendered DOM for a sample per template, check that content and links are present, and compare URL groups rather than assuming every script-using URL carries the same risk.

C. Multiple H1 or H2 elements

Multiple headings are not automatically an indexing or ranking failure. Look at logical structure, meaningful headings and accessibility. Do not prescribe a single H1 as a universal technical requirement unless the page context justifies it, for example when no heading clearly states the main title.

D. Long or short page titles

Length alone says nothing. Google states no title length limit, and display varies by device. Check clarity, relevance, duplication, page purpose and how the title appears in results. Rewriting by Google varies and is not proof of a defect.

E. Long meta descriptions

Exceeding a common character guideline is not a serious problem. Google may truncate it or choose another snippet from the page content. Revise the description when it is vague, irrelevant or the displayed snippet suppresses clicks on important pages.

F. Long URLs

A long URL is not an inherent failure. Look instead for unnecessary parameters, inconsistent variants, unlimited dynamic combinations, poor link paths and duplication, which are the real conditions underneath.

G. Blocked external resources

Third-party resources are usually lower priority than your own required resources. The exception is a third-party script that supplies content or needed functionality, for example a hosted widget that renders reviews you want processed. Check what the resource contributes instead of assuming it never matters.

H. Crawl warnings generally

Validate each warning against actual implementation, search visibility, page purpose and intended URL behaviour, then classify it.

Five categories for classifying any finding
ClassMeaningExample (hypothetical)
Confirmed defect requiring actionEvidence shows a real problem on important URLsKey product pages return 5xx intermittently
Potential issue requiring investigationPlausible, not yet provenCategory links missing from source HTML
Low-priority optimisationReal but small effectImage sizes on low-traffic pages
Expected or intentional behaviourMatches designOld URLs redirecting after a rebrand
False positive or irrelevant warningThe tool misreads the situationBlocked chat widget script

Severity depends on how many URLs are affected, how important they are, which processing stage is involved and whether there is evidence of impact. The raw number of warnings is the weakest signal.

I. Low or high word count

Word count does not establish technical quality. Google’s SEO Starter Guide lists word count targets among myths. Ask whether the page serves its purpose, is useful, has a reason to be indexed separately, and differs from similar URLs.

J. Redirects and non-200 responses

Redirects, 404s and 410s are often correct. Check that the response matches the URL’s purpose, that a redirect lands on a relevant destination, and that internal links go straight to the right URL. This avoids blanket remediation and unnecessary development work.

Fifteen diagnostic scenarios

Every scenario below is a hypothetical example with invented website details, and none is real client work or an experiment I ran. Each follows the same path: symptom, principle, evidence and tools, hypothesis, validation, action, monitoring, and why the obvious fix may be wrong.

1A CMS article is missing from a crawl
Symptom
A published post opens by direct address and shows in the CMS, but is absent from the crawler export.
Principle
Discoverability
Evidence and tools
CMS URL list, sitemap file, crawler inlinks, rendered navigation, crawler depth and robots settings, URL Inspection (referring pages, sitemaps).
Hypothesis
No internal link reaches it, for example it is excluded from archive listings. Alternatives: a blocked route, or a crawler limit.
Validation
Crawl using the URL as a seed, search crawled pages for links to it, and review crawler configuration.
Action
Add contextual and listing links from relevant hubs. Add it to the sitemap if absent.
Monitor
Inlink count in the next crawl, last crawl date and referring pages in URL Inspection.
Obvious fix that may be wrong
Resubmitting the sitemap leaves a page with a single weak path, and does nothing if a crawler cap hid the real link.
2A page is in the XML sitemap but not indexed
Symptom
A listed URL shows as not indexed in Search Console.
Principle
Indexing
Evidence and tools
URL Inspection, Page indexing report filtered by sitemap, response status, robots directives, canonical, rendered content, internal links, similar pages.
Hypothesis
A leftover noindex, a different canonical, a redirecting sitemap entry, or a near-duplicate of an indexed template sibling.
Validation
Compare against indexed URLs of the same template, then check each directive and signal in turn.
Action
Fix a confirmed restriction. Otherwise improve distinct value and links, or remove the URL from the sitemap if it should not be indexed.
Monitor
Status in the Page indexing report over the following weeks.
Obvious fix that may be wrong
Repeated indexing requests do not change a selection decision, and noindexing neighbours only adds confusion.
3A JavaScript category page lacks important links in the initial HTML
Symptom
The page looks complete in a browser, but the source HTML holds an empty list container.
Principle
Rendering
Evidence and tools
View source versus rendered DOM, URL Inspection live test, JavaScript crawl, JavaScript disabled test.
Hypothesis
Product links are built by script, perhaps as click handlers instead of a href, or depend on an API call that fails or is blocked.
Validation
Compare link counts in source and rendered DOM, and check the network requests for failures.
Action
Output product links as real anchor elements, server-rendered or reliably hydrated.
Monitor
Rendered link count, discovery of product URLs in the next crawl.
Obvious fix that may be wrong
A full re-platform to server-side rendering when only the link markup, or a blocked API route, needs fixing.
4Product filters generate thousands of parameterised URLs
Symptom
A crawl finds far more URLs than the catalogue holds, and Crawl Stats shows heavy requests to parameter URLs.
Principle
Crawlability, then indexing
Evidence and tools
Crawl export grouped by parameter, Crawl Stats, server logs, Page indexing report, keyword data for filter demand.
Hypothesis
Faceted combinations and sort orders are crawlable and linked without limit.
Validation
Sample each parameter: does it change the meaningful content, and does the result have search demand?
Action
Keep valuable filters as clean crawlable pages. Disallow low-value combinations, use consistent filter order, and return 404 for empty combinations.
Monitor
The share of crawl requests on parameter URLs, indexed parameter pages, performance of key filter pages.
Obvious fix that may be wrong
Blocking every URL containing a question mark also blocks wanted pages, pagination and possibly rendering resources.
5Internal links repeatedly pass through redirects
Symptom
A crawl lists thousands of internal links ending in 301 hops, many after a migration.
Principle
Crawlability and URL architecture
Evidence and tools
Crawler redirect report with source pages, curl for headers, Crawl Stats redirect share.
Hypothesis
Templates and old content still link to retired, HTTP or slash-variant URLs.
Validation
Confirm the final destination returns 200 and matches the canonical, then group links by source template.
Action
Update the source links, starting with navigation and templates, then content through a search and replace. Keep the redirects.
Monitor
Internal 3xx count in the next crawl, redirect share in Crawl Stats.
Obvious fix that may be wrong
Deleting the redirects breaks bookmarks and external links.
6Google selects a different canonical from the declared one
Symptom
URL Inspection shows a user-declared canonical that differs from the Google-selected one.
Principle
Indexing
Evidence and tools
URL Inspection indexed version, content diff, internal link counts, sitemap, redirects, hreflang.
Hypothesis
The pages are near-duplicates and signals disagree, or the selected URL has stronger internal links.
Validation
Diff the two pages and list every signal pointing at each.
Action
If the selected URL is acceptable, align signals to it. If not, align links and sitemap to your choice and differentiate or consolidate the pages.
Monitor
The selected canonical in later inspections.
Obvious fix that may be wrong
Adding more canonical tags. A canonical is a signal, not a command.
7Search Console reports URLs as crawled but not indexed
Symptom
A group of URLs sits in “Crawled, currently not indexed”.
Principle
Indexing
Evidence and tools
Page indexing report by template, sample URL Inspection, content and uniqueness review, internal links, search demand.
Hypothesis
The affected template carries low-value or duplicate content, or Google has not selected the pages yet.
Validation
Compare with indexed pages of the same template and judge whether each URL has a distinct purpose.
Action
Improve unique content and links where the pages deserve indexing. Merge or noindex genuinely low-value ones.
Monitor
Counts per template over time.
Obvious fix that may be wrong
Mass resubmission. Google says there is no need to resubmit these, and this is often a selection matter and not a defect.
8Important pages have very few internal links
Symptom
Key service pages show one or two inlinks and deep click depth.
Principle
Discoverability and interpretation
Evidence and tools
Crawler inlinks, unique inlinks, depth, anchor text, Search Console performance for those pages.
Hypothesis
They are reachable only from a sitemap or a deep listing.
Validation
List relevant pages that could link to them naturally.
Action
Add contextual links, hub links and breadcrumb paths with descriptive anchors.
Monitor
Inlinks, depth and impressions after the next crawl.
Obvious fix that may be wrong
Adding sitewide links to chase a number, which adds noise without relevance.
9A crawler reports blocked scripts that do not affect important content
Symptom
The crawler flags blocked JavaScript on every page.
Principle
Crawlability and rendering
Evidence and tools
Blocked resource list, URL Inspection live test resources and screenshot, rendered DOM comparison.
Hypothesis
The blocked scripts are third-party analytics or chat tools.
Validation
Rendered content and links are identical with and without them.
Action
None, or a low-priority note. Document it as accepted.
Monitor
Re-check after template or script changes.
Obvious fix that may be wrong
Opening a whole assets folder in robots.txt without checking what it contains.
10Acceptable lab performance but poor field CLS
Symptom
Lighthouse is green, but field data shows CLS above the good level on mobile.
Principle
Serving and user experience (Core Web Vitals)
Evidence and tools
PageSpeed Insights field data, Search Console Core Web Vitals report, DevTools Performance panel, web-vitals attribution.
Hypothesis
Shifts occur after load or in real conditions the lab run misses, for example late ads, a consent banner or font swap.
Validation
Reproduce with throttling, scrolling and different consent states, and find the shifting elements.
Action
Reserve space for slots, set image dimensions, make banners overlay instead of push content, match font fallbacks.
Monitor
Field data over the following weeks, split by device and template.
Obvious fix that may be wrong
Chasing a higher Lighthouse score. The lab number is not the user experience.
11A title tag is long, but no visibility problem is evident
Symptom
A crawler flags the title as too long.
Principle
Serving
Evidence and tools
Search Console queries, impressions, CTR and position for the page, the displayed result, duplicate title check.
Hypothesis
Only the end is truncated, and the key meaning comes first.
Validation
Compare CTR with similar pages at similar positions.
Action
Leave it, or revise only if the front of the title is weak or duplicated.
Monitor
CTR if a change is made.
Obvious fix that may be wrong
Rewriting hundreds of titles for a length rule at real development cost.
12Organic CTR declines while indexation stays stable
Symptom
Clicks and CTR fall, indexed counts do not.
Principle
Serving
Evidence and tools
Search Console period comparison by query, device and search appearance, a live results check, seasonality.
Hypothesis
A position slip, SERP features absorbing clicks, a changed query mix, or rewritten titles.
Validation
Segment branded and non-branded queries and check whether position changed.
Action
Match the action to the cause: improve relevance or presentation where position is stable and the result is weak.
Monitor
Query-level CTR and position.
Obvious fix that may be wrong
Technical changes. Nothing here shows a crawl or indexing fault.
13A multilingual website has inconsistent hreflang relationships
Symptom
Crawler hreflang checks show missing return links and invalid codes across language versions.
Principle
Interpretation, with effects on indexing
Evidence and tools
Crawler hreflang audit, the annotations, canonicals, status codes of targets.
Hypothesis
Clusters are generated from different sources, a region code is wrong, or targets redirect.
Validation
Check every pair for reciprocity, self reference and 200 targets.
Action
Generate annotations from one source of truth, include self reference and x-default where needed, and fix invalid codes.
Monitor
A fresh crawler audit, and which version appears for each audience.
Obvious fix that may be wrong
Adding hreflang to a single-language site, or pointing it at redirecting URLs.
14Robots.txt blocks a URL whose noindex needs to be processed
Symptom
A page with a noindex tag still appears, often without a snippet, and shows “Indexed, though blocked by robots.txt”.
Principle
Crawlability and indexing
Evidence and tools
robots.txt matching rule, page source, URL Inspection.
Hypothesis
The crawler cannot fetch the page, so it never reads the noindex.
Validation
Evaluate the exact path against the file and confirm the noindex exists on the page.
Action
Remove the disallow for that URL and let the crawler see the noindex.
Monitor
The status change to excluded by noindex.
Obvious fix that may be wrong
Adding more disallow rules, or putting noindex in robots.txt, which Google does not support.
15Intermittent 5xx responses or robots.txt availability problems
Symptom
Crawl Stats shows host issues and a share of 5xx responses.
Principle
Crawlability
Evidence and tools
Crawl Stats, server and CDN logs, uptime monitoring, direct robots.txt fetches.
Hypothesis
Origin overload, aggressive bot rules, or a CDN misconfiguration affecting robots.txt.
Validation
Correlate errors with time, user agent and path, and reproduce them.
Action
Fix capacity or rules and keep robots.txt stable. Do not limit crawling with 401 or 403.
Monitor
Host status, 5xx share, and crawl recovery.
Obvious fix that may be wrong
Blaming crawl budget or rankings when the cause is infrastructure.

Technical SEO tools and what each can prove

What each tool can and cannot establish
ToolCan establishCannot establish
Google Search ConsoleGoogle-reported index status, queries, impressions, canonicals, crawl statsGoogle internal decisions or full index state
URL InspectionIndexed and live view, declared and selected canonical, rendered HTML, resourcesSelected canonical for a live test; guarantees of indexing
Crawler (desktop or cloud)Site-wide patterns, links, status codes, redirects, canonicalsWhat Google actually did; findings need validation
PageSpeed InsightsField data where available plus a Lighthouse runPerformance for every user or page
LighthouseControlled lab diagnostics and opportunitiesReal-user Core Web Vitals
Chrome DevToolsRendered DOM, network, layout shift sourcesBehaviour across all devices and users
Server logsWhich agents requested what and what the server returnedWhy a URL is not indexed

Server logs, where available, are the only source that shows actual crawler requests, though user agent strings can be spoofed, so verify crawlers as described earlier. Search Console’s Crawl Stats is for root-level properties and its counts may differ slightly from your logs.

A step-by-step technical SEO audit workflow

A repeatable audit moves from the foundation upward, because an access problem makes later checks misleading.

Stages, evidence, what counts as a problem and how to validate
StageInspect and useMeaningful problemPossible false positiveValidate
1. URL inventory and intended architectureCMS list, sitemap, analytics, crawlImportant URLs missing from sourcesIntentional non-public URLsReconcile sources
2. Hostnames, HTTPS, normalisation, responsescurl, crawlerSeveral 200 variantsRedirects that work as designedRun the variant matrix
3. Robots.txt and access controlsFile, status, rule testsImportant paths or resources blockedBlocks on utility pathsTest real URLs
4. Discovery, links, orphans, sitemapsCrawler, sitemapImportant orphan pagesIntentional unlinked pagesCheck inlinks and URL Inspection
5. Crawl and classify URL patternsCrawler groupingUnlimited parameter spacesLow-value URLs already excludedSample each pattern
6. Canonicals, redirects, duplicatesCrawler, headersConflicting signals on key URLsIntentional canonicalsRun the consistency audit
7. Source HTML and rendered outputDevTools, URL InspectionKey content or links missing after renderingNon-essential script differencesCompare templates
8. Indexing statesPage indexing reportKey templates not indexed with confirmed restrictionExcluded duplicatesCompare by template
9. Hreflang (if multilingual)Crawler auditMissing reciprocal linksSingle-language siteCheck clusters
10. Mobile and Core Web VitalsField data, DevToolsFailing field metrics on key templatesA one-off lab dipReproduce, then watch field data
11. Search result performanceSearch ConsoleLow CTR or impressions on good-position pagesSeasonal movementSegment by query and device
12. Prioritise and monitorFindings logConfirmed defects on important URLsLow-impact noiseVerify after each change

Priorities differ by site type. A small brochure site rarely faces crawl budget issues and should focus on clean URLs, internal links, indexing and basic performance. An ecommerce store needs control of facets, parameters, pagination and variants. A large publisher deals with archives, freshness and crawl efficiency. A JavaScript-heavy application starts with rendering, link markup and routing.

If you would rather have the audit done and the evidence written up, I can help.

Explore SEO Services

How to prioritise technical SEO fixes

Rank findings by combining these factors: impact on important pages, number of URLs affected, severity, confidence in the diagnosis, the processing stage affected, business importance, implementation effort, and risk of unintended consequences. The matrix is a planning aid that reflects judgement, not a validated score.

Priority tiers with hypothetical examples
TierWhat it looks likeHypothetical example
Critical confirmed defectHigh impact, confirmed, affects important URLs, often blocks discovery, access or indexingRobots.txt disallows the whole product directory by mistake
High priorityLikely to affect important pages, with reasonable confidenceCategory links missing from rendered HTML
Medium improvementReal but contained benefitRedirected internal links in templates
Low optimisationSmall or uncertain gainLong meta descriptions on minor pages
Intentional or non-issueMatches design or has no evidence of impactBlocked analytics script

The number of warnings matters far less than the importance of the conditions found. A short list of confirmed, high-impact defects beats a long list of unexamined findings.

Technical SEO checklist

Each item can be checked and verified. Must validate items apply to nearly every site, Context items depend on your site and evidence, and Not always needed items are unnecessary for some sites.

Discoverability

  • Must validate Every important URL has at least one crawlable internal link
  • Must validate Sitemap lists the indexable canonical URLs you want found
  • Context Orphan pages reviewed against your intent
  • Not always needed Sitemap for very small, well-linked sites

Crawlability

  • Must validate robots.txt returns the intended status and rules
  • Must validate Key URLs return 200 with correct headers
  • Context Server logs reviewed for crawler errors
  • Context Crawl budget reviewed for very large sites

Rendering

  • Must validate Key content and links present in rendered DOM
  • Context Template-level source versus rendered comparison
  • Not always needed Deep rendering test for fully server-rendered pages

Interpretation

  • Must validate Clear, logical headings and main content order
  • Context Structured data matches visible content
  • Must validate Mobile content matches desktop

Indexing

  • Must validate Important URLs not blocked by noindex or robots
  • Must validate Declared canonical checked against the selected one
  • Context Status patterns compared by template

Serving

  • Context Titles are distinct and descriptive
  • Context Low CTR pages reviewed by query and position
  • Not always needed Rewriting titles for length alone

URL architecture and links

  • Must validate One chosen URL form is enforced
  • Must validate Internal links point at final canonical URLs
  • Context Anchor text is descriptive

Canonicals and redirects

  • Must validate Canonical targets return 200 and self-reference
  • Must validate No redirect chains on key paths
  • Context Redirect map after migrations

Robots.txt and sitemaps

  • Must validate Rules tested against real URLs
  • Must validate No blocking of required rendering resources
  • Context Parameter handling decided by URL type

Hreflang and international

  • Context Reciprocal, self-referencing annotations with valid codes
  • Not always needed Hreflang on single-language sites

Core Web Vitals and UX

  • Must validate Field data checked for LCP, INP and CLS
  • Context CLS sources identified and fixed
  • Context Mobile templates tested on real devices

Monitoring and validation

  • Must validate Baseline recorded before changes
  • Must validate Each fix re-verified after release
  • Context Index and crawl reports reviewed regularly

Final takeaway

Evidence-led technical SEO asks one question of every finding: which stage does it affect, and what shows an impact? Discoverability, crawlability, rendering, interpretation, indexing and serving give you a way to answer it, and to leave harmless warnings alone.

No fix guarantees indexing, rankings, AI citations or rich results. A sound technical foundation removes avoidable barriers so that good content can be found, processed and shown appropriately.

Want a technical SEO review based on evidence?

I can help you separate confirmed defects from noise, and plan the fixes that justify the work. No ranking or traffic result is promised.

Explore SEO Services

Frequently asked questions

What are the six main principles of technical SEO?

Discoverability, crawlability, rendering, interpretation, indexing and serving. They are a diagnostic model for finding where a page stops in search processing.

What is the difference between discoverability and crawlability?

Discoverability is whether the search engine knows the URL exists. Crawlability is whether it can then request the URL and retrieve what it needs.

What is the difference between crawlability and indexability?

Crawlability is about access. Indexability is about whether the page is eligible and chosen for the index. A page can be crawled and still not indexed.

How do I check whether Google can access a URL?

Use the URL Inspection live test, check the HTTP response and headers with a tool such as curl, and read the robots.txt rules for that path. Server logs show actual requests.

Why is a page in my sitemap but not indexed?

A sitemap only suggests a URL. Check the status, directives, canonical, duplication, internal links and page purpose, and compare with indexed pages of the same template.

What is the difference between robots.txt and noindex?

Robots.txt controls whether crawlers request a URL. noindex asks that a crawlable page not be indexed. Blocking a URL hides its noindex.

Does JavaScript automatically create SEO problems?

No. Google renders JavaScript. The question is whether important content and links are present and reliable in the rendered output.

Are multiple H1 tags a technical SEO issue?

Not automatically. Focus on a clear, logical structure and a clear main title. I found no documented heading-count requirement.

Do long URLs affect SEO?

Not by themselves. Look for duplicates, unnecessary parameters and inconsistent variants.

Do long title tags and meta descriptions always need fixing?

No. Google states no length limit, truncates by width and may rewrite them. Fix titles and descriptions that are unclear, duplicated or irrelevant.

Why are some crawled pages not indexed?

Possible reasons include duplication, low value, canonical selection or timing. Google says crawled pages may or may not be indexed later.

What is the difference between canonical tags and redirects?

A canonical names a preferred URL while the duplicate stays accessible. A redirect sends users and crawlers to another URL and retires the duplicate.

When does crawl budget matter?

Mainly for very large or frequently changing sites, or ones with many discovered but not indexed URLs. For a small site it is rarely the cause.

What is hreflang, and which sites need it?

Hreflang annotations link language or regional versions of a page. Sites with several language or region versions can use it. A single-language site does not need it.

What are the current Core Web Vitals?

LCP (2.5 seconds or less), INP (200 ms or less) and CLS (0.1 or less), assessed at the 75th percentile. FID is no longer one.

How do I investigate CLS problems?

Confirm the field problem, reproduce it with throttling and different states, find the shifting element in DevTools, fix it, and verify with field data.

Which tools should I use for a technical SEO audit?

Search Console with URL Inspection, a crawler, PageSpeed Insights and Lighthouse, Chrome DevTools, and server logs where available.

How frequently should a website undergo a technical SEO audit?

There is no fixed schedule. Audit after migrations, redesigns and major releases, and monitor key reports regularly.

Sources and further reading

Checked on 20 October 2026. Official documentation is labelled by publisher. Pages I could not load, such as the Google pagination and lazy loading guides, are not cited, so the advice on infinite scroll and load-more patterns is practitioner advice and not a quoted Google rule.

Portrait of Aditya Choudhury, SEO Team Lead

About the author

Aditya Choudhury, SEO Team Lead and Digital Marketing Specialist

Aditya works on SEO strategy and organic growth, technical SEO and keyword research, content strategy and topical maps, and AI search visibility, including AEO and GEO. He helps businesses make their websites easier to discover and understand.