暫定日本語訳:Infinite Scroll SEO

暫定日本語訳:どのように へ implement infinite scroll なしで losing あなた インデックス登録 — なぜ Googlebot doesn't scroll, tall-viewport render trick その flattens two ページ へ one, paginated-URL + History API fix, と ecommerce category-ページ ケース.

初回公開:2026年7月3日 · 最終更新:2026年8月4日 · Advanced
言語

暫定日本語訳:Infinite scroll loads more コンテンツ as あなた scroll, instead of via numbered ページ — と Googlebot 決して scrolls または クリック, so anything gated behind その action is invisible by デフォルト. Google renders in very tall viewport (について 411×12,140px mobile, 1024×9,307px desktop) as workaround, ただし その 同じ tall viewport できる trigger scroll loader during rendering と fold two logical ページ へ one インデックス登録 URL — failure mode どこ 'not indexed' ページ is actually インデックス登録 as part of another. fix is architectural: give すべての chunk real, persistent, absolute URL (like?ページ=2), link them とともに crawlable anchors, と update address bar とともに History API as ユーザー scrolls. rel=next/prev is legacy (Google dropped it in 2019; Bing still supports it). On ecommerce category ページ, back it all とともに sitemaps または マーチャント Center フィード と verify in URL Inspection ツール's rendered HTML. production 構築 また needs real popstate/back-forward contract, distinct loading/error/end states, と deliberate accessibility — none of その comes 向けに 無料 just because インデックス登録 fix is in place.

暫定日本語案: TL;DR — Googlebot 決して scrolls と 決して クリック, so scroll-gated コンテンツ is 暫定日本語案: invisible by デフォルト. Google’s workaround is へ render in very tall viewport 暫定日本語案: (roughly 411×12,140px mobile, 1024×9,307px desktop) — ただし その 同じ height できる 暫定日本語案: trigger scroll loader during rendering, folding next logical ページ へ 暫定日本語案: 現在の one so two ページ get インデックス登録 as single URL. durable fix is 暫定日本語案: architectural: persistent, absolute, per-chunk URLs (e.g. ?page=12), linked とともに 暫定日本語案: crawlable anchors, とともに History API updating address bar as 各 chunk 暫定日本語案: becomes 主要. rel=next/rel=prev is legacy 向けに Google (dropped 2019) ただし 暫定日本語案: still respected by Bing. On ecommerce PLPs, sitemaps または マーチャント Center フィード are 暫定日本語案: discovery backstop. Verify everything in URL Inspection ツール’s rendered HTML.

Evidence for this claim Google Search does not generally interact with scrolling controls, so infinite-scroll content needs crawlable paginated URLs. Scope: Current official or standards documentation. Confidence: high · Verified: Google: Lazy-loaded content Evidence for this claim The History API can update URLs for loaded page chunks without a full navigation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: History API

最初, disambiguation

暫定日本語案: If あなた 検索 “Google infinite scroll” あなた’ll hit results について Google’s own 暫定日本語案: continuous scroll on its 検索結果 ページ — SERP feature Google turned on 暫定日本語案: と then discontinued in mid-2024. その’s Google-商品 UX decision と has 暫定日本語案: nothing へ do とともに どのように Googlebot crawls あなた サイト. この 記事 is について 暫定日本語案: latter: infinite scroll as loading pattern on あなた own ページ, と whether Google 暫定日本語案: できる インデックス登録 何 it loads.

core constraint: Google doesn’t interact とともに あなた ページ

暫定日本語案: Everything here follows から one fact. Google’s own lazy-loading docs say 暫定日本語案: recommended patterns “don’t rely on user actions, such as scrolling or clicking, to load content, which is important as Google Search does not interact with your page.” 暫定日本語案: pagination doc says it even more plainly: “Google’s crawlers don’t ‘click’ buttons and generally don’t trigger JavaScript functions that require user actions to update the current page contents.”

暫定日本語案: As I put it in my own JavaScript SEO guide: “Googlebot doesn’t take action on webpages. It’s not going to click things or scroll, but that doesn’t mean it doesn’t have workarounds. As long as content is loaded in the DOM without a needed action, Google will see it. If it’s not loaded into the DOM until after a click, then the content won’t be found.”

