belun.app Блог

Генератор sitemap.xml — создать карту сайта онлайн

Карта сайта — это XML-файл со списком адресов. Минимально достаточный sitemap.xml, который примут и Google, и Яндекс, выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-11-10</lastmod>
  </url>
  <url>
    <loc>https://example.com/pricing/</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
</urlset>

Готовый файл положите в корень сайта, допишите в robots.txt строку Sitemap: https://example.com/sitemap.xml и один раз отправьте адрес в Яндекс Вебмастере и Search Console. Дальше поисковик перечитывает файл сам.

Инструмент ниже не сканирует сайт — он собирает файл из вашего списка адресов. Поэтому здесь нет ни лимита в 500 или 1000 страниц, как у краулеров, ни регистрации: список никуда не отправляется, XML собирается прямо в браузере. Если списка адресов пока нет, его почти всегда можно получить за минуту — см. таблицу ниже.

что читают Google и Яндекс ↓ · лимиты и форматы ↓ · где взять список адресов ↓ · ошибки Вебмастера ↓

Ваш sitemap.xml —
Скачать

Вставьте адреса по одному в строке и получите sitemap.xml, который пройдёт проверку в Google Search Console и Яндекс Вебмастере. Амперсанды в параметрах экранируются как положено, дубли убираются, а список длиннее 50 000 адресов разбивается на пронумерованные файлы с индексом сверху. Значения lastmod, changefreq и priority можно задать сразу для всех или переопределить в отдельной строке.

Какие элементы читают Google и Яндекс

У двух поисковиков разные списки. Яндекс в документации называет ровно четыре поддерживаемых элемента, и всё, что сверх них, для него «неизвестный тег» — он молча отбрасывает такие данные. Google, наоборот, два элемента из этих четырёх игнорирует, зато понимает три расширения, о которых Яндекс не знает.

Элемент Google Яндекс Что делает
<loc> обязательный обязательный Абсолютный адрес вместе с протоколом. Внутри обязательно экранировать &, <, >, " и '. До 2048 символов, причём Яндекс делит лимит так: не больше 1024 на домен и не больше 1024 на путь.
<lastmod> учитывает учитывает Формат W3C Datetime: 2026-11-10 или 2026-11-10T14:30:00+03:00. Google пользуется датой, только пока она выглядит правдоподобно; у Яндекса значение не длиннее 100 байт.
<changefreq> игнорирует учитывает Google перестал его учитывать: слишком многие объявляли hourly на страницах, которые не трогали годами. В документации Яндекса элемент остаётся в списке поддерживаемых.
<priority> игнорирует учитывает Число от 0.0 до 1.0. Рычагом ранжирования не был никогда — максимум подсказка о порядке обхода внутри вашего же сайта, а не против чужих.
<xhtml:link rel="alternate" hreflang="…"> учитывает не поддерживает Официальный способ объявить языковые версии прямо в карте, а не в head каждой страницы. Требует объявления пространства имён xhtml в <urlset>.
<image:image> учитывает не поддерживает Расширение для Google Картинок: адрес изображения, подпись и заголовок вкладываются внутрь того <url>, к которому относятся.
<video:video> учитывает не поддерживает Превью, заголовок, описание и длительность — для видеорезультатов.
<news:news> учитывает не поддерживает Только для сайтов, принятых в Google Новости, и только для материалов за последние два дня.

Языковые версии удобно объявлять прямо в карте, а не в head каждой страницы: тогда достаточно поправить один файл. Для этого нужно объявить пространство имён xhtml в корневом теге:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/pricing/</loc>
    <xhtml:link rel="alternate" hreflang="ru" href="https://example.com/ru/pricing/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/pricing/"/>
  </url>
</urlset>

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

Лимиты, форматы и требования к файлу

Каждая строка здесь — это отдельная ошибка в Яндекс Вебмастере, если её нарушить. Числа взяты из протокола sitemaps.org и из документации обоих поисковиков.

