Все посты
Обновлено 9999+ 2 Знания

Как оптимизировать CLS в 2026 году: что такое Cumulative Layout Shift и как уменьшить сдвиги макета

Что такое CLS (Cumulative Layout Shift), как проверить этот показатель Core Web Vitals и довести его до нормы, чтобы не терять посетителей и позиции сайта. Материал обновлен 05.03.26.

Краткое саммари

CLS (Cumulative Layout Shift) — метрика Core Web Vitals, которая показывает, насколько стабилен макет страницы при загрузке. Высокий CLS раздражает пользователей и может снижать позиции сайта в Google и Яндексе. В статье разбираем, что влияет на CLS, как его проверить и какие способы оптимизации актуальны в 2026 году.

Кому стоит прочитать:

  • SEO-специалистам, которые работают над Core Web Vitals;
  • Веб-разработчикам, которые верстают адаптивные страницы;
  • Владельцам сайтов, у которых PageSpeed показывает проблемы с CLS;
  • Маркетологам, которые хотят снизить показатель отказов и улучшить поведенческие факторы.

Вы читаете статью онлайн, и вдруг на странице что-то меняется — текст уезжает, и вы теряете место, на котором остановились. Или хотите нажать одну кнопку, а страница сдвигается, и вы попадаете на совсем другую.

Сдвиг макета страницы — пользователь промахнулся мимо кнопки
Из-за сместившихся кнопок пользователь промахнулся

В большинстве случаев это раздражает, а иногда может нанести реальный ущерб — к примеру, если из-за сдвига кнопки вы случайно соглашаетесь что-то купить или оформляете ненужную подписку.

Нестабильный макет — частая проблема сайтов, из-за которой уходят посетители. С 2021 года Google учитывает визуальную стабильность страниц при ранжировании через метрику CLS, а Яндекс тоже обращает внимание на поведенческие факторы, связанные с удобством сайта. Разберёмся, как выявить и устранить проблемы с CLS.

Причины сдвигов макета на странице

Неожиданные сдвиги содержимого обычно случаются из-за асинхронной загрузки ресурсов или динамического добавления элементов DOM над уже отрендеренным контентом.

Типичные причины сдвига макета:

  • Изображения и видео без указанных размеров. Браузер не знает, сколько места им отвести, и перестраивает макет после загрузки. По данным web.dev, это причина около 60% всех проблем с CLS.
  • Веб-шрифты. Кастомный шрифт загружается позже запасного и отличается по размерам — текст перестраивается, элементы ниже сдвигаются.
  • Рекламные блоки и сторонние виджеты. Баннеры, встраиваемые видео и виджеты подгружаются асинхронно и занимают непредсказуемое пространство.
  • Динамически вставленный контент. Уведомления, баннеры cookie-согласия и промо-блоки, которые появляются над видимой областью страницы.

Ещё одна причина — разница между средой разработки и реальными условиями. У разработчика изображения лежат в кэше, локальные вызовы API выполняются мгновенно, шрифты уже загружены. Пользователь видит страницу впервые, и все задержки складываются.

FAQ: причины сдвигов макета

Почему сдвиги макета чаще происходят на мобильных устройствах?

На мобильных ширина экрана меньше, поэтому даже небольшое изменение размера элемента вызывает заметный сдвиг. Мобильный интернет медленнее — ресурсы загружаются дольше, и промежуток между появлением контента и подгрузкой медиа увеличивается.

Влияют ли сдвиги макета на конверсию?

Да. Когда кнопки и формы сдвигаются в момент клика, пользователи могут случайно нажать не туда или потерять доверие к сайту. Улучшение CLS коррелирует со снижением показателя отказов и ростом конверсий.

CLS — что это за метрика и как она рассчитывается

Сдвиг макета происходит каждый раз, когда видимый элемент изменяет своё положение от одного отрисованного кадра к другому.

CLS (Cumulative Layout Shift) — совокупный сдвиг макета, одна из трех ключевых метрик Core Web Vitals. Вместе с LCP (Largest Contentful Paint) и INP (Interaction to Next Paint) CLS формирует общую оценку качества пользовательского опыта.