暫定日本語案: So infinite scroll その だけ triggers on real scroll イベント is コンテンツ-discovery 暫定日本語案: 問題 前に it’s anything else.

Google’s workaround: very tall viewport

暫定日本語案: Google doesn’t simulate scrolling. Instead it renders あなた ページ in unusually tall 暫定日本語案: viewport, so コンテンツ few screens down is already inside rendered area なしで 暫定日本語案: anyone scrolling. earliest on-record hint of この was John Mueller’s 2017 note 暫定日本語案: その “Googlebot renders with a very tall viewport, which skews some CSS (often images). Try in Chrome dev-tools, eg 9000px high viewport.”

暫定日本語案: specific numbers I’ve documented: 向けに mobile, Google loads ページ at screen 暫定日本語案: size of 411×731 pixels と resizes length へ 12 140 pixels — “essentially, it becomes a really long phone with a screen size of 411×12140 pixels. For desktop, it does the same and goes from 1024×768 pixels to 1024×9307 pixels.” (I haven’t seen 暫定日本語案: recent re-tests of それらの exact figures, と それら 可能性がある vary とともに ページ length; 暫定日本語案: original dimensions trace back へ independent テスト by SEO researcher JR Oakes.) 暫定日本語案: point isn’t exact pixel count — it’s その Google fakes “seeing far down the page” とともに height, ない とともに movement.

暫定日本語案: Treat both exact pixel dimensions と two-ページ-merged behavior below as 暫定日本語案: dated, implementation-specific observations rather than stable プラットフォーム contract — 暫定日本語案: Google doesn’t publish 公式 spec 向けに either number, と rendering behavior できる 暫定日本語案: change. Don’t assume あなた サイト behaves 同じ way; confirm 現在の behavior 向けに あなた 暫定日本語案: own URLs とともに rendered-HTML テスト in next section instead of taking これらの 暫定日本語案: figures as guarantee.

failure mode nobody explains: two ページ インデックス登録 as one

A height-triggered loader can fire during rendering and merge two logical pages under one indexed URL. 出典: /technical-seo/javascript-seo/

A normal browser viewport stops after page one. Google's render viewport expands much taller, reaches the infinite-scroll trigger without a real user scroll, and appends page two into the same DOM. The merged DOM is then indexed as one URL instead of two separate pages.

© Patrick Stox LLC · CC BY 4.0 ·

暫定日本語案: Here’s どこ tall viewport bites back. Because render viewport is so tall, 暫定日本語案: scroll-triggered loader できる fire during rendering even though nothing 暫定日本語案: “scrolled” in human sense — sheer DOM height できる be enough へ satisfy 暫定日本語案: IntersectionObserver または scroll-position 確認. いつ その happens, loader 暫定日本語案: appends next logical ページ’s コンテンツ へ 現在の ページ’s render, と 暫定日本語案: Google indexes merged result as single URL.

暫定日本語案: I’ve diagnosed この several times. から my JavaScript SEO guide:

暫定日本語案: “Another issue I’ve seen with this setup is, occasionally, two pages get indexed as one. I’ve seen this a few times when people said they couldn’t get their page indexed. But I’ve found their content indexed as part of another page that’s usually the previous post from them.”

暫定日本語案: “My theory is that when Google resized the viewport to be longer, it triggered the infinite scroll and loaded another article in when it was rendering. In this case, what I recommend is to block the JavaScript file that handles the infinite scrolling so the functionality can’t trigger.”

暫定日本語案: John Mueller described 同じ mechanic から Google’s side in 2022 office-hours 暫定日本語案: session: Google renders とともに high viewport, その “would trigger some amount of infinite scrolling,” と “we might have two or three of these pages loaded on one page with infinite scroll, but not everything.” (その office-hours quote is 暫定日本語案: relayed via 検索エンジン Journal’s write-up, ない confirmed against 主要 暫定日本語案: recording.)

