Slug Generator

Преобразуйте любой текст в чистый URL-совместимый slug

Попробовать пример
Разделитель

Входной текст

Slug

Работает локально · Безопасно вставлять секреты
Slug появится здесь…

Что такое URL slug?

URL slug — это часть веб-адреса, которая идентифицирует конкретную страницу в удобочитаемом виде. В URL https://example.com/blog/my-first-post слагом является my-first-post. Slug generator преобразует заголовок или описание страницы в строку, содержащую только строчные буквы, цифры и дефисы (или другой выбранный разделитель). Этот процесс удаляет пробелы, убирает акценты и диакритические знаки, отбрасывает спецсимволы и нормализует пробельные символы в одиночные разделители.

Генерация slug — стандартный шаг в системах управления контентом, генераторах статических сайтов, блог-платформах и любых приложениях, которые формируют URL из пользовательского ввода. WordPress, Ghost, Hugo, Next.js и Django содержат логику генерации slug, поскольку читаемые URL улучшают удобство использования и поисковую оптимизацию. Правильно сформированный slug сообщает пользователю содержимое страницы ещё до перехода по ссылке.

Термин «slug» пришёл из газетного дела, где так называли краткую метку для идентификации материала в процессе производства. В веб-разработке slug выполняет ту же функцию: это компактный, уникальный, URL-безопасный идентификатор, производный от более длинного заголовка или названия. Поскольку slug формируются программно, надёжный slug generator обеспечивает единообразие для каждой страницы и каждой локали.

Зачем использовать этот Slug Generator?

Создание URL slug вручную чревато ошибками. Забытый акцент, двойной дефис или необработанный граничный случай с Unicode-вводом способны породить нерабочие или некрасивые URL. Этот инструмент решает перечисленные проблемы автоматически.

Мгновенное преобразование
Вставьте или введите любой текст и сразу наблюдайте обновление slug в реальном времени. Без отправки формы, без перезагрузки страницы. Удобно при необходимости сформировать slug для пакета заголовков статей или названий продуктов.
🔒
Конфиденциальность прежде всего
Вся генерация slug выполняется в вашем браузере. Текст никогда не покидает страницу, поэтому вы можете безопасно преобразовывать черновые заголовки, внутренние названия проектов или названия ещё не выпущенных продуктов.
⚙️
Настраиваемый результат
Выберите в качестве разделителя дефис, подчёркивание или точку. Включайте и отключайте приведение к нижнему регистру. Это охватывает наиболее распространённые соглашения о slug в различных фреймворках и CMS.
🌐
Обработка Unicode и акцентов
Генератор применяет нормализацию NFD для удаления диакритических знаков из символов с акцентами. Café становится cafe, naïve становится naive. Символы не из латинского алфавита, которые не могут быть транслитерированы, удаляются без следа.

Сценарии использования Slug Generator

Фронтенд-разработчик — планирование маршрутов
Формируйте единообразные slug для маршрутов страниц в React Router, Next.js или Nuxt до подключения динамических сегментов маршрута. Проверяйте, что заголовки со спецсимволами дают чистые пути.
Бэкенд-инженер — идентификаторы в базе данных
Создавайте URL-безопасные slug для записей базы данных, которым нужны читаемые идентификаторы. Slug хорошо работают как вторичные ключи наряду с числовыми ID для REST API эндпоинтов вида /api/products/wireless-headphones.
DevOps — именование конфигурационных файлов
Преобразуйте названия сервисов или метки окружений в безопасные для файловой системы строки для конфигурационных файлов, тегов Docker-образов или имён ресурсов Kubernetes, где спецсимволы не допускаются.
QA-инженер — генерация тестовых данных
Быстро формируйте варианты slug из заголовков тест-кейсов для проверки URL-маршрутизации, правил перенаправления и поведения canonical-тегов в тестовых окружениях.
Инженер по данным — нормализация столбцов
Приводите нечёткие заголовки столбцов из CSV или Excel к единообразным идентификаторам в snake_case или kebab-case для использования в схемах баз данных или конвейерах обработки данных.
Студент — проекты на CMS и блог-платформах
Разберитесь в принципах работы генерации slug при создании блога на WordPress, Jekyll или собственной CMS. Используйте этот инструмент, чтобы сравнить свои slug со справочной реализацией.

