Search Central LiveDeep Dive Europe 2026

Knowledge base v2.13.0 · Community edition · data through 2 October 2026

Topic · Crawling

Crawlable links

Google extracts links from a page's HTML ('We like links.') to discover pages, understand site structure and rank, sending new URLs back to the crawl queue, which extends Day 1's point that discovery runs on links. Only an a element whose href holds a real URL is dependable: Google's slide put onclick-only links (Googlebot does not click, as on Day 1), routerLink without href, href on a span and javascript: URLs under 'can not extract', while its documentation calls them not recommended and says Google may still try to parse them. Links are extracted before and after rendering, so JavaScript-added a href links can count, but a community speaker showed navigation that exists only after rendering being lost when rendering fails. Day 2 repeats Day 1 on fragments: Google cannot request the part of a URL after #, which Google called the next most common JavaScript issue, so single-page apps should use real paths with the History API, a change it called not free but relatively straightforward. A community speaker showed a language selector built as a button that orphaned a whole set of language versions; Google said it sometimes extracts plain-text URLs too, but that passage of the recording is unclear. Day 3 timed link processing: Google estimated that link annotations are processed in minutes to 1-3 weeks, with an end point of about a year (not in Google's docs), and an audience member's large site showed recrawl frequency following site hierarchy and internal linking. In the Day 1 Q&A Google said that if paginated pages are replaced by a load-more button or infinite scroll without crawlable links, Google will not see the further pages at all; on Day 2 migration speakers stressed updating internal links so moved pages do not rely on redirects alone.

What to do

  • Audit every component that outputs links (navigation, pagination, filters, product tiles, language selectors) for a real <a href> to a crawlable URL.
  • Replace hash routes with real paths and History API routing, and make every view that should rank reachable through an <a href>.
  • Keep main and sub-navigation links in the server HTML so they survive a rendering failure.
  • Do not count on plain-text URLs for discovery; link them properly.
  • Use URL fragments only where you deliberately want filter combinations kept out of the crawl.

Day 1: Crawling 1

Said on stage 1

StageConfirmed by docsD1-C491

If paginated pages are replaced by a load-more button or infinite scroll without crawlable links to them, Google will not see the further pages at all.

“Googlebot is not running around clicking on buttons”

Wording checked against the slide or recording

Speaker not identifiedIn Day 1, 16:35 · Q&AEvidence transcript

Things

Used byrequirement DEV-URL-07

  • Answers D1-C490 Day 1: An audience member asked what happens to thousands of crawled and indexed paginated category and tag pages if…
  • Extended by D2-C271 Day 2: Google does not scroll a page when it renders it for indexing, so content that infinite scroll loads on…

Day 2: Indexing 34

Shown on screen 11

SlideConfirmed by docsD2-C036

Links and anchors are among the things Google extracts from a page's HTML, and the slide card for them simply read 'We like links.'

“We like links.”

Wording checked against the slide or recording

Speaker Cherry PrommawinIn Day 2, 10:25 · How is HTML interpretedEvidence 2 slide photos, transcript

Used byrequirement DEV-URL-01

SlideConsistent with docsD2-C040

Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

Speaker Cherry PrommawinIn Day 2, 10:25 · How is HTML interpretedEvidence slide photo, transcript

Used byrequirement DEV-URL-02

  • Repeats D1-C115 Day 1: Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the…
  • Extended by D2-C184 Day 2: Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link…
  • Extended by D2-C287 Day 2: A link that is an <a> element but does not point to a real URL gives Google something to look at, but Google…
SlideConfirmed by docsD2-C168

In Google's processing step, links are extracted from the HTML Google already has, before rendering, and the URLs found go back to the crawl queue.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo, transcript

Things
  • Extends D1-C040 Day 1: URL discovery works through links: a homepage links to section pages, which link to further pages.
  • Extends D2-C048 Day 2: Links extracted during processing are sent back to the crawl queue, where scheduling starts again for the…
SlideConfirmed by docsD2-C184

Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link such as href=#/products, may be invisible to Google.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-URL-02

  • Extends D1-C115 Day 1: Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the…
  • Extends D2-C040 Day 2: Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not…
SlideConfirmed by docsD2-C185

The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>, combined with History API routing (window.history.pushState) instead of hash routes.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo

