Проверка alt у картинок: почему поиск не видит ваши изображения

Проверка alt у картинок: почему поиск не видит ваши изображения
Анатолий Кузнецов
Анатолий Кузнецов
SEO-оптимизатор с 20-летним стажем. Автор блога seo-prodvizhenie-biznesa.ru о продвижении и доработке сайтов.

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

Что робот делает с атрибутом alt и чего он не делает

Атрибут alt у тега <img> задумывался как текстовая замена изображения: если картинка не загрузилась или человек работает со скринридером, браузер зачитывает эту строку. Поисковые системы используют её иначе. Робот не «смотрит» картинку глазами — он опирается на косвенные признаки, и alt среди них самый прямой. Дальше идут имя файла, подпись под изображением, ближайший текст и текст ссылки, если картинка сама является ссылкой.

Отсюда вывод: alt влияет на две разные вещи. Первая — попадание картинки в поиск по изображениям и её позиция там. Вторая — понимание роботом самой страницы, но этот эффект слабее, и раздувать его не стоит: страница не выйдет в топ за счёт двадцати подписей с ключевыми словами. Без alt картинка в выдачу по изображениям почти не попадает — кроме случаев, когда её опознали по имени файла и окружающему тексту.

Чего alt не делает: он не заменяет содержательный текст, не лечит переспам и не участвует в сниппете обычной выдачи. Атрибут title — всплывающая подсказка, к alt отношения не имеет. И отдельно: то, что в админке WordPress называется «Подпись» или «Описание», попадает не в alt, а в <figcaption> или вообще никуда. Поэтому владельцы сайтов часто уверены, что подписи заполнены, а краулер показывает обратное.

Как найти все картинки без alt пачкой, а не вручную

Просматривать страницы по одной бессмысленно уже при сотне материалов. Нужен обход сайта с выгрузкой в таблицу. Рабочих вариантов три.

Десктопный краулер. Screaming Frog SEO Spider складывает изображения во вкладку Images с фильтрами Missing Alt Text, Missing Alt Attribute, Alt Text Over 100 Characters. Бесплатная версия ограничена 500 адресами: для блога хватает, для каталога нет. Так же устроены Netpeak Spider и Sitebulb.

Консоль браузера для быстрой прикидки. На странице достаточно выполнить document.querySelectorAll('img:not([alt])').length — вернётся число картинок вообще без атрибута. Отдельно проверяется img[alt=""], это не одно и то же. Способ показывает итоговый DOM после работы скриптов, а не исходный HTML.

Выгрузка через API или из базы. Для WordPress быстрее пройтись по REST API (/wp-json/wp/v2/posts?per_page=100&page=N), вытащить content.rendered и разобрать регулярным выражением все теги <img>. Тот же скрипт заодно посчитает повторы подписей — этого не умеет ни один краулер из коробки. У медиафайлов alt лежит в мета-поле _wp_attachment_image_alt.

Результат должен лечь в одну таблицу с колонками: адрес страницы, адрес картинки, значение alt, длина, код ответа.

Что ищем Чем найти Что считать ошибкой Приоритет
Атрибут alt отсутствует Отчёт краулера по изображениям, фильтр Missing Alt Text Любая содержательная картинка без атрибута Высокий
alt пустой (alt=»») Тот же отчёт с фильтром по пустому значению Пустой alt у товарного фото, схемы, инфографики Высокий
Одна подпись на многих страницах Выгрузка всех alt в таблицу, сводная по повторам Больше 5–10 повторов одной строки Средний
Картинка отдаёт 404, 403 или редирект Отчёт по кодам ответа для типа Images Любой код, кроме 200 Высокий
Адрес картинки только в data-атрибуте Сравнение исходного HTML и отрендеренного DOM Пустой или заглушечный src в исходном коде Высокий
Каталог загрузок закрыт в robots.txt Ручная проверка правил Disallow Запрет на /uploads/, /images/, /files/ Критичный

Последний пункт проверяйте до всего остального. Если каталог с изображениями закрыт от обхода, работа над подписями бессмысленна: робот до них не дойдёт. Такая строчка часто достаётся сайту по наследству от старых шаблонов.

