К содержанию

Wiki · Техническая оптимизация

CLS (Cumulative Layout Shift)

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

Знакомая ситуация: вы читаете статью с телефона, и вдруг текст уезжает вниз, потому что сверху загрузился баннер. Или целитесь в кнопку «Оформить заказ», а под палец в последний момент подъезжает «Удалить из корзины». Именно такие сдвиги и считает CLS. Чем их больше и чем они крупнее, тем выше значение метрики и тем хуже.

Какие значения считаются хорошими

CLSОценка Google
0,1 и меньшеХорошо
от 0,1 до 0,25Требует улучшения
больше 0,25Плохо

Оценивают не одно открытие страницы, а 75-й процентиль по реальным посетителям, отдельно для мобильных и компьютеров. То есть у трёх посетителей из четырёх сдвиги должны укладываться в норму. CLS входит в набор Core Web Vitals вместе с LCP и INP.

Пороги CLS по Google: 0,1 и меньше хорошо, больше 0,25 плохо, сдвиги в течение 500 мс после клика не учитываются
Пороги CLS по версии Google

Как считается CLS

Каждый сдвиг получает оценку по формуле: доля экрана, которую задел сдвиг, умноженная на расстояние сдвига в долях экрана. Пример на условных данных: блок занимает половину экрана и съезжает вниз на четверть высоты. Вместе со своим новым положением он задевает три четверти экрана, значит, первый множитель 0,75, второй 0,25, а оценка сдвига 0,1875. Один такой сдвиг уже выводит страницу из зелёной зоны.

Сдвиги, которые идут друг за другом с паузой меньше секунды, объединяются в «окно» длиной не больше пяти секунд. CLS страницы равен самому тяжёлому окну за всё время, пока страница открыта. Не учитываются сдвиги в течение 500 мс после клика или нажатия клавиши: если человек раскрыл блок кнопкой, он этого ждёт. Анимации через CSS-свойство transform тоже не считаются сдвигами.

Откуда берутся сдвиги и как их убрать

ПричинаЧто происходитКак исправить
Картинки и видео без размеровБраузер не знает высоту, пока файл не загрузитсяУказать width и height или aspect-ratio
Реклама, виджеты, баннерыБлок появляется позже и раздвигает соседейЗаранее задать место через min-height
Веб-шрифтыЗапасной шрифт меняется на основной, строки перестраиваютсяПодобрать запасной шрифт по метрикам, загрузить основной раньше
Плашки сверху страницыПлашка про cookies или приложение сдвигает весь контент внизПоказывать поверх страницы или внизу экрана
Анимации через top и leftКаждый кадр анимации пересчитывает раскладкуАнимировать через transform

Одна из самых частых причин: картинки без размеров. Лечится она двумя атрибутами:

<img src='/upload/sofa.jpg' width='800' height='600' alt='Угловой диван'>

/* или в CSS для адаптивного блока */
.banner { aspect-ratio: 16 / 9; }

Браузер сразу резервирует нужную высоту, и текст под картинкой остаётся на месте.

Схема: картинка без размеров сдвигает текст после загрузки и увеличивает CLS, картинка с width и height сразу получает своё место
Картинка без размеров и с размерами

Как измерить CLS

Данные бывают двух видов, и путать их нельзя. Полевые данные собираются у реальных посетителей Chrome, лабораторные получают в тестовом прогоне.

  • PageSpeed Insights показывает оба вида: полевые данные сверху, если у страницы хватает трафика, и лабораторный прогон Lighthouse ниже.
  • Отчёт об основных интернет-показателях в Google Search Console группирует страницы сайта с плохим CLS.
  • В Chrome DevTools на вкладке Performance видно, какой именно элемент сдвинулся и когда.

Lighthouse меряет только загрузку, а реальные посетители ещё прокручивают страницу, открывают блоки, ждут ленивую подгрузку. Поэтому полевой CLS часто выше лабораторного. Если лаборатория показывает ноль, а Search Console жалуется, ищите сдвиги после загрузки: при прокрутке и подгрузке товаров.

Пять шагов исправления CLS: найти страницы в Search Console, найти элемент в Chrome, понять причину, зарезервировать место и проверить
Как убрать сдвиги на странице

Плашка «Купить в рассрочку» сдвигает цену в карточке товара

В Search Console у интернет-магазина появилась группа из нескольких сотен карточек товаров с CLS около 0,3 на мобильных. На компьютерах всё зелёное. Открываем одну карточку в Chrome DevTools в режиме телефона и записываем загрузку с прокруткой. Видно, что после загрузки над ценой появляется плашка «Купить в рассрочку», которую подгружает скрипт банка. Цена и кнопка покупки уезжают вниз на высоту плашки.

Решение простое: оставить под плашку место заранее, задав блоку минимальную высоту, или вывести её ниже кнопки. После правки проверяем лабораторный результат сразу, а полевые данные в Search Console обновятся примерно через месяц.

Насколько CLS важен для SEO

Core Web Vitals входят в сигналы удобства страницы, которые учитывает Google. Но это не главный фактор: страница с отличным CLS и слабым ответом на запрос не обгонит полезную страницу с посредственной вёрсткой. Исправлять сдвиги стоит прежде всего ради людей: они реже промахиваются мимо кнопок и реже уходят с раздражением. Про общую картину скорости читайте в статье Скорость сайта.

Почему CLS не уходит из красной зоны после правок

  • Проверять только главную. Сдвиги чаще живут в карточках товаров и статьях с баннерами.
  • Смотреть только на лабораторный результат и считать, что всё в порядке.
  • Резервировать место под рекламу, которая потом показывается другого размера.

