Core Web Vitals完全ガイド2026

LCP・INP・CLSをフィールドデータで読み解き、原因のレイヤーを切り分けて、検索順位を約束せずにユーザー体験を改善する方法を解説します。

Core Web Vitals(CWV)は、実際のユーザー体験を測るGoogleの指標群です。読み込み速度、操作への反応、表示の安定性を対象とします。2021年5月からページエクスペリエンスの一部となり、検索順位にも影響します。

3つの指標はいずれもURL単位で評価されます。トップページのスコアが良くても、商品ページの評価は上がりません。Googleが使うのは、ラボのシミュレーションではなくChromeユーザーエクスペリエンスレポート(実ユーザーのデータ)です。

3つのCore Web Vitals指標と「良好」のしきい値。実ユーザーの75%が良好の範囲に入ると、そのページは良好と判定されます。
GoogleはCWVをp75(75パーセンタイル)で評価します。実ユーザーの75%が良好の範囲で体験できていれば、そのページは「良好」です。Lighthouseなどのラボツールが示すのは中央値に近い端末の結果で、診断には役立ちますが、最終的な評価にはなりません。

Core Web Vitalsとは

≤ 2.5秒

LCP — 良好

最大要素の描画完了

≤ 200ミリ秒

INP — 良好

入力に画面が反応するまで

≤ 0.1

CLS — 良好

レイアウトのずれが最小限

75%

評価のしきい値

良好の範囲に入るユーザーの割合

歴史:FIDからINPへ

GoogleがCore Web Vitalsを導入したのは2020年で、指標はLCP、FID(First Input Delay)、CLSの3つでした。FIDが測るのは最初のタップの遅延だけです。有用ではあるものの、ページの操作性の一部しか捉えていませんでした。

2020年5月Core Web Vitals発表

GoogleがLCP、FID、CLSの3指標を発表。各ツールが新しいシグナルに対応し始めます。

2021年6月ページエクスペリエンス アップデート

CWVが正式に検索アルゴリズムへ組み込まれます。展開は2021年8月に完了しました。

2024年3月FID → INP

Interaction to Next PaintがFirst Input Delayに替わりました。INPは最初の1回だけでなく、セッション中のすべての操作が対象です。

2025〜2026年INPの実態

JavaScriptの多いサイト(SPA、EC、絞り込み機能)はINPの影響を受けやすく、Long Taskの最適化が優先課題になっています。

LCP — Largest Contentful Paint

LCPは、ページ内で最も大きなコンテンツ要素の描画が完了した時点を記録します。多くの場合は、メインビジュアルの画像、記事のカバー画像、大きなH1見出しのいずれかです。

LCPの値評価対応
≤ 2.5秒良好現状を維持し、Google Search Consoleで監視
2.5〜4.0秒要改善画像を最適化し、TTFBを短縮
> 4.0秒不良最優先で対応。ただちに監査

LCPが遅くなる主な原因

  • TTFBが遅い(サーバー、CDN、キャッシュなし)。LCP時間の最大40%を占めます
  • メインビジュアルの画像が優先されていない(fetchpriority="high"がない)
  • メインビジュアルの画像をプリロードしていない(<link rel="preload">)
  • レンダリングをブロックするCSS/JSで最初の描画が遅れる
  • 画像が大きすぎる(WebP/AVIFを使っていない、srcsetがない)
  • LCP要素がJavaScriptの描画待ちになっている(LCPの時点でReactのSSRが完了していない)
LCPリソースを優先する例:
html
<!-- Prioritise the LCP image -->
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high" />

<img
  src="/hero.webp"
  alt="Hero"
  fetchpriority="high"
  loading="eager"
  decoding="async"
  width="1280"
  height="720"
/>
メインビジュアルの画像にloading="lazy"は使わないでください。ブラウザーが読み込みを後回しにし、LCPが悪化します。lazyはファーストビューより下の画像だけに使います。

INP:Interaction to Next Paint(操作への反応)

INPは、ユーザーの操作(クリック、キー入力、タップ)から、画面が次に描画されるまでの遅延を測ります。FIDと違い、セッション中のすべての操作を追跡し、最も悪い値を採用します(外れ値は除外)。

INPの内訳

INP = 入力遅延 + 処理時間 + 表示遅延

入力遅延(待ち時間)最大50ミリ秒
処理時間(JSハンドラー)最大100ミリ秒
表示遅延(レンダリング + 描画)最大50ミリ秒

