Генератор URL ЧПУ (Slug)

Превратите любой заголовок в чистый URL-slug в браузере — по одному или целым списком. Реальные стандарты транслитерации кириллицы, редактируемые правила и никакой отправки на сервер.

Заполните текст для конвертации
Расширенные настройки
Правила транслитерации
Символ Латиница Позиция в слове
Аа
Бб
Вв
Гг
Дд
Ее
Ёё
Жж
Зз
Ии
Йй
Кк
Лл
Мм
Нн
Оо
Пп
Рр
Сс
Тт
Уу
Фф
Хх
Цц
Чч
Шш
Щщ
Ъъ
Ыы
Ьь
Ээ
Юю
Яя

Slug — это читаемый хвост веб-адреса, например my-first-post в example.com/blog/my-first-post. Это та часть, которую человек может прочитать перед тем, как кликнуть, и которую поисковая система воспринимает как краткое описание содержимого страницы. Именно поэтому он заслуживает большего внимания, чем идентификатор базы данных или дата. Этот бесплатный генератор превращает любой текст в slug: вставьте заголовок в поле «Текст для конвертации», нажмите «Сгенерировать», и результат появится рядом с кнопкой копирования. По умолчанию включены настройки, которые нужны большинству сайтов — нижний регистр, дефисы между словами, удаление общих служебных слов и транслитерация нелатинских букв. Готовый к использованию slug доступен в один клик, и каждое из этих решений можно изменить с помощью переключателей.

Все происходит на вашем собственном устройстве. Страница загружает небольшой JavaScript-движок и запускает его локально: ваши заголовки никогда не загружаются на сервер, не логируются, а инструмент продолжает работать даже без подключения к интернету. Именно поэтому результат обновляется в тот же момент, когда вы меняете настройку. Стоит упомянуть порядок обработки, поскольку именно он делает результат предсказуемым: вставленная ссылка сначала сокращается до последнего сегмента пути, затем текст переводится в нижний регистр, после этого удаляются стоп-слова, затем транслитерируются нелатинские символы, затем удаляются числа и спецсимволы (если вы выбрали это), затем все оставшееся соединяется выбранным разделителем, после чего результат обрезается до максимальной длины, и, наконец, повторяющиеся значения получают числовой суффикс. Поле «Текст для конвертации» принимает до 500 000 символов за один раз — это несколько тысяч заголовков статей.

Одна строка на входе — один slug на выходе. Вставьте целый список заголовков, и каждая строка станет отдельным пронумерованным slug'ом, а исходный текст будет отображаться над ним серым цветом, так что в партии из пятидесяти штук вы все равно сможете понять, к какому заголовку относится тот или иной slug. Список, который уже находится в файле, не обязательно пропускать через буфер обмена: кнопка «Загрузить из файла» рядом с полем ввода открывает простой текстовый файл (.txt, .csv, .md, .json и тому подобные) и вставляет его содержимое в поле. Ваш браузер читает этот файл точно так же, как если бы вы ввели текст вручную, и ничего никуда не загружается. Опция «Разделять ввод по» решает, как список разбивается на части. «Автоматически» используется по умолчанию: перенос строки всегда разделяет элементы, в то время как запятая разделяет их только тогда, когда ввод состоит из одной строки, части которой выглядят как самостоятельные значения. Таким образом, «цена 3,5 руб.» и «Глава 5: результаты, выводы» остаются целыми вместо того, чтобы разбиваться на фрагменты. Опции «С новой строки», «Запятая» и «Пробел» позволяют принудительно сделать выбор, если вы заранее знаете формат своих данных. Опция «Формат результата» определяет, как возвращается пакет при его копировании — по одному на строку, через пробел или через запятую, и обе кнопки «Скопировать всё» и «Сохранить в файл» следуют этому правилу. «История» хранит ваши последние 10 пакетов в вашем браузере, так что список, который вы конвертировали час назад, все еще находится там.