Что Предел Чем это грозит
Адресов в одном файле 50 000 Дальше список нужно разбить на файлы и связать индексом. Яндекс сообщает об этом как «Число URL превышает заданный предел».
Размер файла без сжатия 50 МБ (52 428 800 байт) Предел считается по распакованному файлу, поэтому упаковать 60 МБ в gzip и отчитаться — не решение.
Длина одного адреса 2048 символов Яндекс делит лимит на две части: до 1024 символов на домен и до 1024 на путь, всё длиннее отклоняет.
Карт в индексном файле 50 000 Индекс не может ссылаться на другой индекс — это отдельная ошибка в Вебмастере, а не предупреждение.
Кодировка UTF-8 Кириллические адреса Яндекс распознаёт и в закодированном, и в исходном виде; Google ждёт закодированные, поэтому percent-encoding безопаснее.
Расположение файла Корень сайта Карта может перечислять только адреса своего уровня и ниже: файл в /blog/sitemap.xml не имеет права указывать на /pricing.
Форматы, которые примет Google XML, RSS 2.0 / Atom 1.0, простой текст Обычный .txt со списком адресов по одному в строке в UTF-8 и до 50 000 строк — для Google полноценная карта сайта.
Форматы, которые примет Яндекс Только XML Яндекс прямо указывает, что RSS- и Atom-фиды через Sitemap не передаются. Если нужны оба поисковика, общий формат один — XML.
Код ответа при обращении к файлу 200 Редирект, отданная вместо файла 404-я страница или Disallow на его путь — и карта не будет прочитана вообще.
Сжатие gzip (.xml.gz) Оба поисковика распаковывают. На больших файлах полезно, на маленьких смысла нет.

После 50 000 адресов файл один быть не может. Карты нумеруются, а сверху появляется индекс — единственный адрес, который нужно отправлять в поиск:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-1.xml</loc>
    <lastmod>2026-11-10</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-2.xml</loc>
    <lastmod>2026-11-10</lastmod>
  </sitemap>
</sitemapindex>

Загружать на сервер нужно все файлы, а в Вебмастер и Search Console отправлять только индекс. Индекс, ссылающийся на другой индекс, не допускается.

Где взять список адресов вашего сайта

Это главный вопрос, который онлайн-генераторы обходят молчанием. Начните с того, что откройте вашсайт.ru/sitemap.xml: если файл отдаётся, карта у вас уже есть и собирать её заново не нужно. Если нет — вот откуда берётся список.

Платформа или ситуация Что открыть Подробности
WordPress /wp-sitemap.xml Встроено с версии 5.5, плагин не нужен; с 6.5 добавлен lastmod. Yoast и Rank Math отключают встроенную карту и отдают свою по адресу /sitemap_index.xml.
Tilda /sitemap.xml Собирается платформой автоматически. Править содержимое нельзя — можно только убрать страницу из публикации.
1С-Битрикс Маркетинг → Поисковая оптимизация → Настройка sitemap.xml Файл генерируется агентом по расписанию. Если агенты на хостинге не выполняются, карта устаревает молча — проверяйте дату файла.
OpenCart Модули → Google Sitemap (feed) Включите модуль и скопируйте выданный адрес фида. Отдаётся как XML, по структуре — обычная карта.
Joomla расширение OSMap или JSitemap В ядре карты сайта нет, нужен компонент.
Shopify, Wix, InSales, uKit /sitemap.xml Отдаётся платформой и не настраивается. Если туда попадают ненужные адреса, убирать их приходится на уровне самих страниц.
Любой сайт до 500 страниц Screaming Frog SEO Spider → Sitemaps → XML Sitemap Бесплатная лицензия ограничена 500 адресами за обход, но экспорт карты в неё входит. Для статики и самописных сайтов — самый быстрый путь.
Уже проиндексированные страницы Яндекс Вебмастер → Индексирование → Страницы в поиске → выгрузка; Search Console → Индексирование страниц → экспорт Подходит, когда доступа к исходникам нет: берёте то, что поисковик уже знает о сайте, и вычищаете мусор.
Свой бэкенд или таблица SQL-выборка или колонка в Excel / Google Таблицах Самый надёжный источник: канонические адреса определяете вы, а не краулер. Колонку можно вставить в инструмент как есть.
Поиск по site: site:example.com в Google или Яндексе Полноты не даёт и выгрузки тоже. Годится только чтобы заметить лишние адреса, которые в карту попадать не должны.

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

Ошибки Яндекс Вебмастера и что они значат

В справочнике Яндекса 29 ошибок обработки карты; ниже пятнадцать, которые встречаются чаще всего. Search Console формулирует короче и поэтому менее понятно, так что разбирать причину удобнее по этой таблице — ошибки у двух поисковиков по сути одни и те же. В последнем столбце отмечено, какие из них на собранном здесь файле невозможны: это касается только содержимого карты, на ответ вашего сервера генератор повлиять не может.

