← Главная / Блог / Скорость
Скорость 29.04.2026 · 8 мин чтения

Core Web Vitals: что это, как измерить и улучшить LCP, CLS, INP

Разбор трёх метрик Core Web Vitals: LCP (скорость загрузки), CLS (смещения), INP (отзывчивость). Пороговые значения, инструменты измерения, способы улучшения.

Core Web Vitals: что это, как измерить и улучшить LCP, CLS, INP

Сводная таблица пороговых значений

Метрика Хорошо Требует улучшения Плохо
LCP (загрузка) < 2.5 с 2.5 – 4 с > 4 с
CLS (стабильность) < 0.1 0.1 – 0.25 > 0.25
INP (отзывчивость) < 200 мс 200 – 500 мс > 500 мс

Что такое Core Web Vitals

Core Web Vitals (CWV) — это набор метрик, которые Google считает ключевыми для пользовательского опыта на вебе. В мае 2021 года они стали официальным сигналом ранжирования в рамках обновления Page Experience. Это означает, что плохие показатели CWV могут напрямую снижать позиции страниц в поиске.

В отличие от лабораторных метрик (таких как Lighthouse-оценка), CWV основаны на реальных данных пользователей (Chrome User Experience Report, CrUX). Google собирает эти данные на протяжении 28 дней, поэтому изменения видны не мгновенно.

Три метрики CWV охватывают три фундаментальных аспекта загрузки страницы:

  • LCP (Largest Contentful Paint) — скорость загрузки основного контента. Когда пользователь видит главный блок страницы?
  • CLS (Cumulative Layout Shift) — визуальная стабильность. Смещаются ли элементы страницы в процессе загрузки?
  • INP (Interaction to Next Paint) — отзывчивость интерфейса. Насколько быстро страница реагирует на действия пользователя?

Для ранжирования Google оценивает страницу как «хорошую», если 75-й перцентиль реальных посещений укладывается в пороговое значение «Хорошо» по всем трём метрикам одновременно.

LCP — Largest Contentful Paint

LCP фиксирует момент, когда в области просмотра отрисовывается самый крупный видимый элемент. Обычно это главное изображение, hero-блок, видео-постер или большой текстовый блок. Именно этот момент пользователь воспринимает как «страница загрузилась».

Пороговые значения LCP

< 2.5 с
Хорошо
2.5 – 4 с
Требует улучшения
> 4 с
Плохо

Основные причины плохого LCP

  • ! Медленный TTFB сервера — если сервер отвечает дольше 600 мс, LCP будет плохим ещё до начала рендеринга. Решение: кеширование на уровне сервера, CDN, оптимизация БД.
  • ! Render-blocking ресурсы — CSS и JS, загружаемые в <head> без defer/async, блокируют парсинг и откладывают LCP.
  • ! Неоптимизированные изображения — JPEG/PNG без WebP/AVIF, отсутствие fetchpriority="high" на LCP-элементе, lazy-loading на главном изображении.

Как улучшить LCP

<!-- Ускорить LCP-изображение -->
<link rel="preload" as="image" href="hero.webp" fetchpriority="high">

<!-- Атрибуты на img-элементе -->
<img src="hero.webp" alt="..." fetchpriority="high"
     width="1200" height="630"
     decoding="async">

<!-- Перенести некритичный JS -->
<script src="analytics.js" defer></script>

CLS — Cumulative Layout Shift

CLS измеряет визуальную стабильность страницы: суммирует все неожиданные смещения видимых элементов за время загрузки. Когда кнопка, на которую вы собираетесь нажать, вдруг прыгает вниз из-за появившегося баннера — это именно CLS.

Метрика рассчитывается как сумма произведений impact fraction (доля экрана, занятого смещением) и distance fraction (расстояние смещения относительно высоты экрана). Значение 0 — идеал, показывает отсутствие сдвигов.

Пороговые значения CLS

< 0.1
Хорошо
0.1 – 0.25
Требует улучшения
> 0.25
Плохо

Причины плохого CLS

  • ! Изображения без размеров — если у <img> не указаны width и height, браузер не резервирует место, и после загрузки картинки весь контент ниже прыгает.
  • ! Динамические блоки без резервирования места — баннеры, чаты, cookie-уведомления, которые «появляются» после загрузки страницы и сдвигают контент.
  • ! Шрифты с FOUT — Flash of Unstyled Text: когда системный шрифт заменяется веб-шрифтом с другим размером глифов, текст перескакивает.

Как исправить CLS