Нелатинский текст — это та часть, с которой большинство генераторов slug'ов справляются примерно правильно, и лишь немногие — абсолютно точно. URL безопаснее всего держать в простом ASCII, поэтому кириллицу, греческий, арабский, китайский и европейские буквы с диакритикой нужно конвертировать, и единственный реальный вопрос — по чьим правилам. Эта страница решает этот вопрос на двух уровнях. Общий уровень охватывает все системы письма: библиотека транслитерации с разумным ASCII-ответом почти для любого символа, который вы можете ввести, и этот слой работает для символов, которых не покрывает ни одна таблица. Специфический уровень — это набор созданных вручную таблиц для языков, где общий ответ не совпадает с тем, который реально использует страна: русский — один из таких языков, и список пополняется по мере того, как инструмент доходит до языков, которым нужна своя таблица. Выбор одного из них загружает его таблицу в редактируемую сетку под разделом «Правила транслитерации», где каждая буква — это текстовое поле, которое можно изменить, а кнопка «Сбросить правила» возвращает всё как было. Русская таблица следует приказу МИД России № 4271, стандарту, напечатанному в загранпаспортах, включая детали, которые легко упустить. Украинская таблица, например, следует постановлению Кабинета Министров № 55 от 2010 года. Для немецкого языка по умолчанию используется расширенный вариант ä → ae, ö → oe, ü → ue, который действительно используют немецкие адреса, с простым вариантом ä → a, если вы предпочитаете его.

Опция «Удалить стоп-слова» включена по умолчанию. Она отбрасывает небольшие связующие слова — такие как «и», «в», «на» — которые удлиняют slug, не добавляя ему смысла. Список в поле «Стоп-слова» полностью редактируется и предоставляется уже заполненным: английский список плюс список для языка страницы, на которой вы находитесь, поэтому русская страница знает слова «и», «в» и «на», а немецкая — der, die и das. Добавьте свои собственные слова, удалите те, которые хотите оставить, или полностью отключите эту функцию, и в этом случае поле станет серым, вместо того чтобы притворяться, что оно все еще имеет значение. Два честных замечания по этому поводу. Удаление стоп-слов — это скорее небольшое улучшение аккуратности, чем рычаг для ранжирования: вы получаете более короткий и чистый адрес, а не лучшую позицию. И если каждое слово в заголовке случайно окажется в списке, честным результатом будет отсутствие результата, поэтому инструмент сообщит вам об этом, вместо того чтобы выдать пустое поле.

Остальные переключатели определяют форму. Опция «Разделитель в slug» выбирает то, что стоит между словами, и дефис по умолчанию — это не дело вкуса: Google читает дефис как разделитель слов, а подчеркивание — как соединитель, поэтому my_first_post достигает поискового робота как одно длинное слово, в то время как my-first-post — как три. «Подчеркивание (_)» предназначено для систем, которые на этом настаивают. Опция «Нижний регистр» включена, поскольку большинство серверов чувствительны к регистру в адресах, а смешанный регистр — это простой способ получить два URL для одной страницы. Опция «Удалить спецсимволы» убирает все, что не является буквой, цифрой, пробелом, дефисом или подчеркиванием, и именно это не пускает пунктуацию, кавычки и эмодзи в адрес — эмодзи удаляются специально до транслитерации, чтобы ракета случайно не превратилась в слово rocket. Опция «Удалить числа» выключена, поскольку число в заголовке обычно является его частью. «Макс. длина» варьируется от 10 до 200 и по умолчанию равна 80; когда slug длиннее, движок обрезает его на последнем целом слове, которое помещается, а не посередине. Цифра рядом с каждым результатом — это его длина в символах, и она становится красной после 60 — это не жесткий лимит, а точка, в которой slug начинает обрезаться в результатах поиска и становится неудобным для вставки в сообщение.