Ошибка Причина Исключена генератором
«Невалидный XML» Файл не является корректным XML. В девяти случаях из десяти — неэкранированный амперсанд в адресе с параметрами; реже посторонние символы перед объявлением <?xml. да
«Неизвестный тег» Тег недопустим в этом контексте. Яндекс понимает только loc, lastmod, changefreq и priority — расширения Google вроде xhtml:link или image:image для него неизвестны. да
«Неверная кодировка» Файл не в UTF-8: нужно либо объявление encoding="UTF-8" в первой строке, либо UTF-8 BOM. да
«Не правильный адрес страницы» Адрес не соответствует стандарту: относительный путь вида /pricing, пробел внутри адреса, отсутствующий протокол. да
«Некорректный URL (не соответствует местоположению файла Sitemap)» Адрес лежит вне каталога карты и его подкаталогов — либо карта не в корне, либо в списке чужой домен. нет
«Слишком длинный URL» Адрес длиннее 1024 символов в своей путевой части. нет
«Число URL превышает заданный предел» В файле больше 50 000 адресов. Нужно разбить их на части и собрать индексный файл. да
«Размер файла превышает заданный предел» Больше 50 МБ в распакованном виде. да
«Файл Sitemap index не может содержать ссылки на файлы Sitemap index» Индекс сослался на другой индекс. Вложенность индексов не допускается. да
«Число файлов Sitemap превышает заданный предел» В индексном файле больше 50 000 ссылок на карты. да
«Тег встречается более одного раза» Например, два lastmod у одного адреса — чаще всего результат склейки двух списков. да
«Тег не должен быть пустым» Пустой <loc> или <lastmod> без значения — обычно пустая строка в исходном списке. да
«Ошибка HTTP» Сервер ответил кодом, отличным от 200: карта за редиректом, на 404-й странице или закрыта авторизацией. нет
«URL запрещен в файле robots.txt» Директива Disallow закрыла путь к самому файлу карты. нет
«Слишком много ошибок (обработка прекращена)» Найдено больше 100 ошибок, и Яндекс прекратил разбор файла, не дочитав его до конца. нет

Как это работает

  1. 1
    Вставьте адреса По одному в строке. Подойдут полные URL, короткие пути вида /pricing и колонка, скопированная из таблицы — укажите базовый адрес, и пути подставятся к нему. Пустые строки и строки с # пропускаются.
  2. 2
    Задайте lastmod, changefreq и priority Выберите значения сразу для всех адресов или допишите их через запятую в нужной строке: /blog/post, 2026-09-20, weekly, 0.8. Автоматический приоритет считается по глубине пути: главной достаётся 1.0, вложенным страницам меньше.
  3. 3
    Скачайте и отправьте в поиск Прочитайте предупреждения, нажмите «Скачать» и положите sitemap.xml в корень сайта. Затем добавьте строку Sitemap: https://вашдомен.ru/sitemap.xml в robots.txt и отправьте адрес в разделе «Файлы Sitemap» в Search Console.

Ваши данные защищены

Всё обрабатывается прямо в вашем браузере. Никакие файлы или текст не отправляются на наши серверы. Отключите интернет — инструмент продолжит работать.

Часто задаваемые вопросы