INPを悪化させる要因

  • 50ミリ秒を超えるLong Taskがメインスレッドを占有し、入力を処理できない
  • 重いイベントハンドラー(Reactの同期的なsetState、DOMの一括更新など)
  • scheduler.yield()やsetTimeout(0)でLong Taskを分割していない
  • サードパーティスクリプト(チャット、広告、アクセス解析)がメインスレッドを使う
  • CSSのtransform/opacityではなくJavaScriptでアニメーションしている
schedulerでLong Taskを分割する例:
javascript
// Breaking up a Long Task with scheduler.yield()
async function processLargeList(items) {
  for (let i = 0; i < items.length; i++) {
    processItem(items[i]);
    // Yield to the main thread every 50 items
    if (i % 50 === 0) {
      await scheduler.yield();
    }
  }
}
scheduler.yield()はsetTimeout(0)の新しい代替手段です。ブラウザーに制御を返して入力を処理させ、その後でタスクを再開します。Chrome 115以降で利用できます。それ以外のブラウザーではsetTimeoutでポリフィルします。

CLS — Cumulative Layout Shift

CLSは単位のない指標で、ページ要素が予期せず動いた量の合計を表します。計算式は影響範囲 × 移動距離です。ユーザーが押したボタンの移動はカウントされず、ユーザーの操作と無関係に動いた要素だけが対象です。

CLSの値評価典型的な原因
≤ 0.1良好すべての要素にスペースを確保済み
0.1〜0.25要改善font-display: swapのないフォント、バナー
> 0.25不良サイズ指定のない画像、動的に挿入される要素

CLSの主な発生源

  • widthとheight属性のない画像。読み込み前にブラウザーがサイズを把握できない
  • font-display: optionalやswapを指定していないウェブフォント。FOUTでテキストがずれる
  • 動的に挿入されるバナーやページ上部のCookie通知
  • transformではなくtop/left/marginを変えるCSSアニメーション
  • スペースを確保していない広告(コンテナーにmin-heightがない)
CLSを防ぐためにスペースを確保する例:
css
/* Reserve space for an ad slot */
.ad-container {
  min-height: 250px;
  width: 100%;
}

/* Animation without CLS: transform and opacity only */
.card:hover {
  transform: translateY(-4px);
  /* Wrong: margin-top: -4px — this shifts layout */
}

検索順位への影響

GoogleはCWVについて、検索順位に関わるページエクスペリエンスのシグナルの1つだと認めています。ただし同点時の決め手であって、主要な要因ではありません。コンテンツが優れていてCWVが悪いページは、CWVが優れていてコンテンツが弱いページより上位に表示されます。

CWVが実際にもたらす効果として、良好の範囲にあるサイトは直帰率が低く、Google Search Consoleのページエクスペリエンスレポートにも表れます。簡単な確認方法は、同程度のコンテンツで競合が上位にいる場合に、その競合のCWVをPageSpeed Insightsで調べることです。

間接的な効果のほうが重要です。速いページは直帰率を下げ、セッションの深さとコンバージョンを高めます。CWVはSEOよりも、ビジネス面の根拠のほうが強力です。Amazonの調査では、LCPが100ミリ秒遅くなると売上が1%減少したとされています。

Core Web Vitalsの測定方法

データには2種類あります。ラボデータ(シミュレーション:Lighthouse、WebPageTest)とフィールドデータ(実ユーザー:CrUX、GSC)です。Googleが順位の判断に使うのはフィールドデータで、ラボデータは診断用です。

種類ツールわかること用途
フィールドGoogle Search Consoleサイト内全URLのCWV(p75)問題のあるページの優先順位付け
フィールドCrUXダッシュボード(Looker)28日間の推移経時的な改善の追跡
ラボPageSpeed InsightsLCP/INP/CLSと改善提案特定URLの診断
ラボLighthouse(DevTools)詳細なウォーターフォール、トレース根本原因の詳細分析
ラボWebPageTest動画記録、フィルムストリップ改善前後の比較
PageSpeed Insightsは両方のデータを1ページに表示します。上部がフィールドデータ(CrUX)、下部がラボデータ(Lighthouse)です。状態の評価にはフィールドデータ、原因の特定にはラボデータを使います。

診断ツール