Существуют еще два переключателя, потому что они превращают массовую конвертацию обратно в задачу в один клик. Опция «Сделать уникальными» отлавливает случаи, когда два разных заголовка сводятся к одному и тому же slug'у — «Топ 10 советов» и «Топ-10 советов» оба становятся top-10-sovetov — и дает второму суффикс -2, третьему -3, сначала укорачивая базовую часть, если суффикс выходит за установленную максимальную длину. Две страницы по одному адресу — это проблема, которую гораздо дешевле отловить в этом списке, чем в вашей CMS. Опция «Взять slug из ссылки» работает в обратном направлении: вставьте полную ссылку, и инструмент возьмет последнюю часть пути, отбросит строку запроса и любые окончания вроде .html или .php, а также декодирует percent-encoding, так что ссылка на Википедию, заканчивающаяся на %D0%9B%D1%8C%D0%B2%D1%96%D0%B2, вернется как lviv, а не как набор шестнадцатеричных цифр. Это срабатывает только тогда, когда вся строка является ссылкой, поэтому адрес, процитированный внутри предложения, остается там, где он есть.

Почему стоит выбрать этот генератор slug'ов?

Slug'и нужны везде, где страница должна иметь читаемый адрес. Блог или новостной сайт превращает каждый заголовок в slug, и именно под этот сценарий и создавался этот инструмент: вставьте заголовки за неделю, получите URL-адреса за неделю. Интернет-магазин делает то же самое для названий товаров и категорий, обычно массово после импорта, и обычно на языке, алфавит которого адрес не может вместить. Документация и базы знаний создают якоря и имена файлов таким же образом. Помимо веб-адресов, такая же чистая строка — это то, что вам нужно для имени файла, которое не сломается в другой операционной системе, ключа базы данных, который человек сможет прочитать в логе, имени ветки кода, имени изображения в медиабиблиотеке или идентификатора раздела в генераторе статических сайтов. Любое место, где читаемое человеком имя должно выжить после помещения в машиночитаемое поле, — это место для slug'а.

Стоит знать о нескольких ограничениях, прежде чем полагаться на этот инструмент. Это генератор, а не валидатор: он не будет проверять, занят ли уже slug на вашем сайте, потому что он понятия не имеет, что содержит ваш сайт — уникальность, которую он гарантирует, находится только в пределах пакета перед вами. Редиректы — тоже ваша работа; изменение slug'а опубликованной страницы ломает ее старый адрес, и это решение для вашей CMS, а не для этого инструмента. Кнопка «Сохранить в файл» записывает простой текст, а не CSV или JSON. Автоматическое разделение принимает решение о запятых, которое верно почти в каждом случае, но не во всех, и именно поэтому опция «Разделять ввод по» позволяет вам переопределить это. А транслитерация — это условность, а не перевод — Москва становится moskva, а не английским названием города — поэтому, когда страница имеет устоявшееся название на целевом языке, это название будет лучшим slug'ом, чем любая автоматическая конвертация оригинала.

FAQ

Как создать URL-slug (ЧПУ)?

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

Можно ли конвертировать целый список заголовков сразу?

Да. Вставьте до 500 000 символов — это несколько тысяч заголовков — или извлеките их прямо из файла с помощью кнопки «Загрузить из файла» рядом с полем ввода, которая читает его в вашем браузере без загрузки на сервер. Каждая строка становится отдельным пронумерованным slug'ом, а исходный заголовок отображается над ним, чтобы вы могли их сопоставить. Опция «Разделять ввод по» управляет тем, как разбивается список, «Формат результата» решает, возвращается ли пакет построчно, через пробел или через запятую, а кнопки «Скопировать всё» и «Сохранить в файл» применяют результат ко всему пакеу сразу.

Как генератор обрабатывает кириллицу и буквы с диакритическими знаками?

Он транслитерирует их в ASCII на двух уровнях. Любая система письма — кириллица, греческий, арабский, китайский, латиница с диакритикой — покрывается общей библиотекой транслитерации, которая работает для символов, не охваченных ни одной таблицей. Поверх этого расположены созданные вручную таблицы для языков, где общий ответ не совпадает с тем, который реально использует страна, и русский — один из них. На этой странице вариант выбирается в опции «Вариант транслитерации», и таблица загружается в сетку, где каждую букву можно отредактировать.