暫定日本語案: Two consequences fall out of この:

  1. 暫定日本語案: There’s no guarantee of どのように much gets pulled in. Might be nothing extra, 暫定日本語案: might be two または three ページ, 決して reliably everything. Infinite scroll alone 暫定日本語案: is ない dependable way へ get deep コンテンツ インデックス登録.
  2. 暫定日本語案: “Not indexed” できる be misdiagnosis. 不足している ページ 可能性がある ない be 不足している at 暫定日本語案: all — it 可能性がある be インデックス登録 as part of earlier URL. その needs 異なる fix than 暫定日本語案: normal インデックス登録 bug.

どのように へ diagnose it

暫定日本語案: 使用 検索 Console’s URL Inspection ツール と read rendered HTML, ない 暫定日本語案: raw ソース. Google’s docs are explicit: “You can use the URL Inspection Tool in Search Console to see if all content was loaded. Check the rendered HTML to make sure your content is in the rendered HTML by looking for it in URL Inspection Tool.” 検索 暫定日本語案: rendered HTML 向けに コンテンツ あなた expect へ be on ページ 1 だけ. If あなた find コンテンツ 暫定日本語案: から ページ 2 (または next 記事) sitting inside ページ 1’s render, あなた’ve reproduced 暫定日本語案: merge bug.

暫定日本語案: あなた できる また replicate tall viewport locally: open Chrome DevTools, 設定 very 暫定日本語案: tall カスタム viewport (Mueller’s suggestion was ~9000px), と load ページ へ see 暫定日本語案: whether あなた loader fires とともに no scrolling.

fix: paginated URLs + History API

暫定日本語案: durable fix is architectural, straight から Google’s 現在の lazy-loading doc. 暫定日本語案: へ 作る infinite scroll indexable, “make sure your website supports paginated loading of these chunks”:

  • 暫定日本語案: “Give each chunk its own persistent, unique URL.”
  • 暫定日本語案: “Ensure that the content shown on each URL remains the same every time it’s loaded in a browser” — Google suggests absolute ページ numbers like ?page=12.
  • 暫定日本語案: “Avoid using relative elements like ?date=yesterday in these URLs” — 暫定日本語案: address その returns 異なる コンテンツ 各 load is unusable as canonical.
  • 暫定日本語案: “Link sequentially to the individual URLs so that search engines can discover the URLs in a paginated set” — real <a href> links, ない クリック handlers.
  • 暫定日本語案: “When a new page chunk is loaded in response to the user scrolling, and it becomes the primary visible element for the user, update the displayed URL using the History API.”

暫定日本語案: その 最後 point is elegant part. history.pushState() / replaceState() swaps 暫定日本語案: URL in address bar as ユーザー scrolls past 各 boundary — so visible 暫定日本語案: URL 常に matches 主要 コンテンツ, と ユーザー できる refresh, share, と link へ 暫定日本語案: exactly どこ それら are. Meanwhile crawlable ?page=N URLs exist independently, so 暫定日本語案: Google できる reach すべての chunk directly whether または ない renderer ever triggers 暫定日本語案: scroll.

暫定日本語案: Two implementation notes その matter:

  • 暫定日本語案: 使用 IntersectionObserver (または native ブラウザー lazy-loading), ない raw scroll 暫定日本語案: listener. It performs far better (no scroll-thrash) と it’s “load when visible” mechanism Google endorses 向けに deferred コンテンツ.
  • 暫定日本語案: 保つ paginated 設定 discoverable independently of JS. Real anchors in 暫定日本語案: DOM, と/または ?page=N URLs listed in あなた XML sitemap. Whatever renderer 暫定日本語案: captures, sitemap-と-links layer is あなた backstop.

暫定日本語案: If live サイト is already exhibiting merge bug と あなた need へ stop bleeding 暫定日本語案: 前に あなた できる rebuild, my blunt emergency fix is へ block JavaScript file その 暫定日本語案: triggers infinite scroll in robots.txt so it physically できる’t fire during 暫定日本語案: rendering — buying time へ ship proper paginated-URL architecture.