<!-- 1. Всегда указывать размеры изображений -->
<img src="photo.webp" width="800" height="450" alt="...">

<!-- 2. Зарезервировать место для баннера через CSS -->
.ad-slot { min-height: 90px; }

<!-- 3. Использовать font-display: optional для веб-шрифтов -->
@font-face {
  font-display: optional; /* не ждёт загрузки, без FOUT */
}

INP — Interaction to Next Paint

В марте 2024 года INP официально заменил FID (First Input Delay) в составе Core Web Vitals. Разница принципиальная: FID измерял только задержку первого взаимодействия, а INP оценивает все взаимодействия за время сессии (клики, нажатия клавиш, тапы) и берёт наихудший результат на уровне 98-го перцентиля.

INP фиксирует время от момента взаимодействия до следующего визуального обновления экрана. Если интерфейс «завис» после нажатия кнопки — это INP-проблема.

Пороговые значения INP

< 200 мс
Хорошо
200 – 500 мс
Требует улучшения
> 500 мс
Плохо

Причины плохого INP

  • ! Тяжёлые обработчики событий — синхронные вычисления в click/input-хендлерах блокируют главный поток и задерживают отрисовку.
  • ! Сторонние скрипты — чаты, аналитика, виджеты рекомендаций часто выполняют длинные задачи (Long Tasks >50 мс), которые блокируют реакцию на ввод.
  • ! Лишние DOM-операции — принудительный reflow при чтении геометрии элемента сразу после изменения стилей (layout thrashing).

Как улучшить INP

// Разбить длинную задачу на микрозадачи через scheduler.yield()
async function handleClick() {
  doFirstPart();
  await scheduler.yield(); // отдать управление браузеру
  doSecondPart();
}

// Отложить сторонние скрипты до idle
addEventListener('load', () => {
  requestIdleCallback(() => loadChatWidget());
});

Как измерить Core Web Vitals

Существует принципиальное различие между лабораторными данными (ваш тест прямо сейчас) и полевыми данными (реальные пользователи за 28 дней). Для ранжирования Google использует только полевые данные из CrUX. Лабораторные инструменты — для отладки.

Google PageSpeed Insights

Показывает и полевые (CrUX), и лабораторные данные. Бесплатно, доступен без авторизации. Незаменим для быстрой проверки одной страницы. Ограничение: нет массового анализа, данные по одному URL.

Google Search Console — отчёт «Основные показатели»

Агрегированные данные по всем страницам сайта из CrUX. Позволяет увидеть, сколько URL имеют статус «Плохо»/«Требует улучшения»/«Хорошо», и найти приоритетные проблемные кластеры. Только полевые данные.

Chrome DevTools — вкладка Performance

Детальная запись трассировки: Long Tasks, layout shifts, event handlers. Необходима для диагностики причин плохого INP и CLS. Только лабораторные данные — нужен тихий браузер без расширений.

Проверить Core Web Vitals своего сайта

Chexter запускает PageSpeed Insights API для мобильной и десктопной версий, показывает LCP, INP, CLS, TTFB, Lighthouse-оценку и список конкретных улучшений с приоритетами — без регистрации.

Проверить скорость сайта

Приоритизация исправлений

Не все три метрики одинаково влияют на SEO-результат. Вот рекомендуемый порядок работы:

1
LCP — начните отсюда

LCP напрямую коррелирует с конверсией и bounce rate. Исправление сервера и LCP-изображения даёт самый быстрый видимый результат — и в метриках, и в поведении пользователей. Начните с TTFB: если сервер отвечает медленно, никакие front-end оптимизации не спасут LCP.

2
CLS — часто дёшево и быстро

Добавить атрибуты width/height к изображениям или минимальную высоту для рекламных слотов — изменение на 30 минут, которое может поднять CLS с 0.3 до 0.05. Это редкий случай, когда вложения минимальны, а эффект огромен.

3
INP — требует диагностики

Плохой INP чаще всего означает тяжёлые сторонние скрипты или неоптимальный JS-код. Используйте Chrome DevTools Performance для записи трассировки и поиска Long Tasks. Это самая трудоёмкая из трёх метрик, но её улучшение заметно влияет на восприятие «живости» интерфейса.

Важно помнить: Google требует хорошего значения по всем трём метрикам одновременно — на 75-м перцентиле реальных посещений. Улучшение одной метрики при плохой другой не даёт статус «Хорошо» для страницы.

Проверить Core Web Vitals — проверьте свой сайт Бесплатно · Без регистрации · Отчёт за несколько секунд
Проверить Core Web Vitals →