Одинаковые подписи на весь каталог — отдельная беда

Массовая простановка alt плагином выглядит соблазнительно: одна галочка, и красных строк в отчёте нет. Так рождается худший вариант — четыре тысячи изображений с подписью «купить пластиковые окна недорого в Москве». Это хуже пустого атрибута, и вот почему.

Поиск по картинкам показывает разные изображения. Когда сотни файлов описаны одной строкой, система выбирает из них одно, а остальные отбрасывает как дубли по смыслу. Вместо сотен точек входа остаётся одна, причём выбранная не вами.

Дальше: повторяющаяся коммерческая фраза в сотнях мест — признак переоптимизации. Когда связка «купить + товар + город» встречается на странице восемь раз в подписях, страница получает не бонус, а риск. И третье: шаблонная подпись бесполезна для человека.

Проверяется всё одной сводной таблицей: значение alt, группировка, счётчик. Что встречается больше десяти раз — требует внимания. Исключения законны: логотип в шапке, иконка корзины, аватар автора. Но их и должно быть три-четыре штуки, а не три тысячи.

Разновидность той же болезни — подпись из названия товара, но название однотипное: «Диван Ланкастер, фото 1», «Диван Ланкастер, фото 2». Спасает не отказ от автоподстановки, а её усложнение: в шаблон добавляют ракурс, цвет, комплектацию, материал.

Как писать alt и почему имя файла правят до загрузки

Рабочая формула подписи: что изображено + уточняющий признак + при необходимости бренд или модель. Без «картинка» и «фото» в начале. Длина 5–12 слов, ориентир по символам — до 125: дальше скринридеры обрезают строку, а краулеры помечают её как избыточную.

Плохо: alt="фото", alt="img_2451", alt="кухни кухни на заказ кухни недорого". Нормально: alt="Угловая кухня с фасадами из массива дуба, цвет венге". Ключевая фраза попадает в подпись естественно, потому что она и описывает изображение, а не вставлена туда отдельным движением.

Имя файла — второй по силе сигнал, и править его после загрузки дороже, чем до. Как только файл вставлен в двадцать статей, переименование означает либо массовую правку контента, либо цепочку редиректов. Поэтому имена приводят в порядок на этапе подготовки: IMG_20240517_141233.jpg становится uglovaya-kuhnya-massiv-duba-venge.jpg.

Правила простые. Латиница в транслите: кириллица в адресе превращается в последовательность вида %D0%BA%D1%83%D1%85 — работать будет, но читаемость теряется. Разделитель — дефис, не подчёркивание. Регистр нижний. Длина в пределах пяти-семи слов.

Связка «имя файла + alt + подпись + текст рядом» должна описывать одно и то же разными словами. Если файл называется uglovaya-kuhnya-venge.jpg, alt дублирует его слово в слово, а под картинкой та же фраза третий раз — это повтор, а не усиление сигнала. Логику подписей я разбирал в статье Alt у картинки нужен не слепым, а роботу: как подписи приводят клиентов.

Когда alt должен быть пустым

Пустой alt — не ошибка, а осознанное решение. alt="" означает: изображение декоративное, скринридеру его нужно пропустить. Если такую картинку подписать, пользователь голосового доступа услышит мусор между абзацами.

Пустым alt делают у разделителей, линий и фоновых узоров; у иконок рядом с текстом, который говорит то же самое (на кнопке написано «Позвонить», слева трубка — трубку подписывать не нужно); у повторного изображения того, что описано соседним текстом; у спейсеров размером в пиксель.

Ключевое отличие: alt="" — подпись, которую вы намеренно оставили пустой; отсутствие атрибута — подписи нет вообще. Для скринридера разница принципиальна: в первом случае он молча пропускает картинку, во втором пытается зачитать имя файла. В отчётах краулера это разные фильтры.

Особый случай — картинка внутри ссылки без текста: иконка соцсети, логотип-ссылка на главную, стрелка «следующий товар». Здесь alt описывает не изображение, а назначение ссылки: не alt="синий кружок", а alt="Страница компании во ВКонтакте". Оставите пустым — ссылка станет безымянной для скринридера и безанкорной для робота.