Куда класть файл sitemap.xml?
Технически куда угодно, но по умолчанию — в корень: https://вашдомен.ru/sitemap.xml. Место важно потому, что карта может перечислять только адреса на своём уровне и ниже. Файл в /blog/sitemap.xml не имеет права указывать на /pricing, а корневой — может перечислить всё. После загрузки пропишите его в robots.txt и отправьте в Search Console или Яндекс Вебмастере.
Влияют ли changefreq и priority на что-нибудь?
Google не учитывает ни то, ни другое и открыто сказал об этом в 2023 году: слишком многие проставляли priority 1.0 всем страницам подряд, и сигнал обесценился. Bing и Яндекс их по-прежнему читают. Вреда от этих элементов нет, поэтому здесь они необязательные: включите для других поисковиков или выключите ради компактного файла.
В каком формате указывать lastmod?
W3C Datetime: либо YYYY-MM-DD, либо полная метка времени вроде 2026-09-20T14:30:00+03:00. Привычный формат 20.09.2026 парсер не примет. В отличие от changefreq, дату Google действительно использует, но только если ей доверяет: если каждую ночь проставлять всему сайту сегодняшнее число, поисковик просто перестанет смотреть на это поле.
Что делать, если адресов больше 50 000?
В одну карту помещается не более 50 000 адресов или 50 МБ в несжатом виде — что наступит раньше. Если вставить больше, инструмент разложит список по файлам sitemap-1.xml, sitemap-2.xml и так далее, а в sitemap.xml соберёт индекс со ссылками на них. Загружать нужно все файлы, а отправлять в поиск — только индекс.
Почему карта не проходит проверку?
В девяти случаях из десяти виноват неэкранированный амперсанд. Адрес /search?q=shoes&sort=price внутри элемента loc обязан выглядеть как /search?q=shoes&amp;sort=price, иначе XML считается битым и файл отклоняется целиком. Генератор экранирует &, <, >, кавычки и апострофы сам. Вторая частая причина — BOM или лишний пробел перед объявлением XML.
Какие адреса не стоит включать?
Всё, что не является канонической и индексируемой версией страницы: редиректы, страницы с noindex, адреса, закрытые в robots.txt, страницы пагинации-дубли и те, чей canonical ведёт в другое место. Search Console помечает их ошибками и предупреждениями, и отчёт перестаёт быть полезным. В карте должны быть только страницы, которые вы хотите видеть в выдаче.
Помогает ли карта сайта в ранжировании?
Нет. Она помогает обнаружению, а это другое. Карта сообщает роботам, какие адреса существуют, поэтому новые и глубоко запрятанные страницы находятся быстрее. Выше в выдаче они от этого не станут, а небольшой сайт с нормальной перелинковкой обходится и без неё. Смысл появляется от нескольких сотен страниц или когда на страницы вообще ниоткуда не ссылаются.
Моя CMS уже отдаёт sitemap.xml — генератор нужен?
Чаще всего нет, и это честный ответ. WordPress с версии 5.5, Tilda, Shopify, Wix и InSales собирают карту сами — проверьте адрес /sitemap.xml, и если он открывается, задача решена. Собирать файл вручную стоит в трёх случаях: платформа кладёт в карту мусор (пагинацию, адреса с параметрами, страницы с noindex и редиректы), нужна карта только для части сайта — например для раздела, который хочется переобойти, — или сайт статический и генерировать карту нечему.
Чем XML-карта отличается от HTML-карты сайта?
Это два разных файла для двух разных читателей. XML-карта — служебный список адресов для роботов, в выдаче она не показывается и посетитель её не видит. HTML-карта — обычная страница со ссылками для человека, которая попутно даёт роботу путь к глубоким разделам обычной перелинковкой. Друг друга они не заменяют, но если выбирать одно, роботу полезнее XML, а посетителю — нормальное меню.
Подойдёт ли вместо XML обычный текстовый список адресов?
Для Google — да: он принимает файл .txt с одним адресом в строке в кодировке UTF-8, до 50 000 строк, и считает это полноценной картой. Ещё он принимает фиды RSS 2.0 и Atom 1.0. Яндекс не принимает ничего из этого и прямо пишет, что RSS- и Atom-фиды через Sitemap не передаются. Поэтому если нужны оба поисковика, общий формат один — XML.
Как добавить карту сайта в Яндекс Вебмастер и Search Console?
В Яндекс Вебмастере: Индексирование → Файлы Sitemap → вставить полный адрес файла. В Search Console: Индексирование → Файлы Sitemap → «Добавление файла Sitemap». В обоих случаях достаточно отправить адрес один раз — дальше поисковик перечитывает файл сам. Строку Sitemap в robots.txt тоже стоит прописать: её читают и те роботы, которым никто ничего не отправлял. Пинг-эндпоинт google.com/ping Google отключил в июне 2023 года, вызовы из деплой-скриптов теперь не делают ничего.
Можно ли отдавать карту в сжатом виде .xml.gz?
Да, gzip распаковывают оба поисковика. Но предел в 50 МБ считается по распакованному файлу, поэтому упаковать карту на 60 МБ и отчитаться не получится — нужно разбивать на несколько файлов. На картах в пару сотен килобайт сжатие просто не имеет смысла.
Как часто нужно обновлять карту сайта?
Тогда же, когда меняется набор страниц, — не по расписанию. Онлайн-генератор собирает файл один раз, поэтому для сайта, где страницы появляются каждый день, разумнее модуль CMS или сборка на деплое. Главное — не переставлять lastmod всему сайту на сегодняшнюю дату каждую ночь: Google довольно быстро перестаёт доверять полю, и пользы от даты не остаётся вообще.

Из блога

XML-карта сайта: что поисковик читает, а что выбрасывает Два элемента, которые ещё работают, ошибка экранирования, ломающая половину самописных карт, и случаи, когда карта не нужна вовсе. Читать статью →

Похожие инструменты