Mobile · CWV

CLS

Cumulative Layout Shift · Накопленный сдвиг макета

CLS (Cumulative Layout Shift) — это метрика Core Web Vitals, которая измеряет суммарный визуальный сдвиг элементов страницы при загрузке. Хороший показатель — менее 0,1.

CLS (Cumulative Layout Shift) — это метрика Core Web Vitals, которая простыми словами показывает, насколько сильно прыгают элементы страницы во время загрузки. Google ввёл показатель в мае 2020 года, а с июня 2021 года CLS стал фактором ранжирования в Page Experience Update.

Накопленный сдвиг макета влияет на удобство мобильных пользователей: баннер, подгружаемый с задержкой, сдвигает текст и провоцирует ошибочные клики. Что это значит на практике — порог 0,1 разделяет сайты на удобные и проблемные, а данные собираются в отчёте Core Web Vitals в Search Console на основе CrUX за последние 28 дней.

§ 01Как считается

Накопленный визуальный сдвиг считается как сумма произведений impact fraction на distance fraction для каждого неожиданного смещения. С августа 2021 года Google перешёл на сессионные окна: учитывается худшее окно длиной до 5 секунд с паузами не более 1 секунды между сдвигами. Сдвиги по действию пользователя (клик, ввод) в течение 500 мс не засчитываются. Что делает эту схему честнее — CLS уже не растёт бесконечно на длинных лентах.

Формула / схема
CLS = Σ(impact_fraction × distance_fraction)
Сумма берётся в худшем сессионном окне до 5 секунд. Значение ниже 0,1 считается хорошим, выше 0,25 — плохим по нормативам Google.

§ 02Зачем нужно

Зачем нужен CLS — он отражает реальное раздражение пользователя, когда кнопка "Купить" уезжает вниз и палец попадает в рекламу. Исследование Google 2020 года показало, что сайты, прошедшие пороги Core Web Vitals, на 24% реже теряют посетителя до загрузки. Накопленный сдвиг макета входит в тройку CWV вместе с LCP и INP (заменил FID в марте 2024). Хороший CLS — менее 0,1, требует улучшения — 0,1–0,25, плохой — выше 0,25.

Кейс e-commerce

CLS 0.32 → 0.04 — Маркетплейс одежды на Shopify Plus зарезервировал размеры под баннеры и lazy-блоки через aspect-ratio и width/height в img. CLS упал с 0.32 до 0.04 за 4 недели. Замер по CrUX-75th и PSI, конверсия мобайла выросла на 9%.

Замер до и после

CLS 0.18 → 0.07 — Издание о финансах на WordPress вынесло AdSense-блоки в контейнеры фиксированной высоты и подгрузило шрифты через font-display: optional. CLS снизился с 0.18 до 0.07 за 3 недели. Контроль через Search Console Core Web Vitals и Web Vitals JS.

§ 03Как измерить

Лабораторные данные смотрят в PageSpeed Insights, Lighthouse и DevTools во вкладке Performance — там подсвечиваются конкретные сдвинутые элементы. Полевые данные по реальным пользователям Chrome берутся из CrUX и отчёта Core Web Vitals в Search Console: группировка идёт по URL-паттернам. Для постоянного мониторинга подойдут web-vitals.js от Google, GA4 с кастомным событием или сервисы вроде SpeedCurve и Treo.

§ 04Что делать дальше

Чтобы снизить CLS, задавайте width и height для img и video — браузер зарезервирует место. Для шрифтов используйте font-display: optional или предзагрузку через <link rel=preload>, чтобы избежать FOUT. Резервируйте место под рекламные блоки фиксированной высотой, а динамический контент вставляйте над вьюпортом или после действия пользователя. Накопленный визуальный сдвиг также режут CSS transform вместо изменения top/left — анимации не вызывают reflow.

Частые ошибки
01
Расчёт CLS только по lab-данным PageSpeed. Синтетика показывает 0,05, а реальные пользователи получают 0,25 из-за поздней загрузки баннеров и шрифтов. Google ранжирует по CrUX — мобильный трафик из топа уходит. Как правильно: Замеряйте поле через CrUX и Search Console — отчёт Core Web Vitals, а не лабораторный PSI.
02
Вёрстка изображений и iframe без width/height. Браузер не знает размер блока до загрузки и сдвигает контент вниз. У карточек товаров и статей CLS улетает за 0,25, а конверсия мобильной выдачи падает на 10–20%. Как правильно: Указывайте width и height у всех img, video, iframe и резервируйте место под рекламу через min-height контейнера.
03
Замер CLS сразу после деплоя правок. CrUX обновляется по 28-дневному окну, поэтому через 2–3 дня вы видите старые цифры и думаете, что фикс не сработал. Команда откатывает рабочие изменения и теряет неделю. Как правильно: Сравнивайте CrUX через 28 дней после релиза, а в первые сутки проверяйте Web Vitals JS-библиотекой на проде.
Часто спрашивают

CLS частые вопросы про метрику

CLS простыми словами — что это и что показывает?

+

CLS (Cumulative Layout Shift) — метрика из Core Web Vitals, показывающая, насколько сильно элементы страницы ‘прыгают’ во время загрузки. Считается как сумма произведений доли затронутой области экрана на дистанцию сдвига. Замеряется в Lighthouse, PageSpeed Insights и отчёте Chrome UX Report.

Хорошо — до 0,1; требует улучшения — от 0,1 до 0,25; плохо — выше 0,25. Эти пороги Google зафиксировал в 2020 году и с тех пор использует их при оценке Page Experience для мобильной и десктопной версии отдельно.

Основные причины: изображения и видео без атрибутов width/height, шрифты с эффектом FOIT/FOUT, поздно подгружаемые баннеры и виджеты, динамически вставляемый контент над уже видимым. По данным web.dev, до 70% сдвигов даёт реклама и медиа без зарезервированного места.

Зарезервируйте размеры через атрибуты width, height и CSS aspect-ratio, используйте font-display: optional или preload для шрифтов, выделяйте контейнеры под рекламу заранее. Для анимаций применяйте transform вместо изменения top/left — такие изменения не учитываются в метрике.

Да, с июня 2021 года показатель входит в сигнал Page Experience и используется как фактор ранжирования, особенно при равенстве релевантности. Влияние небольшое, но плохой Layout Shift ухудшает поведенческие: пользователи чаще промахиваются по кнопкам и уходят, что косвенно тянет позиции вниз.

Не нашли ответ?

Спросите Андрея Гусарова — отвечаю в течение 1-2 рабочих дней.

Нажимая, вы соглашаетесь с обработкой данных.