Изображения — это обычно девять десятых веса страницы. Текст всего сайта весит меньше одной неподготовленной фотографии с телефона. Поэтому работа с картинками — самый быстрый способ сделать сайт быстрым.

Зачем это знать

Нейросеть напишет разметку картинки правильно, но файлы готовите вы. Снимок с телефона весит четыре мегабайта и имеет ширину 4000 пикселей — на странице он показывается шириной 800, а грузится целиком. Три правила ниже убирают эту беду за десять минут.

Какой формат брать

Форматы и их применение
Формат Когда брать Особенность
WebP Все фотографии и почти всё остальное Тот же вид, что JPEG, но на четверть-треть легче
SVG Иконки, логотипы, схемы Не размывается при увеличении, весит килобайты
JPEG Запасной вариант для очень старых браузеров Понимают все, весит больше
PNG Только если нужна прозрачность и нельзя WebP Фотографии в нём весят в разы больше

Практическое правило: фотографии — WebP, всё нарисованное — SVG. GIF не нужен нигде: короткое видео в современном формате весит в десять раз меньше. Перегнать снимок в WebP можно прямо в браузере — например в Squoosh, ставить программы не нужно.

Размер файла и размер на экране

Это разные вещи, и путать их дорого. Если картинка показывается шириной 800 пикселей, файл шириной 4000 не даст ничего, кроме веса. Готовьте файл по месту показа с запасом вдвое — для экранов с высокой плотностью точек.

Ориентиры по весу

Большая картинка первого экрана — до 200 КБ. Обычная картинка в статье — до 100 КБ. Превью в сетке — до 60 КБ. Если получается больше, уменьшайте размер в пикселях, а уже потом качество.

Разметка: четыре обязательных атрибута

Правильно поставленная картинка
<img src="/assets/img/open-server.webp"
width="1200" height="750"
loading="lazy"
alt="Окно Open Server: выбор версии PHP в настройках">
  • width и height. По ним браузер заранее оставляет место, и текст не прыгает, когда картинка догрузилась. Ставятся даже тогда, когда размер задан в CSS: это пропорции, а не жёсткий размер.
  • loading="lazy". Откладывает загрузку картинок, до которых читатель ещё не долистал. Не ставится картинке первого экрана — её нужно грузить сразу.
  • alt. Текст вместо картинки. Его читают программы чтения экрана и показывает браузер, если файл не загрузился.

Как написать alt

Описывайте не файл, а то, что на картинке важно в этом месте страницы. «Скриншот» и «фото» писать не нужно — и так понятно, что это изображение.

Примеры хороших и плохих описаний
Плохо Хорошо
alt="image1" alt="Окно Open Server: выбор версии PHP"
alt="фото" alt="Дерево ресурсов с папкой «Новости»"
Атрибута нет вовсе alt="", если картинка чисто украшение

Пустой alt="" — это не небрежность, а осмысленное «читать нечего, пропусти». Отсутствие атрибута означает другое: диктор прочитает имя файла вслух.

Один снимок для телефона и для монитора

Картинка первого экрана на мониторе показывается шириной 1200 пикселей, а на телефоне — 360. Грузить телефону большой файл расточительно: это чужой трафик и лишние секунды ожидания. Решение — подготовить два-три файла и дать браузеру выбрать самому.

Браузер берёт подходящий файл
<img src="/assets/img/hero-800.webp"
srcset="/assets/img/hero-400.webp 400w,
        /assets/img/hero-800.webp 800w,
        /assets/img/hero-1600.webp 1600w"
sizes="(min-width: 1024px) 800px, 100vw"
width="800" height="500"
alt="Первый экран сайта: заголовок и блок кода рядом">

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

Текст картинкой не делают

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

Что просить у нейросети

Сами файлы нейросеть не уменьшит, а вот разобрать разметку и написать описания она поможет.

Мой запрос

Вот кусок разметки моей страницы с шестью картинками (прилагаю). Проверь каждую: есть ли width и height, правильно ли расставлен loading="lazy", осмысленны ли описания в alt.

Картинка первого экрана — первая в списке, ей отложенная загрузка не нужна. Опиши, что не так, и дай исправленный код.

Отдельно посоветуй, какой ширины готовить файлы, если в сетке картинка показывается шириной 380 пикселей на телефоне и 400 на компьютере.

Как проверить, что получилось

  • Открыть вкладку «Сеть» в инструментах разработчика и посмотреть вес каждой картинки.
  • Прокрутить страницу сверху донизу: текст не должен прыгать при появлении картинок.
  • Отключить картинки в браузере: вместо каждой должно быть понятное описание.
  • Сложить вес всей страницы: для статьи с картинками разумный предел — около мегабайта.

Что стоит запомнить

  • Фотографии — WebP, всё нарисованное — SVG
  • Файл готовится по размеру показа, а не грузится в исходном виде
  • width и height в разметке не дают странице прыгать
  • loading="lazy" ставится всем, кроме картинок первого экрана
  • alt описывает смысл картинки, а пустой alt="" — осознанный выбор