Правила генерации slug и обработка символов

Генерация slug следует предсказуемой последовательности преобразований. Понимание каждого шага поможет отладить неожиданный результат или создать собственную функцию slugify.

  1. 1. Нормализация Unicode (NFD)
    Разложите составные символы на базовый символ и комбинирующий знак. Например, é (U+00E9) становится e + комбинирующее острое ударение (U+0301). Это делает диакритические знаки удаляемыми на следующем шаге.
  2. 2. Удаление диакритических знаков
    Удалите все символы блока Unicode Combining Diacritical Marks (U+0300–U+036F). После этого шага café становится cafe, а Ñ становится N.
  3. 3. Удаление спецсимволов
    Замените любой символ, не являющийся буквой, цифрой, пробельным символом или дефисом, на пробел. Это убирает знаки пунктуации, символы и знаки, не имеющие ASCII-эквивалента.
  4. 4. Обрезка и схлопывание пробелов
    Удалите ведущие и завершающие пробелы, затем схлопните все последовательности идущих подряд пробелов, подчёркиваний или дефисов в один выбранный разделитель.
  5. 5. Применение регистра и разделителя
    Приведите к нижнему регистру (опционально) и соедините слова выбранным символом-разделителем: дефисом (-), подчёркиванием (_) или точкой (.).

Справочник преобразований символов

Таблица ниже показывает, как обрабатываются распространённые символы в процессе генерации slug:

Входной символРезультатПрименённое правило
Hello Worldhello-worldLowercase + space → hyphen
Café au Laitcafe-au-laitNFD normalization strips é → e
naïve résuménaive-resumeMultiple diacritics removed
Price: $9.99!price-9-99Symbols ($, !, :) removed
too many too-manyWhitespace trimmed and collapsed
one--two___threeone-two-threeMixed separators collapsed
Привет мирprivet-mirCyrillic (if transliteration) or removed
file_name.txtfile-name-txtDots and underscores replaced
React & Vuereact-vueAmpersand removed
2026-03-302026-03-30Digits and hyphens preserved

Примеры кода

Генерация slug на популярных языках и фреймворках. Каждый пример обрабатывает нормализацию Unicode, удаление диакритических знаков и вставку разделителя.

JavaScript
function slugify(text, separator = '-') {
  return text
    .normalize('NFD')                   // decompose accented chars
    .replace(/[\u0300-\u036f]/g, '')    // strip diacritics
    .toLowerCase()
    .replace(/[^\w\s-]/g, ' ')          // drop special chars
    .trim()
    .replace(/[\s_-]+/g, separator)     // collapse whitespace → separator

  // slugify('Café au Lait')      → "cafe-au-lait"
  // slugify('Hello World', '_')  → "hello_world"
}

// Node.js alternative using the `slugify` npm package:
// npm install slugify
// const slugify = require('slugify')
// slugify('Hello World', { lower: true, strict: true }) → "hello-world"
Python
import re
import unicodedata

def slugify(text: str, separator: str = '-') -> str:
    """Convert text to a URL-safe slug."""
    text = unicodedata.normalize('NFD', text)
    text = text.encode('ascii', 'ignore').decode('ascii')  # strip non-ASCII
    text = text.lower()
    text = re.sub(r'[^\w\s-]', ' ', text)
    text = text.strip()
    text = re.sub(r'[\s_-]+', separator, text)
    return text

# slugify('Café au Lait')      → "cafe-au-lait"
# slugify('Hello World', '_')  → "hello_world"

# Alternative: python-slugify (pip install python-slugify)
# from slugify import slugify
# slugify('Café au Lait')  → "cafe-au-lait"
Go
package main

import (
	"regexp"
	"strings"
	"unicode"

	"golang.org/x/text/unicode/norm"
	"golang.org/x/text/transform"
	"golang.org/x/text/runes"
)