Вес, формат и размеры: подпись не спасёт тяжёлый файл

Идеально подписанная картинка весом четыре мегабайта проиграет средне подписанной весом сто килобайт. Скорость влияет и на поведение людей, и на обход: робот тратит на сайт ограниченное время, и если половина уходит на выкачивание тяжёлых фотографий, до новых страниц он доходит позже.

Формат Для чего подходит Ориентир по весу Ограничения
JPEG Фотографии, карточки товара 60–150 КБ при ширине 1200 px и качестве 78–82 Нет прозрачности, артефакты на мелком тексте
PNG Скриншоты, схемы, графика с прозрачностью На фото вес растёт в разы против JPEG Только там, где нужна прозрачность или чёткие линии
WebP Универсальная замена JPEG и PNG На 25–35% легче JPEG при сопоставимом качестве Поддержка во всех актуальных браузерах, Safari с версии 14
AVIF Фотографии, где вес критичен Ещё легче WebP при том же качестве Safari поддерживает с версии 16.4, кодирование медленнее
SVG Логотипы, иконки, простые схемы Единицы килобайт В поиске по картинкам практически не участвует
GIF Короткие анимации Тяжелее видео той же длительности Заменяется на mp4 или webm с автовоспроизведением

Помимо формата важны три вещи. Размеры файла должны совпадать с размерами отображения: фотография 4000 на 3000 пикселей в блоке шириной 600 — выброшенные мегабайты. Атрибуты width и height обязательны: без них браузер не резервирует место, и страница дёргается при подгрузке. И srcset с sizes, чтобы телефон не тянул десктопную версию.

Про отложенную загрузку. Атрибут loading="lazy" безопасен, его понимают и браузеры, и роботы. Опасны самописные решения, где в src лежит прозрачная заглушка, а настоящий адрес спрятан в data-src: такая картинка может не попасть в индекс. Вторая ошибка — ленивая загрузка на первом экране: отсрочка портит показатель отрисовки главного элемента. Механика описана в материале Ленивая загрузка картинок съедает ваш трафик из поиска по изображениям, а сборка форматов под WordPress — в статье Картинки съедают скорость WordPress: WebP, размеры и отложенная загрузка.

Картинки в карте сайта и переобход после правок

Здесь два поисковика ведут себя по-разному, и это стоит понимать до того, как тратить время на генерацию файлов.

Google поддерживает расширение карты сайта для изображений: внутри <url> добавляются блоки <image:image>, а в шапку подключается пространство имён http://www.google.com/schemas/sitemap-image/1.1. Смысл — указать картинки, которые иначе трудно обнаружить. Если весь контент виден в обычном HTML, выигрыш небольшой, но и вреда нет.

Яндекс отдельную карту для картинок не обрабатывает: он находит изображения при обходе страниц. Для него решают другие вещи — доступность файлов по прямым адресам с кодом 200, отсутствие запретов в robots.txt, разумный вес и осмысленная разметка. Общие правила составления карты разобраны в статье Карта сайта Sitemap.

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

Сколько трафика даёт поиск по картинкам и когда им можно не заниматься

Мифов здесь хватает в обе стороны: одни обещают «половину трафика из картинок», другие считают канал мёртвым. Проверяется всё за десять минут по собственным данным — до того, как вкладывать неделю в переписывание подписей.

В Яндекс.Метрике откройте отчёт по источникам с детализацией по поисковым системам — переходы из Яндекс.Картинок отображаются отдельной строкой, а не сливаются с обычным поиском. В Google Search Console в отчёте по эффективности переключите тип поиска на «Изображение»: увидите показы, клики и запросы именно оттуда. Сравните с общей органикой — получите свою долю, а не среднюю по интернету.

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

Ключевое условие — уникальность изображений. Если на карточках те же стоковые фотографии, что у полусотни конкурентов, alt не поможет: система выберет один источник, и это будет крупный магазин с историей. Собственная съёмка, схемы, фотографии с объектов — вот что попадает в выдачу. Приёмы под этот канал собраны в материале Поиск по картинкам Яндекса — забытый источник трафика, который качает продажи.

