SSRチェッカー
URLのコンテンツがHTMLに含まれているか、JavaScriptで生成されているかを確認します。JSを実行せずにブラウザとGooglebotとしてページを取得し、フレームワークとレンダリング方式(Next.js、Nuxt、React SPA、WordPressなど)を検出、クローラーが見る単語数・リンク・見出しを集計し、ボットのブロックやダイナミックレンダリングを検出します。無料・登録不要。
JavaScriptを実行せず、デスクトップChromeとして1回、Googlebotとして1回ページを取得します。何も保存・記録されず、このページには数値だけが返ります。
仕組み
1. JavaScriptを実行せず、URLを並列で2回取得:1回はデスクトップChromeのユーザーエージェント、1回はGooglebotとして 2. リダイレクトを追跡(最大5回)し、最終URL・HTTPステータス・TTFB・レスポンスヘッダー(サーバー、CDN、キャッシュ状態)を記録 3. 生のHTMLを解析:title、meta description、canonical、lang、robots指示、H1、<a href>リンク、画像、JSON-LDの型、meta refresh 4. script・style・noscript・template・SVGを除去し、可視テキストの単語数を数える — 第1波のクローラーがインデックスする内容 5. マークアップの痕跡からスタックを検出:__NEXT_DATA__ / self.__next_f(Next.js)、__NUXT_DATA__(Nuxt)、__remixContext、ng-version + ng-server-context(Angular)、astro-island、SvelteKit、Qwik、CMSのgeneratorタグ、空の<div id="root"> / <div id="app">シェル 6. 2つのレスポンスを比較:Googlebotに403/429が返ればボットがブロックされている、Googlebotのテキストが大幅に多ければダイナミックレンダリング 7. 0〜100点:コンテンツ(最大40)、空でないアプリコンテナ、title、H1、リンク、canonical、JSON-LD、lang、スクリプト比率;判定:サーバーサイド/部分的/クライアントサイド
サーバーサイドレンダリングとSEOについて
サーバーサイドレンダリング(SSR)とは、サーバーが返すHTMLにすでにページの内容 — 見出し、本文、商品データ、リンク — が含まれている状態です。クライアントサイドレンダリング(CSR)とは、サーバーがほぼ空のシェルを返し、ブラウザがJavaScriptを実行してページを組み立てる状態です。最新のブラウザを使う人間には両者は同じに見えます。しかしスクリプトを実行せずにHTMLを読むもの — Googleクローラーの第1波、Bing、Slack・WhatsApp・LinkedInのリンクプレビュー、ほとんどのAIクローラーやアンサーエンジン、多くのSEOツール — にはまったく違って見えます。
GoogleはJavaScriptを実行しますが、クロールバジェットに依存し、最初の取得から数時間〜数日遅れることもある第2の遅延パスで行います。そのためCSRページはインデックスが遅れ、リンクの発見も遅れ、レンダリングパイプラインのわずかな問題 — ブロックされたスクリプト、タイムアウト、Cookieを要求するAPI — があれば、配信されたままの空のシェルとしてインデックスされます。Next.js、Nuxt、Remix、SvelteKit、Astro、Angularといったフレームワークは、まずサーバーでレンダリングしてからブラウザでハイドレートすることでこれを解決します。このチェッカーは、本番環境が実際にそう動いているかを教えてくれます。
このツールは生のHTMLを読むため、レンダリング後のスクリーンショットでは答えられない問い — スクリプトが動く前にドキュメントに何があるか — に答えます。可視テキストの単語数を数え、アプリコンテナ(#root、#app、#__next、#__nuxt)が空でないことを確認し、初期HTMLに必要なhead要素 — title、meta description、canonical、lang — を検証し、フレームワークが残す痕跡(gssp/gspフラグ付きのNext.jsの__NEXT_DATA__や、self.__next_f内のReact Server Componentsペイロードなど)からレンダリング方式を読み取ります。
通常のブラウザに加えてGooglebotとしても取得することで、1回のリクエストでは分からない2つのことが分かります。ブラウザがページを受け取る一方でボットが403や429を受け取るなら、WAFやボット対策ルールがクローラーをブロックしています — インデックスされないページの意外に多い原因です。ボットがブラウザより大幅に多いテキストを受け取るなら、サイトはクローラー向けにダイナミックレンダリングやプリレンダリングサービスを使っています。これは正当ですが、実際のページと同期を保つ必要があります。処理はすべて当方のメモリ上で行われ、HTMLは解析後に破棄され、返されるのは算出された数値と500文字のテキストサンプルだけです。
よくある質問
- 自分のサイトがサーバーサイドレンダリングかどうかはどう分かりますか?
- ここにURLを貼り付けてください。HTMLにすでに見出し・本文・リンクが含まれていれば — チェッカーが数百語、空でないアプリコンテナ、titleを表示すれば — ページはサーバーレンダリングか静的生成です。数語と空の#rootや#appが表示されるなら、コンテンツはブラウザでJavaScriptにより構築されています。手動で確認するには「ページのソースを表示」(レンダリング後のDOMを表示するDevToolsのインスペクターではなく)を使うか、JavaScriptを無効にしてください。
- このチェッカーはJavaScriptを実行しますか?
- いいえ、意図的に実行しません。サーバーが送るものをそのまま表示します。これは第1波のクローラー、リンクプレビューのボット、ほとんどのAIフェッチャー、多くのSEOツールが見るものと同じです。GoogleのリッチリザルトテストとサーチコンソールのURL検査はJavaScript実行後の結果を表示します。両方を併用してください:配信内容を知るにはこのツール、Googleが何をレンダリングするかを知るにはGoogleのツールを。
- 「部分的にレンダリング」とはどういう意味ですか?
- HTMLに少量のコンテンツを含むシェルがある状態です — 多くの場合ヘッダー・フッター・ナビゲーションはサーバーから来て、メインコンテンツ(商品一覧、記事本文、検索結果)は読み込み後にJavaScriptで取得・描画されます。フォールバックシェルとして配信されたNext.jsのgetStaticPropsページや、スクリプト量に対して可視テキストが極端に少ないページも同じ判定になります。テキストサンプルでどのコンテンツが欠けているかを確認し、初期HTMLに移してください。
- なぜGooglebotとブラウザで結果が違うのですか?
- よくある理由は3つです。WAFやボット対策ルールがGooglebotのユーザーエージェントをブロックしている(HTTP 403/429/503) — 本物のGooglebotはIPでも検証されますが、UAベースのブロックは強いシグナルです。ダイナミックレンダリング構成(Rendertron、Prerender.io、CDNワーカー)がクローラーにだけプリレンダリング済みHTMLを配信している。あるいはサイトがユーザーエージェントや言語でパーソナライズしている。1つ目は修正が必要、2つ目は両バージョンが同じコンテンツなら問題なし、3つ目はクローキングのリスクを確認すべきです。
- クライアントサイドレンダリングは常にSEOに悪いのですか?
- 常にではありませんが、常に遅く、リスクが高くなります。Googleは通常いずれレンダリングしてインデックスしますが、Bingや他のほとんどの検索エンジン、SNSプレビュー、AIクローラーはしません。ランキングや共有が必要なページ — ランディングページ、商品ページ、記事 — ではコンテンツを初期HTMLに含めるべきです。ログイン後のダッシュボードやインデックス不要のアプリ画面はクライアントレンダリングのままで構いません。
- どのフレームワークやプラットフォームを認識しますか?
- Next.js(App RouterとPages Router、getServerSidePropsとgetStaticPropsの区別)、Nuxt 2と3、Remix、React Router 7、Gatsby、Astro、Docusaurus、SvelteKit、SolidStart、Qwik、Angular(SSRあり/なし)、マウントポイントによる素のReactとVueアプリ、そして一般的なサーバーレンダリングプラットフォーム:WordPress、Shopify、Wix、Webflow、Squarespace、Framer、HubSpot、Drupal、Joomla、Ghost、Magento、Hugo、Jekyll、Eleventy、トルコのECプラットフォームTicimax、IdeaSoft、T-Soft。それ以外はHTMLコンテンツのみで判定します。
- URLやページ内容は保存されますか?
- いいえ。ページはメモリに取得され、解析後に破棄されます。エンドポイントはno-storeを設定し、URLのログを保持せず、insighthackerz.comからのリクエストにのみ応答します。このページに表示されるもの — 集計値、ヘッダー、500文字のテキストサンプル — がサーバーから出るすべてです。