func slugify(text string) string {
	// NFD normalize and strip diacritics
	t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
	result, _, _ := transform.String(t, text)

	result = strings.ToLower(result)
	re := regexp.MustCompile(`[^\w\s-]+`)
	result = re.ReplaceAllString(result, " ")
	result = strings.TrimSpace(result)
	re = regexp.MustCompile(`[\s_-]+`)
	result = re.ReplaceAllString(result, "-")
	return result
}

// slugify("Café au Lait") → "cafe-au-lait"
// slugify("Hello World")  → "hello-world"
PHP
function slugify(string $text, string $separator = '-'): string {
    // Transliterate non-ASCII characters
    $text = transliterator_transliterate(
        'Any-Latin; Latin-ASCII; Lower()', $text
    );
    // Remove anything that is not a word char, space, or hyphen
    $text = preg_replace('/[^\w\s-]/', ' ', $text);
    $text = trim($text);
    $text = preg_replace('/[\s_-]+/', $separator, $text);
    return $text;
}

// slugify('Café au Lait')      → "cafe-au-lait"
// slugify('Hello World', '_')  → "hello_world"

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

В чём разница между slug и URL-путём?
URL-путь — это полный сегмент после домена, например /blog/2026/my-post. Slug — это удобочитаемая часть, идентифицирующая конкретный ресурс внутри этого пути, как правило последний сегмент: my-post. Slug часто производятся от заголовков, тогда как остальная часть пути отражает структуру маршрутизации сайта.
Как генерация slug обрабатывает нелатинские системы письма, например китайскую или арабскую?
Стандартные генераторы slug, использующие нормализацию NFD и удаление диакритических знаков, не могут транслитерировать нелатинские системы письма. Символы китайского иероглифического письма или арабские буквы не имеют ASCII-эквивалента, поэтому они удаляются на этапе очистки спецсимволов. Чтобы сохранить нелатинское содержимое в slug, нужна библиотека транслитерации: limax (JavaScript), python-slugify с бэкендом unidecode или собственная таблица соответствий.
Что лучше использовать в URL slug: дефисы или подчёркивания?
Google рассматривает дефисы как разделители слов, а подчёркивания — как их соединители. Slug my-first-post читается как три слова (my, first, post), тогда как my_first_post — как один токен. С точки зрения SEO дефисы являются стандартным выбором для URL slug. Подчёркивания распространены в именах файлов, столбцах баз данных и программных идентификаторах, где они служат безопасными для переменных соединителями.
Какой длины должен быть URL slug?
Google отображает примерно 60 символов URL в результатах поиска, после чего обрезает его. Более короткие slug легче читать, копировать и набирать. Стремитесь к 3–6 словам. Удаляйте стоп-слова, когда они не влияют на смысл: how-to-build-nextjs-app лучше, чем how-to-build-a-next-js-app-in-2026.
Одно ли и то же — генерация slug и URL-кодирование?
Нет. URL-кодирование (percent-encoding) заменяет небезопасные символы триплетами со знаком процента, например %20 для пробела. Генерация slug полностью удаляет или заменяет небезопасные символы, производя чистую строку без артефактов кодирования. Slug никогда не содержит знаки процента, пробелы или спецсимволы. URL-кодирование сохраняет исходное содержимое; генерация slug преобразует его во что-то принципиально новое.
Могут ли два разных заголовка дать одинаковый slug?
Да. Заголовки, отличающиеся только знаками препинания, акцентами или регистром, нередко сводятся к одному slug. Например, Résumé Tips и Resume Tips оба дают resume-tips. В контексте CMS или базы данных необходима проверка уникальности, которая добавляет числовой суффикс (resume-tips-2) при коллизии.
Как генерировать slug в WordPress или Django?
WordPress автоматически генерирует slug из заголовка записи с помощью sanitize_title(). Slug можно отредактировать в редакторе записей. Django предоставляет функцию slugify() в django.utils.text, которая хорошо работает с ASCII. Для поддержки Unicode передайте allow_unicode=True. Обе платформы хранят slug в базе данных вместе с полным заголовком.