Какой стандарт транслитерации используется для русского языка?

Приказ МИД России № 4271 — стандарт, используемый в российских загранпаспортах. В качестве примера того, что таблицы действительно различаются, украинская страница следует постановлению Кабинета Министров № 55. В русской таблице учтены официальные правила преобразования кириллицы в латиницу для обеспечения совместимости и правильного чтения.

Могу ли я изменить то, как транслитерируется определенная буква?

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

Что такое стоп-слова и стоит ли их удалять?

Это небольшие связующие слова — «и», «в», «на» — которые делают slug длиннее, не делая его более понятным. Опция «Удалить стоп-слова» включена по умолчанию, а список в поле «Стоп-слова» редактируется и поставляется предварительно заполненным английским списком и списком для языка страницы, на которой вы находитесь. Однако будьте честны в отношении преимуществ: это дает более короткий и опрятный адрес, а не лучшую позицию в поиске. Если заголовок полностью состоит из стоп-слов, инструмент сообщит об этом, а не вернет пустой slug.

Стоит ли использовать дефисы или подчеркивания в slug'е?

Дефисы, если только что-то в вашей системе не требует иного. Google рассматривает дефис как разделитель между словами, а подчеркивание — как символ, который их соединяет, поэтому my_first_post читается как одно длинное слово, а my-first-post — как три. По этой причине генератор по умолчанию использует дефис; опция «Разделитель в slug» предлагает «Подчеркивание (_)» для систем, которым это необходимо.

Какой длины должен быть URL-slug?

Достаточно коротким, чтобы читаться с первого взгляда — первые несколько слов несут смысл, а остальное — обычно хвост предложения. Число рядом с каждым результатом — это его длина в символах, и оно становится красным после 60, что примерно совпадает с моментом, когда результаты поиска начинают его обрезать, и когда становится неудобно вставлять его в сообщение. «Макс. длина» устанавливает жесткий потолок от 10 до 200 символов, по умолчанию 80.

Разрезает ли инструмент слова пополам, если slug слишком длинный?

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

Что произойдет, если два заголовка дадут одинаковый slug?

Опция «Сделать уникальными» включена по умолчанию и справляется с этим: первое вхождение сохраняет обычный slug, второе получает -2, третье -3 и так далее. Это перехватывает частый случай, когда два разных заголовка сводятся к одному и тому же — «Топ 10 советов» и «Топ-10 советов» оба становятся top-10-sovetov. Выключение этой опции дает вам сырой результат с сохраненными дубликатами. Обратите внимание, что уникальность гарантируется только в пределах пакета, который вы только что конвертировали; инструмент не может знать, что уже существует на вашем сайте.

Могу ли я вставить ссылку вместо заголовка?

Да. Опция «Взять slug из ссылки» включена по умолчанию, и когда вся строка является ссылкой, инструмент вытягивает последнюю часть пути, отбрасывает строку запроса и любые окончания вроде .html или .php, а также декодирует percent-encoding — так что адрес Википедии, заканчивающийся на %D0%9B%D1%8C%D0%B2%D1%96%D0%B2, возвращается как lviv, а не как набор шестнадцатеричных символов. Это срабатывает только для строки, которая полностью является ссылкой, поэтому URL, процитированный внутри предложения, обрабатывается как обычный текст.

Отправляется ли мой текст на сервер?

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

Почему мое одно предложение разбилось на два slug'а?

Потому что оно содержало запятую, а опция «Разделять ввод по» была установлена на «Автоматически». Этот режим рассматривает перенос строки как точный разделитель, а запятую — как вероятный, и он разбивает по запятым только тогда, когда части одной строки выглядят как самостоятельные значения — десятичная дробь вроде 3,5 или предложение с двоеточием намеренно оставляются целыми. Когда заголовок все равно разбивается, а не должен, установите «Разделять ввод по» на «С новой строки», и ввод будет разрезаться только там, где вы действительно нажали Enter.