暫定日本語案: History API point above covers half contract — updating address bar as 暫定日本語案: chunk becomes 主要. other half is making sure すべての entry path back へ その 暫定日本語案: URL actually reconstructs right コンテンツ, ない just right scroll position:

  • 暫定日本語案: 使用 pushState() いつ chunk becomes 主要 visible コンテンツ 向けに 最初 暫定日本語案: time — その’s real navigation 手順, と it’s 何 作る back button meaningful.
  • 暫定日本語案: 使用 replaceState() 向けに corrections その shouldn’t 作成 their own back-button 暫定日本語案: stop, like syncing URL 後に fast scroll past several chunks at once.
  • 暫定日本語案: Listen 向けに popstate と re-render (または re-fetch) chunk その matches URL in 暫定日本語案: イベント. ブラウザー’s デフォルト back/forward behavior restores scroll position, 暫定日本語案: ない dynamic list state あなた JavaScript built — if ユーザー hits back 後に あなた 暫定日本語案: loader appended 40 more items, あなた need へ reconstruct which items belong on その 暫定日本語案: ページ, ない just scroll them there.
  • 暫定日本語案: Don’t lean on 自動 scroll restoration alone へ solve この. It controls どこ 暫定日本語案: viewport lands, ない 何 コンテンツ is present — if underlying list できる change 暫定日本語案: 間に visits (新しい 商品 追加, items out of stock), scroll position なしで 暫定日本語案: コンテンツ reconstruction できる strand ユーザー in 誤った context.

暫定日本語案: この is 同じ discipline paginated-URL fix already depends on: chunk’s URL 暫定日本語案: has へ return コンテンツ it promised on fresh load, refresh, と 暫定日本語案: 検索-Console live テスト — ない just 最初 time it’s fetched mid-scroll.

Loading, error, と end-of-results states

暫定日本語案: production implementation needs more states than “loading” と “loaded”:

  • 暫定日本語案: Initial load — 最初 chunk すべき already be in raw HTML サーバー 暫定日本語案: 送信, ない assembled entirely by JS 後に fact.
  • 暫定日本語案: Next-chunk loading — visible in-progress indicator so ユーザー (と anyone 暫定日本語案: テスト とともに assistive tech) know fetch is underway.
  • 暫定日本語案: Empty — distinct state 向けに zero results, ない blank space その looks broken.
  • 暫定日本語案: Error / retry — failed fetch shouldn’t silently strand ページ とともに no way へ 暫定日本語案: try again, と retry shouldn’t duplicate または reorder items already on ページ.
  • 暫定日本語案: End of results — clear signal, ない infinite spinner, once there’s nothing 暫定日本語案: left へ load.

暫定日本語案: None of この is Google-specific, ただし it’s 同じ reliability paginated-URL fix 暫定日本語案: depends on: if loader できる silently break mid-fetch, あなた できる’t trust その any given 暫定日本語案: クロール または ユーザー session actually captured chunk it すべき have.

Accessibility と パフォーマンス: two things infinite scroll doesn’t give あなた 向けに 無料

暫定日本語案: Infinite scroll has no inherent Core Web Vitals outcome, good または bad — it’s determined 暫定日本語案: entirely by どのように あなた 構築 it. すべての appended chunk grows DOM, と large enough 暫定日本語案: DOM raises layout と style-recalculation cost, so watch append cost, 画像 loading, 暫定日本語案: layout shift から コンテンツ なしで reserved space, と long tasks as list grows. On 暫定日本語案: very long ページ, consider virtualizing chunks その have scrolled far out of view 暫定日本語案: (removing their DOM nodes) instead of letting DOM grow unbounded.

暫定日本語案: Accessibility needs its own deliberate design, ない assumption その “it renders, so it’s fine”:

  • 暫定日本語案: Keyboard ユーザー need へ be able へ reach 新しい コンテンツ — と footer または 暫定日本語案: end-of-ページ navigation — なしで ページ silently growing out から 下で their tab 暫定日本語案: order.
  • 暫定日本語案: Screen reader ユーザー need 新しい コンテンツ announced なしで interrupting 何 それら’re 暫定日本語案: doing — polite status 地域, ない disruptive alert, is usual pattern.
  • 暫定日本語案: WAI-ARIA フィード design pattern is built 向けに exactly この ケース: 記事-level 暫定日本語案: 地域 inside フィード container, とともに defined keyboard behavior 向けに moving 間に 暫定日本語案: items と 向けに reaching コンテンツ 前に と 後に フィード.
  • 暫定日本語案: Focus shouldn’t silently jump または get lost いつ 新しい chunk loads.