Теперь о ситуациях, где работа с подписями стоит внизу списка приоритетов. Не решены базовые проблемы обхода: пока страницы не попадают в поиск, картинки тем более не попадут. Визитка на пять-семь страниц — всё правится руками за час. Все изображения стоковые — вложения не окупятся. Интерфейсные проекты и личные кабинеты: там картинки служебные, им положен пустой alt. И страницы, у которых главная проблема в другом — тонкий текст, отсутствие цен, нерабочая форма заявки. Если непонятно, что чинить первым, помогает общий разбор по списку — последовательность проверок описана в материале Технический SEO-аудит своими руками: пошаговый чек-лист из 40 пунктов, а первичный разбор можно запросить на странице бесплатный аудит сайта.

Частые вопросы

Сколько картинок без alt считается критичным? Смотреть надо не на абсолютное число, а на долю содержательных изображений. Если из тысячи файлов девятьсот — иконки и декор, картина нормальная. Если без подписей стоят товарные фотографии, критично уже при десятках.

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

Влияет ли alt на позиции обычной выдачи? Косвенно и слабо. Текст подписи учитывается как часть содержимого страницы, но заменить нормальный текст он не может. Основной эффект — в поиске по изображениям.

Нужно ли писать alt транслитом? Нет. Alt — текст для человека, он пишется на языке сайта обычными словами. Транслит нужен для имени файла, потому что это часть адреса.

Что делать со старыми картинками, у которых плохие имена файлов? Не трогать, если их много и они проиндексированы: переименование обнуляет вес адреса и требует правки всех вхождений. Правильные имена начинают с новых загрузок, старым дописывают подписи.

Учитывается ли alt у картинок, закрытых от индексации? Нет. Если файл недоступен роботу или страница закрыта, подпись не читается. Поэтому проверка правил обхода идёт первым пунктом, а не последним.

Коротко

  • Перед работой с подписями проверьте, открыт ли каталог загрузок для обхода и отдают ли картинки код 200 — иначе всё остальное впустую.
  • Собирайте изображения в одну таблицу краулером или выгрузкой через API: адрес страницы, адрес файла, значение alt, длина, код ответа.
  • Одинаковая подпись на сотнях картинок хуже пустого атрибута: в поиске остаётся один файл вместо сотен, а страница получает признак переспама.
  • Пустой alt="" — рабочий инструмент для декора и дублирующих иконок; отсутствие атрибута — всегда ошибка, это разные вещи.
  • Имена файлов приводят в порядок до загрузки: транслит, дефисы, нижний регистр; старые массово не переименовывают.
  • Долю трафика из картинок измеряют по своим данным — отчётом по поисковым системам в Метрике и типом поиска «Изображение» в Search Console.

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

Увеличьте позиции и продажи вашего сайта

Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:

Анатолий Кузнецов — SEO-оптимизатор

Остались вопросы по продвижению?

Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.

Связаться со мной →

Комментарии

Викентий Шелестов

Прогнал каталог краулером: 6800 картинок, alt отсутствует у 5100. Руками это не переписать никогда. Плагин, который берёт название товара, ставить или нет?

Анатолий Кузнецов автор

Ставить, но не в самой простой конфигурации. Если плагин подставит одно только название товара, у карточки с шестью фотографиями получится шесть одинаковых подписей, и вы поменяете одну проблему на другую. Соберите шаблон из нескольких полей: название, ключевая характеристика (цвет, материал, размер) и порядковый признак ракурса, если он у вас хранится. Дальше выгрузите результат в таблицу и посмотрите сводную по повторам — всё, что встречается больше десяти раз, дорабатывайте отдельно. И обязательно отсортируйте картинки по посещаемости страниц: верхние двести карточек стоит подписать вручную, они дадут основной эффект.

Милана Пожарская

У нас все картинки в WordPress загружены с телефона, имена вида IMG_20230412_105533. Переименовать все разом или уже поздно?

Анатолий Кузнецов автор