Как рассчитывается CLS

В 2021 году Google изменил способ расчёта CLS. Раньше метрика суммировала абсолютно все сдвиги за всё время жизни страницы — это было несправедливо для длинных сессий и одностраничных приложений (SPA).

С Chrome 91 CLS рассчитывается через сессионные окна:

  • Сдвиги макета группируются в окна. Новое окно начинается с первого сдвига.
  • Окно расширяется, пока между сдвигами не проходит более 1 секунды.
  • Максимальная длительность одного окна — 5 секунд.
  • Итоговый CLS — максимальное значение среди всех сессионных окон, а не сумма всех сдвигов.

После этого изменения 30% сайтов получили улучшенные показатели CLS без каких-либо правок — новая формула точнее отражает реальный опыт пользователей.

Чем ниже показатель CLS, тем лучше.

Сайты должны стремиться к тому, чтобы CLS не превышал значение 0,1. Хороший порог — когда не менее 75% сессий (отдельно по мобильным и настольным устройствам) укладываются в это значение. CLS выше 0,25 Google считает плохим показателем.

Шкала CLS — хорошие, средние и плохие значения
Шкала CLS: до 0,1 — хорошо, 0,1–0,25 — требует улучшения, выше 0,25 — плохо

FAQ: метрика CLS

Какое нормальное значение CLS?

Google считает хорошим CLS ниже 0,1. Диапазон от 0,1 до 0,25 — сигнал о необходимости оптимизации. Значения выше 0,25 указывают на серьезные проблемы с визуальной стабильностью.

Учитывает ли Яндекс метрику CLS при ранжировании?

Яндекс напрямую не использует CLS как фактор ранжирования, но учитывает поведенческие факторы: если пользователи быстро уходят со страницы из-за неудобного макета, это негативно влияет на позиции. В Яндекс.Вебмастере есть раздел с рекомендациями по скорости и удобству сайта.

Почему CLS считается по сессионным окнам, а не по сумме всех сдвигов?

Суммирование всех сдвигов за сессию давало несправедливо высокие баллы длинным страницам и SPA-приложениям. Пользователь мог видеть один небольшой сдвиг, но из-за долгой сессии CLS накручивался. Метод сессионных окон лучше отражает реальный негативный опыт.

Как проверить CLS: инструменты и сервисы

Chrome User Experience Report (CrUX) собирает данные реальных пользователей Chrome для метрик Core Web Vitals, включая CLS. На этих данных работают несколько бесплатных инструментов.

PageSpeed Insights

PageSpeed Insights — основной инструмент Google для проверки CLS и других показателей Core Web Vitals. Доступен из России, есть русскоязычный интерфейс. Показывает полевые данные (от реальных пользователей за последние 28 дней) и лабораторные данные (синтетический аудит Lighthouse).

Как проверить CLS в PageSpeed Insights
Отчёт в PageSpeed Insights

Google Search Console

Search Console показывает сводный отчет Core Web Vitals по всему сайту. Здесь видно, какие группы URL имеют проблемы с CLS, и можно отслеживать динамику после внесенных исправлений.

Отчёт Core Web Vitals в Google Search Console
Отчёт Core Web Vitals в Search Console

Chrome DevTools

Во вкладке Performance в Chrome DevTools можно записать загрузку страницы и увидеть все сдвиги макета. Они отмечаются красными маркерами LS (Layout Shift) на таймлайне. При клике на маркер видно, какие элементы сдвинулись и насколько — это помогает точно определить причину проблемы.

Проверка скорости от PR-CY

Ещё один вариант — проверить скорость сайта в инструменте PR-CY. Он анализирует процесс загрузки, раскладывает его по этапам и дает конкретные рекомендации по улучшению каждого показателя. Работает бесплатно.

Яндекс.Метрика