ツール無料LCPINP
Google Search Consoleはい✓✓
PageSpeed Insightsはい✓✓
Chrome DevToolsはい✓✓
Lighthouse CIはい✓✓
WebPageTestはい(制限あり)✓✓
SpeedCurve有料✓✓
Sentry(web-vitals SDK)フリーミアム✓✓
同じツールのCLSとフィールドデータ:
ツールCLSフィールドデータ
Google Search Console✓✓
PageSpeed Insights✓✓ (CrUX)
Chrome DevTools✓—
Lighthouse CI✓—
WebPageTest✓—
SpeedCurve✓✓
Sentry (web-vitals SDK)✓✓
本番環境の監視には、Googleのweb-vitals JSライブラリを追加します。実ユーザーのCWVを収集し、アクセス解析ツール(GA4、Sentry、DataDog)へ送信できます。
javascript
// web-vitals v4 — collect real CWV
import { onLCP, onINP, onCLS } from 'web-vitals';

function sendToAnalytics({ name, value, id }) {
  // Send to GA4
  gtag('event', name, {
    value: Math.round(name === 'CLS' ? value * 1000 : value),
    metric_id: id,
    metric_delta: value,
  });
}

onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);

最適化チェックリスト

GoogleのCore Web Vitalsしきい値(LCP、INP、CLS)。

LCP

  • メインビジュアルの画像にfetchpriority="high"を付け、loading="lazy"を外す
  • <head>内に、メインビジュアル用の<link rel="preload" as="image">を追加する
  • 画像をWebPまたはAVIFに変換し、srcsetを設定する
  • TTFBを800ミリ秒以下に短縮する(CDN、キャッシュ、エッジSSR)
  • レンダリングをブロックするスクリプトを<head>から外す(async/defer/module)
  • 静的アセットにCache-Control: max-age=31536000を設定する

INP

  • Chrome DevTools → Performance → Main ThreadでLong Taskを調べる
  • 50ミリ秒を超えるタスクをscheduler.yield()やsetTimeout(0)で分割する
  • input/scrollハンドラーをデバウンスする(16〜100ミリ秒)
  • Reactを最適化する(useMemo、useCallback、React.memo、リストの仮想化)
  • サードパーティスクリプトをWeb Workerへ移すか、LCPの後に読み込む
  • CSSアニメーションはtransformとopacityだけにする

CLS

  • すべての<img>要素にwidthとheightを指定し、ブラウザーにスペースを確保させる
  • サイズが不明なコンテナーにはaspect-ratioを使う
  • 重要なフォントにはfont-display: optionalを設定する
  • 広告枠や動的コンテンツにmin-heightを確保する
  • 通知(Cookie、バナー)はページ上部ではなく下部に置く
  • FOUTを確認する(フォールバックのないフォントは読み込み時にテキストがずれる)
優先順位:まずLCPから始めます。最も赤になりやすく、ページエクスペリエンスの中でも比重が大きい指標です。LCPが良好になったら、次にINP(SPAやインタラクティブなページで重要)、最後にCLSへ進みます。
Core Web Vitalsとは何ですか?SEOでなぜ重要ですか?
Core Web Vitalsは、読み込み、応答性、表示の安定性を測る指標です。Googleによると、検索のランキングシステムはより広いページエクスペリエンスの一部としてこれらを使います。ただしスコアが良くても上位表示が保証されるわけではなく、関連性などほかのシグナルも影響します。
自分のサイトのCore Web Vitalsはどう確認しますか?
Google Search Console(Core Web Vitalsレポート)、PageSpeed Insights(実ユーザーのCrUXデータ + ラボデータ)、Chrome DevToolsのPerformanceタブ、Lighthouseで確認できます。継続的に監視するなら、web-vitals.jsライブラリを組み込み、データをGA4に送信します。
LCPが4秒を超えています。どのくらい急いで直すべきですか?
ユーザー体験の問題として、診断の優先度を上げて扱います。LCP要素、その配信経路、影響を受けている端末グループを特定し、変更の効果をラボとフィールドの両方のデータで確認します。1つの修正で順位や時期の結果を約束することはできません。
Core Web Vitalsのしきい値はモバイルとデスクトップで同じですか?
しきい値は同じです(LCP ≤ 2.5秒、INP ≤ 200ミリ秒、CLS ≤ 0.1)。ただしスコアは別々に測定されます。モバイルはCPUと回線が遅いため、ほぼ常にスコアが低くなります。GSCは両方のセグメントを表示するので、モバイルを優先します。
ECではLCPとCLSのどちらが重要ですか?
コンバージョンへの影響が大きいのはLCPです。商品ページやランディングページでメイン要素の表示が遅いと、売上が直接下がります(Googleのデータでは、LCPが0.1秒遅くなるごとにコンバージョンが約1%低下)。UXに響くのはCLSです。カーソルの下で購入ボタンがずれると、離脱の直接の原因になります。両方を並行して進めます。

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it