Поздно в том смысле, что затраты перевесят выгоду. Переименование файла меняет его адрес: старый начнёт отдавать 404, накопленные сигналы обнулятся, а во всех статьях останутся битые ссылки, которые придётся править массово по базе. Делайте иначе: имена оставьте как есть, а подписи допишите — по alt робот вас поймёт и без красивого имени файла. Порядок наведите на входе: договоритесь, что перед загрузкой файл переименовывается по схеме «что изображено на транслите через дефис». Через год-полтора новых нормальных картинок станет больше, чем старых, и вопрос закроется сам.

Ростислав Кадочников

Валидатор ругается на пустые alt у иконок, а вы пишете, что так и надо. Кому верить?

Эмилия Ветлугина

Проверила через консоль на главной: img:not([alt]) даёт ноль, а в отчёте краулера двадцать три картинки без alt. Откуда расхождение?

Анатолий Кузнецов автор

Расхождение почти всегда означает, что подписи дорисовывает скрипт уже после загрузки страницы. Консоль показывает итоговое состояние DOM, а краулер по умолчанию читает исходный HTML, который пришёл с сервера, — там атрибутов ещё нет. Проверьте так: откройте страницу и посмотрите исходный код через «Просмотр кода страницы», а не через инспектор, это разные вещи. Если в исходнике alt отсутствует, лучше поправить шаблон и отдавать подписи сразу с сервера: полагаться на то, что робот выполнит ваш скрипт и дождётся результата, не стоит. Заодно включите в краулере режим рендеринга JavaScript и сравните два прогона — увидите точный список расхождений.

Гордей Полуянов

Метрика показывает, что из Яндекс.Картинок приходит около полутора процентов визитов. Стоит ли вообще этим заниматься при таких цифрах?

Таисия Мамонтова

А если alt заполнен, но написан на английском? Сайт русский, картинки грузил разработчик.

Иннокентий Броневой

Сделал карту сайта для изображений, отправил в Вебмастер — он её принял, но ничего не изменилось. Это нормально?

Анатолий Кузнецов автор

Нормально, потому что Яндекс расширение карты сайта для изображений не обрабатывает — он принимает файл как обычную карту и берёт из неё только адреса страниц. Блоки с картинками просто игнорируются. Пользу такой файл приносит на стороне Google, и то в основном там, где изображения подгружаются скриптами и иначе их трудно обнаружить. Для Яндекса работают другие вещи: файлы доступны по прямым адресам с кодом 200, каталог загрузок не закрыт в robots.txt, картинки видны в исходном HTML страницы. Проверьте эти три пункта — они дают больше, чем любая карта.

Есения Кулагина

Копирайтеры сдают статьи с картинками из стоков. Есть смысл подписывать их или это заведомо бесполезно?

Радислав Оточин

Сколько ждать после того, как проставил alt на всём сайте? Прошло три недели, в Картинках тишина.

Анатолий Кузнецов автор

Три недели — это только начало отсчёта. Сначала робот должен переобойти страницы, потом пересчитать картинки, и вторая часть отстаёт от первой ощутимо. Проверьте главное: изменилась ли у страниц дата последнего изменения. Если правки заливались напрямую в базу и дата осталась прежней, робот не считает страницы обновлёнными и придёт к ним в обычном порядке, то есть нескоро. Отправьте самые важные разделы на переобход вручную, убедитесь, что в карте сайта проставлены свежие lastmod, и дальше смотрите динамику по показам, а не по позициям. На каталоге в несколько тысяч карточек первые заметные сдвиги обычно видны на втором-третьем месяце.

Стефания Курбатова

Правильно ли я понимаю, что подпись под фотографией на странице и alt — это разные поля, и заполнять надо оба?

Аркадий Тюленев

Перевёл все картинки в WebP, вес упал втрое. Alt при конвертации не потерялся, но старые jpg остались на сервере. Удалять?

Пантелей Вьюгин

У нас интернет-магазин, но фотографии товаров дал поставщик — они же есть у всех дилеров. Подписи это как-то компенсируют?

Прокрутить вверх