Для сайтов, ориентированных на российскую аудиторию, полезно отслеживать время загрузки через отчет по времени загрузки в Яндекс.Метрике. Метрика не показывает CLS напрямую, но фиксирует параметры загрузки (DNS, соединение, загрузка контента, DOM), которые косвенно влияют на визуальную стабильность.

FAQ: проверка CLS

Почему PageSpeed Insights и Chrome DevTools показывают разные значения CLS?

PageSpeed Insights в разделе полевых данных показывает реальный CLS от пользователей за 28 дней, а Lighthouse (лабораторные данные) измеряет CLS только во время первичной загрузки. Реальный CLS часто выше — он учитывает сдвиги при скролле, клике и взаимодействии с интерфейсом.

Как часто нужно проверять CLS?

После каждого значимого обновления: смены шаблона, добавления рекламных блоков, обновления шрифтов или подключения сторонних виджетов. Для автоматического мониторинга используйте Search Console — данные обновляются ежедневно.

Когда сдвиги макета допустимы

Элементы на странице могут меняться в ответ на действия пользователя: ввод текста в поисковую строку показывает подсказки, клик по аккордеону раскрывает содержимое, нажатие на кнопку открывает модальное окно. Если элементы появляются сразу в ответ на действие пользователя (в пределах 500 мс) — CLS за такие сдвиги не начисляется.

Если действие пользователя запускает сетевой запрос, требующий времени на загрузку, лучше заранее зарезервировать место под будущие элементы и показать индикатор загрузки — скелетон или спиннер. Пользователь увидит, что сейчас что-то появится, и не будет кликать в другие области.

Полезно по теме:
Юзабилити и психология: почему ваши клиенты не замечают изменений на сайте

Как отобразить новые элементы и не сбить с толку пользователя

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

CSS-свойство transform позволяет анимировать элементы, не вызывая сдвигов макета:

  • Вместо изменения height и width используйте transform: scale()
  • Для перемещения элементов вместо top, right, bottom, left используйте transform: translate()

FAQ: допустимые сдвиги макета

Считается ли сдвиг от раскрытия аккордеона (спойлера) в CLS?

Если раскрытие происходит в пределах 500 мс после клика, API Layout Instability помечает сдвиг как вызванный действием пользователя и не учитывает его в CLS. При задержке (например, подгрузка данных с сервера) сдвиг может быть засчитан.

Как анимация влияет на CLS?

Анимации через CSS-свойство transform не влияют на CLS — браузер рисует их на отдельном слое, не меняя положение элемента в документе. А вот анимации через top, left, width, height или margin вызывают пересчёт макета и могут увеличить CLS.

Как улучшить CLS: способы оптимизации

Большинство проблем с CLS можно устранить, следуя нескольким правилам. Вот что работает в 2026 году.

1. Указывайте размеры для изображений и видео

Всегда добавляйте атрибуты width и height к тегам <img> и <video>. Так браузер зарезервирует нужное пространство ещё до загрузки файла:

<img src="photo.jpg" width="800" height="450" alt="Описание">

2. Используйте CSS-свойство aspect-ratio

Свойство aspect-ratio — современная замена старому хаку с padding-top для резервирования пропорций. Оно поддерживается всеми актуальными браузерами (Chrome, Firefox, Safari, Edge) и задаёт соотношение сторон для любого элемента:

img {
  aspect-ratio: 16 / 9;
  width: 100%;
  height: auto;
}

.video-container {
  aspect-ratio: 16 / 9;
}

Используйте aspect-ratio для контейнеров видео, iframe, рекламных слотов и любых элементов с динамическим содержимым.

3. Оптимизируйте загрузку шрифтов

Веб-шрифты — частая причина сдвигов: текст сначала отображается запасным шрифтом, а потом перерисовывается кастомным, который может занимать больше или меньше места. Что поможет:

  • Добавьте font-display: swap в @font-face — текст сразу отобразится запасным шрифтом и сменится после загрузки
  • Предзагружайте критичные шрифты: <link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin>
  • Подберите запасной шрифт, близкий по размерам к основному, с помощью CSS-свойств size-adjust, ascent-override и descent-override

4. Резервируйте место под рекламу и встраиваемый контент

