Заявка
Mobile · CWV

srcset

атрибут адаптивных изображений

srcset — это атрибут тега img, который задаёт набор изображений разного размера. Браузер сам выбирает подходящую версию под экран и плотность пикселей, ускоряя загрузку страницы.

srcset — это атрибут тега img, который перечисляет несколько файлов одной картинки с указанием их ширины или плотности пикселей. Что это значит на практике: разметка отдаёт браузеру список вариантов, а он сам решает, какой файл скачать под конкретный экран. Работает атрибут в паре с sizes, где описана планируемая ширина изображения в разных раскладках макета.

Без адаптивной разметки изображений мобильное устройство тянет ту же тяжёлую версию, что и десктоп, и разгоняет вес страницы. Это бьёт по LCP — метрике из Core Web Vitals, где картинка часто оказывается крупнейшим элементом экрана. Проверить, какой файл реально загрузился, можно во вкладке Network в DevTools или через PageSpeed Insights.

§ 01Зачем нужен srcset

Задача атрибута — отдать маленькому экрану лёгкий файл, а плотному Retina-дисплею — версию с большим числом пикселей. Формат записи с дескриптором w выглядит так: img-480.jpg 480w, img-960.jpg 960w, img-1440.jpg 1440w. Браузер сопоставляет эти значения с шириной из sizes и плотностью экрана, после чего качает ровно один подходящий файл. Для чего нужно: сократить объём трафика на мобильных и ускорить отрисовку главного изображения, от которой зависит LCP.

§ 02Как устроен

Внутри атрибута — список пар через запятую: путь к файлу плюс дескриптор. Дескрипторов два вида. w задаёт реальную ширину файла в пикселях и работает вместе с sizes. x задаёт плотность: logo.png 1x, logo@2x.png 2x — без учёта размера вывода. Смешивать w и x в одном списке нельзя. Атрибут src при этом остаётся как запасной вариант для браузеров, которые механизм выбора картинки не поддерживают.

Кейс e-commerce

LCP 4.6 → 2.3 c — Интернет-магазин одежды на Shopify внедрил srcset с четырьмя размерами для карточек товара вместо одного тяжёлого файла. LCP на мобильных упал с 4.6 до 2.3 с за 5 недель, вес страницы −38%. Замер через PSI и CrUX-75th, отказы снизились на 11%.

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

трафик картинок +29% — B2B SaaS-медиа на WordPress добавил srcset и sizes в блог через плагин обработки изображений. Мобильный трафик из Google Картинок вырос на 29% за 4 месяца, время загрузки статей −1.4 с. Динамика по GA4 Acquisition и Search Console.

§ 03Как настраивается

Сначала готовят несколько копий изображения разной ширины — например 480, 960 и 1440 пикселей. Дальше в тег добавляют два атрибута:

  • srcset — перечень файлов с дескрипторами w;
  • sizes — правила вида (max-width: 600px) 100vw, 50vw, где описана ширина слота под картинку.

Если нужна ещё и подмена формата или арт-дирекшн, вместо одного img берут обёртку picture с несколькими source. Значение sizes должно совпадать с реальной шириной блока в CSS, иначе браузер выберет файл крупнее нужного.

§ 04Как проверить, что работает

Открой DevTools, вкладка Network, и посмотри столбец с реально загруженным файлом при разной ширине окна и эмуляции устройства. Второй способ — навести курсор на img в панели Elements: браузер покажет currentSrc, то есть выбранный вариант. PageSpeed Insights и Lighthouse отдельно ругаются пунктом Properly size images, если отзывчивые изображения настроены неверно и качается версия крупнее слота. Ещё один маркер — вес страницы на мобильном в отчёте: он падает, когда этот способ подгрузки отдаёт лёгкие файлы.

Частые ошибки
01
Дублирование одинаковых размеров в srcset. Разработчик перечисляет 400w, 800w, 1200w, но физически отдаёт один файл на 1200px под всеми URL. Браузер думает, что экономит трафик, а грузит тяжёлое изображение — LCP на мобильном растёт, вес страницы страдает. Как правильно: Генерируйте реальные варианты под каждый width-дескриптор. Проверьте вес файлов через DevTools Network — размеры должны отличаться.
02
Отказ от атрибута sizes при width-дескрипторах. Без sizes браузер считает, что картинка занимает 100vw, и на узкой колонке подтягивает версию вдвое крупнее нужной. Реальная ширина слота — 400px, а грузится 800w. Трафик и скорость мобильной выдачи страдают. Как правильно: Указывайте sizes под реальную вёрстку: 'sizes=(max-width: 600px) 100vw, 400px'. Сверяйте с брейкпоинтами CSS.
03
Замер выбора srcset в десктопном Chrome DevTools. Инженер тестирует ресайз окна на Retina-мониторе и видит корректный файл, но CrUX собирает данные реальных сессий на 4G и DPR 2-3. По данным CrUX-75 у мобильных пользователей грузится не та версия — LCP проседает, позиции по Core Web Vitals падают. Как правильно: Проверяйте выбор изображения через реальные устройства и field data в PageSpeed Insights. Сравнивайте с CrUX за 28 дней, а не с DevTools.
Часто спрашивают

srcset — частые вопросы про атрибут адаптивных изображений

Атрибут srcset простыми словами — что это и что даёт?

+

srcset — это атрибут тега img, который перечисляет несколько версий картинки разного размера. Браузер сам выбирает подходящий файл под ширину экрана и плотность пикселей, поэтому смартфон не грузит тяжёлую версию для десктопа. Это экономит трафик и ускоряет отрисовку страницы.

Браузер читает список файлов и их дескрипторы — ширину в w или плотность в x, а затем сверяет их с атрибутом sizes и характеристиками устройства. По этим данным он подбирает минимально достаточное изображение. Например, при DPR 2 и колонке 400px подгрузится файл около 800px, а не оригинал на 2000px.

srcset решает задачу разрешения и плотности пикселей внутри одного img, когда меняется только размер той же картинки. Тег picture нужен для art direction — разной обрезки или смены формата (WebP, AVIF) через source. Часто их совмещают: picture задаёт условия, а срцсет внутри выбирает размер.

Да, адаптивная разметка изображений напрямую улучшает LCP — крупная картинка часто и есть Largest Contentful Paint. Подгрузка версии под экран вместо оригинала снижает вес страницы на 40–70% на мобильных. Указание размеров помогает и метрике CLS, убирая сдвиги макета при загрузке.

Начните с генерации 3–4 копий каждой картинки — например 480, 768, 1200 и 1920px. Перечислите их в атрибуте с дескриптором w, затем добавьте sizes с медиаусловиями под вашу сетку. Проверьте выбор файла во вкладке Network браузера и через Lighthouse — он подсказывает, если грузится слишком большая версия.

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

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

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