Used byrequirement DEV-URL-03

  • Repeated by D2-C285 Day 2: Google recommends the History API to give single-page apps clean URLs instead of fragment-based routes.
  • Extended by D2-C288 Day 2: With the History API, a single-page app can use real links and attach event listeners that intercept the…
SlideConsistent with docsD2-C187

A market or language selector built as a button works for users but leaves the whole cluster of alternate-language pages without crawlable links, so the cluster is orphaned for Google.

“The nav works perfectly for users, and the entire alternate-language cluster is orphaned.”

Wording checked against the slide or recording

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence slide photo

Used byrequirement DEV-INT-06

  • Extends D1-C115 Day 1: Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the…
SlideConfirmed by docsD2-C284

URL fragments (#) are often ignored by crawlers: a fragment exists only in the browser, so Google cannot request it.

“Fragment identifiers (#) are often ignored by crawlers.”

Wording checked against the slide or recording

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-URL-03

  • Repeats D1-C101 Day 1: Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt and keep crawlable…
SlideConfirmed by docsD2-C285

Google recommends the History API to give single-page apps clean URLs instead of fragment-based routes.

“Use the History API for clean URLs in SPAs.”

Wording checked against the slide or recording

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence slide photo, transcript

Used byrequirement DEV-URL-03glossary term History API

  • Repeats D2-C185 Day 2: The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>…

Said on stage 14

StageConsistent with docsD2-C038

Google uses the links it extracts for three purposes: discovering new pages, determining a site's structure, and ranking.

Speaker Cherry PrommawinIn Day 2, 10:25 · How is HTML interpretedEvidence transcript

Used byrequirement DEV-URL-01

  • Extends D1-C040 Day 1: URL discovery works through links: a homepage links to section pages, which link to further pages.
StageConsistent with docsD2-C140

In a navigation example, the main navigation was in the raw HTML and would survive a rendering failure, but the whole sub-navigation was built by JavaScript, so all of its links would be inaccessible to bots if rendering broke.

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

StageConsistent with docsD2-C141

When checking which links bots can see, keep in mind that the rendered HTML can change with user actions, a community speaker cautioned.

Speaker Sören BendigIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

StageConsistent with docsD2-C186

Non-crawlable link markup, such as onclick links and hash pseudo-links, is common in single-page web apps, and sites that use faceted navigation should check their links for it.

Speaker Rebecca YuIn Day 2, 10:40 · Lightning session D: Rendering and JavaScriptEvidence transcript

Used byrequirement DEV-URL-02glossary term Single-page app (SPA)

StageConfirmed by docsD2-C287

A link that is an <a> element but does not point to a real URL gives Google something to look at, but Google will not know where the link goes.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

Used byrequirement DEV-URL-01

  • Extends D1-C040 Day 1: URL discovery works through links: a homepage links to section pages, which link to further pages.
  • Extends D2-C040 Day 2: Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not…
StageConfirmed by docsD2-C288

With the History API, a single-page app can use real links and attach event listeners that intercept the click, rewrite the URL with pushState and load the new content, so Google can follow the links while users avoid full page reloads.

Speaker Erin SparlingIn Day 2, 11:15 · What is Google friendly JavaScriptEvidence transcript

Used byrequirement DEV-URL-03glossary terms History API, Single-page app (SPA)

  • Extends D2-C185 Day 2: The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>…
StageConfirmed by docsD2-C884

The technical steps of a community speaker's domain consolidation included submitting new sitemaps, filing a change of address in Search Console and updating internal links so the new pages did not rely on redirects alone.

Speaker Martyna AğanoğluIn Day 2, 12:05 · Lightning session E: Managing Duplicates and Site MovesEvidence transcript

Used byrequirement DEV-CAN-09glossary term Change of Address tool

  • Extends D1-C540 Day 1: Asked how to plan a migration that does not leave many URLs unindexed, a Google panelist said the answer is…

What Google's documentation says 3

DocsSourceD2-C043

Google's link best practices say Google can generally crawl a link only if it is an a element with an href attribute, and list routerLink without href, href on a span, onclick-only a elements and javascript: URLs as not recommended, while noting that Google may still attempt to parse them.

Publisher Google Search CentralAnnotates Day 2, 10:25 · How is HTML interpreted

Used byrequirements DEV-URL-01, DEV-URL-02

DocsSourceD2-C169

Google's JavaScript SEO basics guide says Googlebot extracts links twice, from the HTML response before rendering and again from the rendered HTML, so links injected with JavaScript can be found if they use crawlable <a href> markup.

Publisher Google Search CentralAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-URL-01

  • Extends D1-C040 Day 1: URL discovery works through links: a homepage links to section pages, which link to further pages.
DocsSourceD2-C276

To make infinite scroll indexable, Google's lazy-loading guide says to support paginated loading: give each chunk its own persistent, unique URL, link sequentially to those URLs, and update the displayed URL with the History API when a new chunk becomes the main visible element.

Publisher Google Search CentralAnnotates Day 2, 11:15 · What is Google friendly JavaScript

Used byrequirement DEV-URL-07

  • Extends D1-C115 Day 1: Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the…

Analysis by the author 6

AnalysisD2-C188

Hash-fragment links are a problem only where Google should follow them: product, category and language links need a real URL in an <a href>, while fragments can deliberately keep filter combinations out of the crawl, as Google's faceted navigation guide allows.

Author Ibrahim AnjroAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Used byrequirement DEV-URL-08

  • Extends D1-C101 Day 1: Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt and keep crawlable…
AnalysisD2-C189

Build market and language selectors as plain <a href> links to each alternate URL, not buttons or script handlers; otherwise the language versions have no internal links and depend on sitemaps to be found, which is slow.

Author Ibrahim AnjroAnnotates Day 2, 10:40 · Lightning session D: Rendering and JavaScript

Things

Used byrequirement DEV-INT-06

  • Extends D1-C067 Day 1: A page with no internal links depends on sitemaps alone to be found, so it is discovered slowly and attracts…

Day 3: Serving: Ranking, Search Console, and Performance 3

Shown on screen 1

Said on stage 1

Analysis by the author 1

Across days and sessions 18

  1. Stage D2-C038 Day 2 · How is HTML interpreted

    Google uses the links it extracts for three purposes: discovering new pages, determining a site's structure, and ranking.

    extends
    Slide D1-C040 Day 1 · How Search works and where's AI?

    URL discovery works through links: a homepage links to section pages, which link to further pages.

  2. Slide D2-C168 Day 2 · Lightning session D: Rendering and JavaScript

    In Google's processing step, links are extracted from the HTML Google already has, before rendering, and the URLs found go back to the crawl queue.

    extends
    Slide D1-C040 Day 1 · How Search works and where's AI?

    URL discovery works through links: a homepage links to section pages, which link to further pages.

  3. Slide D2-C168 Day 2 · Lightning session D: Rendering and JavaScript

    In Google's processing step, links are extracted from the HTML Google already has, before rendering, and the URLs found go back to the crawl queue.

    extends
    Slide D2-C048 Day 2 · How is HTML interpreted

    Links extracted during processing are sent back to the crawl queue, where scheduling starts again for the newly found URLs.

  4. Docs D2-C169 Day 2 · Lightning session D: Rendering and JavaScript

    Google's JavaScript SEO basics guide says Googlebot extracts links twice, from the HTML response before rendering and again from the rendered HTML, so links injected with JavaScript can be found if they use crawlable <a href> markup.

    extends
    Slide D1-C040 Day 1 · How Search works and where's AI?

    URL discovery works through links: a homepage links to section pages, which link to further pages.

  5. Slide D2-C184 Day 2 · Lightning session D: Rendering and JavaScript

    Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link such as href=#/products, may be invisible to Google.

    extends
    Docs D1-C115 Day 1 · session not recorded

    Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.

  6. Slide D2-C184 Day 2 · Lightning session D: Rendering and JavaScript

    Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link such as href=#/products, may be invisible to Google.

    extends
    Slide D2-C040 Day 2 · How is HTML interpreted

    Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

  7. Slide D2-C187 Day 2 · Lightning session D: Rendering and JavaScript

    A market or language selector built as a button works for users but leaves the whole cluster of alternate-language pages without crawlable links, so the cluster is orphaned for Google.

    extends
    Docs D1-C115 Day 1 · session not recorded

    Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.

  8. Analysis D2-C188 Day 2 · Lightning session D: Rendering and JavaScript

    Hash-fragment links are a problem only where Google should follow them: product, category and language links need a real URL in an <a href>, while fragments can deliberately keep filter combinations out of the crawl, as Google's faceted navigation guide allows.

    extends
    Docs D1-C101 Day 1 · How Google thinks about crawl budget

    Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt and keep crawlable only item pages plus one unfiltered listing page, or use URL fragments, which Google generally does not crawl. rel=canonical and nofollow are weaker, slower options.

  9. Analysis D2-C189 Day 2 · Lightning session D: Rendering and JavaScript

    Build market and language selectors as plain <a href> links to each alternate URL, not buttons or script handlers; otherwise the language versions have no internal links and depend on sitemaps to be found, which is slow.

    extends
    Analysis D1-C067 Day 1 · How crawling works

    A page with no internal links depends on sitemaps alone to be found, so it is discovered slowly and attracts little crawl demand.

  10. Stage D2-C271 Day 2 · What is Google friendly JavaScript

    Google does not scroll a page when it renders it for indexing, so content that infinite scroll loads on scroll-depth triggers works for users but is never loaded for Google.

    extends
    Stage D1-C491 Day 1 · Q&A

    If paginated pages are replaced by a load-more button or infinite scroll without crawlable links to them, Google will not see the further pages at all.

  11. Docs D2-C276 Day 2 · What is Google friendly JavaScript

    To make infinite scroll indexable, Google's lazy-loading guide says to support paginated loading: give each chunk its own persistent, unique URL, link sequentially to those URLs, and update the displayed URL with the History API when a new chunk becomes the main visible element.

    extends
    Docs D1-C115 Day 1 · session not recorded

    Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.

  12. Stage D2-C287 Day 2 · What is Google friendly JavaScript

    A link that is an <a> element but does not point to a real URL gives Google something to look at, but Google will not know where the link goes.

    extends
    Slide D1-C040 Day 1 · How Search works and where's AI?

    URL discovery works through links: a homepage links to section pages, which link to further pages.

  13. Stage D2-C287 Day 2 · What is Google friendly JavaScript

    A link that is an <a> element but does not point to a real URL gives Google something to look at, but Google will not know where the link goes.

    extends
    Slide D2-C040 Day 2 · How is HTML interpreted

    Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

  14. Stage D2-C288 Day 2 · What is Google friendly JavaScript

    With the History API, a single-page app can use real links and attach event listeners that intercept the click, rewrite the URL with pushState and load the new content, so Google can follow the links while users avoid full page reloads.

    extends
    Slide D2-C185 Day 2 · Lightning session D: Rendering and JavaScript

    The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>, combined with History API routing (window.history.pushState) instead of hash routes.

  15. Stage D2-C884 Day 2 · Lightning session E: Managing Duplicates and Site Moves

    The technical steps of a community speaker's domain consolidation included submitting new sitemaps, filing a change of address in Search Console and updating internal links so the new pages did not rely on redirects alone.

    extends
    Stage D1-C540 Day 1 · Q&A

    Asked how to plan a migration that does not leave many URLs unindexed, a Google panelist said the answer is probably not sitemaps: decide what matters from the business's perspective (for example whether to consolidate languages); listing the new URLs in a sitemap is probably a good idea and cannot hurt, but it is not the main tool.

  16. Slide D2-C040 Day 2 · How is HTML interpreted

    Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.

    repeats
    Docs D1-C115 Day 1 · session not recorded

    Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.

  17. Slide D2-C284 Day 2 · What is Google friendly JavaScript

    URL fragments (#) are often ignored by crawlers: a fragment exists only in the browser, so Google cannot request it.

    repeats
    Docs D1-C101 Day 1 · How Google thinks about crawl budget

    Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt and keep crawlable only item pages plus one unfiltered listing page, or use URL fragments, which Google generally does not crawl. rel=canonical and nofollow are weaker, slower options.

  18. Slide D2-C285 Day 2 · What is Google friendly JavaScript

    Google recommends the History API to give single-page apps clean URLs instead of fragment-based routes.

    repeats
    Slide D2-C185 Day 2 · Lightning session D: Rendering and JavaScript

    The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>, combined with History API routing (window.history.pushState) instead of hash routes.

Built on these claims 7

Developer requirements 7

Sources 8