Не вставляйте контент поверх уже загруженного содержимого, если это не ответ на действие пользователя. Для рекламных блоков и виджетов:

  • Задавайте контейнерам фиксированный min-height, соответствующий типичному размеру баннера
  • Для iframe указывайте width и height
  • Если рекламный блок не загрузился, не схлопывайте контейнер — используйте заглушку, чтобы пространство оставалось занятым

5. Используйте content-visibility для длинных страниц

CSS-свойство content-visibility: auto откладывает рендеринг контента за пределами экрана до момента скролла. Это ускоряет начальную отрисовку. Чтобы при этом не возникали сдвиги, добавьте contain-intrinsic-size — он задаёт предполагаемый размер элемента до рендеринга:

.article-section {
  content-visibility: auto;
  contain-intrinsic-size: 0 500px;
}

Не применяйте content-visibility: auto к элементам в видимой области при загрузке — это может ухудшить показатели.

6. Используйте анимацию через transform

Для появления, перемещения и масштабирования элементов используйте CSS-свойство transform вместо свойств, влияющих на макет. transform: translate(), transform: scale() и opacity не вызывают пересчет макета и не увеличивают CLS.

7. Оптимизируйте bfcache

Back/forward cache (bfcache) — механизм браузера, который сохраняет снимок страницы в памяти при навигации вперёд/назад. Страница восстанавливается мгновенно, без повторной загрузки и сдвигов макета. Чтобы bfcache работал:

  • Не используйте заголовок Cache-Control: no-store без необходимости
  • Избегайте обработчиков события unload — замените их на pagehide
  • Убедитесь, что на странице нет незавершённых сетевых запросов при уходе пользователя

FAQ: оптимизация CLS

Какой способ дает самый быстрый эффект для CLS?

Добавление атрибутов width и height ко всем изображениям и iframe. Это самое простое изменение, которое часто сразу снижает CLS до нормы — по статистике, отсутствие размеров у медиа вызывает около 60% всех сдвигов.

Нужно ли оптимизировать CLS, если сайт продвигается только в Яндексе?

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

Как CSS-свойство aspect-ratio помогает с CLS?

Свойство aspect-ratio задает соотношение сторон элемента до загрузки содержимого. Браузер заранее резервирует пространство нужных пропорций, и при загрузке изображения или видео макет не сдвигается. Работает надежнее старого подхода с padding-top.

Возьмите под контроль продвижение своего сайта
Исправьте ошибки, которые мешают сайту выйти в топ, и вы увидите рост трафика и дохода.
🔍 Подпишись на @prcynews в телеграм — оставайся в курсе последних SEO новостей и свежих материалов.

Теги поста или какие разделы почитать еще:

Комментарии (2)
С CLS бывают абсурдные ситуации, когда нет возможности точно определить реальные причины и размер смещения макета, вот пример: https://support.google.com/webmasters/thread/69050888?hl=ru
Так что не так всё однозначно с этой метрикой. Визуально никаких смещений нет, однако наблюдения Page Speed и консоль гугла говорят, что они есть, но в то же время инструменты разработки Хрома не выявляют смещение. Замкнутый круг - исправляй ошибки, которые явно нигде не указаны, и которые увидеть нет возможности и вообще не ясно есть ли они реально на сайте (может вообще метрика CLS недоработанная либо синхронизация сервисов гугла храмает). Вот вам и Гугл со своими инструментами разработки.
К данной записи нельзя добавлять комментарии, т.к. она очень старая.
Как ускорить загрузку сайта: полное руководство по оптимизации скорости
Топ-11 менеджеров паролей в 2026: лучшие программы для безопасного хранения паролей
Топ-12 лучших нейросетей для создания видео: сравнение, цены, обзоры
SEO‑тренды 2026: AI Overviews, Яндекс Нейро и контент, который приносит трафик
GEO-продвижение в 2026: как попасть в ответы ChatGPT, Perplexity и ЯндексGPT
Mobile-first индексация Google: как подготовить сайт и не потерять позиции