暫定日本語案: None of この is optional cleanup. It’s difference 間に infinite scroll その 暫定日本語案: 機能 向けに everyone と one その だけ 機能 向けに mouse ユーザー とともに JavaScript who 決して 暫定日本語案: strays から happy path.

historical context: rel=next/prev is legacy

暫定日本語案: If あなた learned pagination years ago, あなた learned rel="next" / rel="prev". Google 暫定日本語案: introduced them in 2011 と paired them とともに its original 2014 “infinite scroll search-friendly recommendations” (paginate コンテンツ, 提供 component ページ). 暫定日本語案: Then in 2019 Google announced it hadn’t been using それらの tags 向けに years と formally 暫定日本語案: dropped them. pagination doc confirms it 現在: “In the past, Google used <link rel="next" href="..."> and <link rel="prev" href="..."> to identify next page and previous page relationships. Google no longer uses these tags, although these links may still be used by other search engines.”

暫定日本語案: So 現在の Google recipe is unique URLs + crawlable links + History API — no 暫定日本語案: rel=next/rel=prev 必要. ただし “other search engines” 含む Bing, which 暫定日本語案: still respects them, so there’s no harm in 保持 them in あなた markup 向けに cross-engine 暫定日本語案: benefit と accessibility. Bing itself doesn’t publish infinite-scroll-specific 暫定日本語案: guidance; its stance reduces へ general JS-rendering caution its team laid out — 暫定日本語案: bingbot できる render JavaScript ただし “it is difficult for bingbot to process JavaScript at scale,” so crawlable paginated fallback 役立つ Bing 向けに exactly 同じ 理由 it 暫定日本語案: 役立つ Google.

Ecommerce category ページ: highest-stakes ケース

暫定日本語案: 大半の 一般的な real-world infinite scroll is on ecommerce category / 商品 暫定日本語案: listing ページ (PLPs), と it’s どこ risk costs actual money. If deep-catalog 暫定日本語案: 商品 past 最初 screenful 決して get インデックス登録, それら できる’t 順位, と あなた lose 暫定日本語案: long tail of 商品-level オーガニック トラフィック. この is 同じ territory covered in depth 暫定日本語案: in category-ページ material — infinite scroll is one more 理由 それらの ページ need 暫定日本語案: crawlable structure underneath UX.

暫定日本語案: Two backstops matter here:

  • 暫定日本語案: XML sitemaps listing すべての canonical 商品 と paginated category URL, so 暫定日本語案: discovery doesn’t depend on renderer.
  • 暫定日本語案: ** マーチャント Center 商品 フィード**, which フィード Google 商品 データ independently of 暫定日本語案: whatever category ページ’s renderer captures.

暫定日本語案: Lumar’s analysis of top UK fashion retailers found infinite scroll へ be, in their 暫定日本語案: words, “the biggest loser when it comes to indexability and SEO friendliness” among 暫定日本語案: pagination patterns — useful reminder その この isn’t theoretical edge ケース, it’s 暫定日本語案: デフォルト failure mode of very popular PLP UX. (Lumar’s specific percentage 暫定日本語案: figures すべき be read から their live レポート 前に citing exact number.)

Infinite scroll vs. pagination vs. load more

暫定日本語案: Google’s pagination doc frames three UX patterns と is honest について tradeoffs. 暫定日本語案: Infinite scroll “uses a single page for all content” と is “intuitive — the user just keeps scrolling,” ただし it “can lead to ‘scrolling fatigue’ because of unclear result size” と “can’t handle very large numbers of results.” Classic numbered pagination is 暫定日本語案: 大半の robust 向けに SEO because すべての ページ is inherently real URL. “Load more” sits in 暫定日本語案: 間に — fine if button is (または wraps) real link へ paginated URL, useless 向けに 暫定日本語案: SEO if it’s pure クリック handler.

暫定日本語案: decision isn’t “which is allowed” — all three are 許可. It’s “which UX do you want, and did you build the crawlable URL layer underneath it.” Mueller’s 2023 summary 暫定日本語案: is whole thing in one line: “if each piece or virtual page is also accessible and findable through a unique URL, generally it should be fine to have infinite scroll.”

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.