CLS и другие показатели Core Web Vitals проверяем на техническом аудите сайта, а исправления входят в работы по SEO-продвижению.

Как найти, исправить и проверить сдвиги на странице

Какой CLS нужен, чтобы страница прошла оценку Google?

0,1 и ниже, причём не в одном тесте, а у 75% реальных визитов. Мобильные и компьютеры Google оценивает по отдельности, так что зелёный CLS на десктопе ничего не говорит о телефонах.

Почему PageSpeed Insights показывает CLS 0, а Search Console жалуется на сдвиги?

Lighthouse в PageSpeed Insights видит только загрузку страницы в тестовом прогоне. Search Console берёт данные реальных посетителей Chrome за всё время на странице, включая прокрутку, раскрытие блоков и догрузку товаров. Если лаборатория чистая, а полевые данные красные, ищите сдвиги, которые случаются уже после загрузки.

Где увидеть, какой именно блок прыгает на странице?

В Chrome DevTools на вкладке Performance. Включите запись, обновите страницу и прокрутите её: сдвиги появятся отметками на шкале, а по клику на отметку DevTools подсветит элемент, который уехал. Мобильные проблемы ловите в режиме телефона, на широком экране они часто не повторяются.

Из-за чего CLS вырос после включения ленивой загрузки картинок?

Скорее всего, у картинок нет размеров. Пока файл не пришёл, браузер не оставляет под него места, а при прокрутке картинка загружается и раздвигает текст. Сдвиги во время скролла поблажки не получают и попадают в полевой CLS. Лечится так же, как с обычными картинками: width и height у тега или aspect-ratio у контейнера.

Почему раскрытие блока по клику не портит CLS, а подгрузка при прокрутке портит?

Сдвиг в течение полсекунды после клика, касания или нажатия клавиши Google считает ожидаемым: человек сам раскрыл блок. Прокрутка такой поблажки не даёт, поэтому догружающиеся товары, плашки и баннеры при скролле учитываются целиком.

Как зарезервировать место под баннер, если его размер заранее неизвестен?

Задайте контейнеру min-height под самый вероятный размер объявления, а надёжнее под самый крупный. Если пришёл баннер поменьше, останется пустая полоса, но страница не дёрнется. Рекламу, которая может вовсе не показаться, лучше не ставить в верхнюю часть первого экрана.

Как убрать скачок текста при загрузке веб-шрифта?

Сначала браузер рисует текст запасным шрифтом, а когда приходит основной, буквы меняют ширину и строки переносятся по-новому. Помогают два шага: запасной шрифт, близкий по метрикам к основному, и ранняя загрузка файла основного шрифта.

Через сколько Search Console покажет, что CLS исправлен?

Примерно через месяц. Отчёт строится по полевым данным за последние 28 дней, и визиты со старыми сдвигами уходят из него постепенно. Лабораторный результат в PageSpeed Insights проверяйте сразу после правки, а в Search Console запустите проверку исправления и дождитесь её итога.

Что важнее для позиций в Google: CLS или содержание страницы?

Содержание. Google учитывает Core Web Vitals среди сигналов удобства, но страница, которая хуже отвечает на запрос, не обгонит полезную только за счёт стабильной вёрстки. Чинить CLS стоит ради посетителей: они реже промахиваются и случайно жмут «Удалить из корзины» вместо оформления заказа.

Документация Google и web.dev

Остались вопросы по теме «CLS (Cumulative Layout Shift)»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ПимкинОтвечает по темеСергей ПимкинВедущий SEO-специалист

Тарифы

Тарифы по теме

Все тарифы →
от 70 000 ₽/мес при оплате за 3 месяца, помесячно 80 000 ₽

Стартовый тариф для небольшого бизнеса: наводим порядок на сайте и получаем первые заявки из Яндекса и Google.

  • Техническая оптимизация сайта
  • Контентная оптимизация
  • Семантическое ядро под город или регион
  • Настройка Яндекс Вебмастера и Google Search Console
  • Цели в Яндекс Метрике
  • Ежемесячный отчёт по позициям, трафику и заявкам
  • Оптимизация поведенческих факторов
  • Оптимизация коммерческих факторов и E-A-T
SEO ProХит
от 90 000 ₽/мес при оплате за 3 месяца, помесячно 99 000 ₽

Тариф для растущего бизнеса. Работаем на количество заявок: считаем звонки через коллтрекинг и дорабатываем сайт под конверсию.

  • Техническая оптимизация сайта
  • Контентная оптимизация
  • Семантическое ядро под город или регион
  • Настройка Яндекс Вебмастера и Google Search Console
  • Цели в Яндекс Метрике
  • Ежемесячный отчёт по позициям, трафику и заявкам
  • Оптимизация поведенческих факторов
  • Оптимизация коммерческих факторов и E-A-T
от 135 000 ₽/мес при оплате за 3 месяца, помесячно 149 000 ₽

Для масштабирования бизнеса: SEO, A/B-тесты, карточки в Яндекс.Бизнесе и 2ГИС, техподдержка сайта. Нейросети берут на себя рутину, итог проверяют специалисты.

  • Техническая оптимизация сайта
  • Контентная оптимизация
  • Семантическое ядро под город или регион
  • Настройка Яндекс Вебмастера и Google Search Console
  • Цели в Яндекс Метрике
  • Ежемесячный отчёт по позициям, трафику и заявкам
  • Оптимизация поведенческих факторов
  • Оптимизация коммерческих факторов и E-A-T

Проверим ваш сайт бесплатно

Экспресс-аудит за 24 часа: скорость, индексация, мета-теги, коммерческие факторы и цели Метрики.