Generator Slugów

Konwertuj dowolny tekst na czysty, przyjazny dla URL slug

Wypróbuj przykład
Separator

Tekst wejściowy

Slug

Działa lokalnie · Bezpieczne do wklejania sekretów
Slug pojawi się tutaj…

Czym jest slug URL?

Slug URL to część adresu strony internetowej, która identyfikuje konkretną podstronę w czytelnej dla człowieka formie. W adresie https://example.com/blog/moj-pierwszy-wpis slugiem jest moj-pierwszy-wpis. Generator slugów przekształca tytuł strony lub jej opis w ciąg znaków zawierający wyłącznie małe litery, cyfry i myślniki (lub inny wybrany separator). Proces ten usuwa spacje, pozbawia znaki akcentów i znaków diakrytycznych, odrzuca znaki specjalne oraz normalizuje białe znaki do pojedynczych separatorów.

Generowanie slugów to standardowy krok w systemach zarządzania treścią, generatorach statycznych witryn, platformach blogowych i każdej aplikacji, która tworzy adresy URL na podstawie danych wprowadzonych przez użytkownika. WordPress, Ghost, Hugo, Next.js i Django zawierają wbudowaną logikę generowania slugów, ponieważ czytelne adresy URL poprawiają zarówno użyteczność, jak i optymalizację pod kątem wyszukiwarek. Dobrze sformułowany slug informuje użytkownika o zawartości strony jeszcze przed kliknięciem odnośnika.

Termin „slug“ pochodzi z branży wydawniczej, gdzie oznaczał krótką etykietę identyfikującą artykuł w trakcie produkcji. W programowaniu webowym slug pełni tę samą funkcję: jest zwięzłym, unikalnym, bezpiecznym dla URL identyfikatorem wywodzącym się z dłuższego tytułu lub nazwy. Ponieważ slugi są generowane programowo, niezawodny generator slugów zapewnia spójność na każdej podstronie i w każdym języku.

Dlaczego warto używać tego generatora slugów?

Ręczne tworzenie slugów URL jest podatne na błędy. Pominięcie akcentu, pozostawienie podwójnego myślnika lub nieobsłużenie znaku Unicode może prowadzić do uszkodzonych lub nieestetycznych adresów URL. To narzędzie rozwiązuje te problemy automatycznie.

Natychmiastowa konwersja
Wklej lub wpisz dowolny tekst i obserwuj, jak slug aktualizuje się w czasie rzeczywistym. Bez przesyłania formularza, bez przeładowania strony. Przydatne, gdy potrzebujesz slugów dla całej partii tytułów artykułów lub nazw produktów.
🔒
Przetwarzanie z priorytetem prywatności
Całe generowanie slugów odbywa się w przeglądarce. Twój tekst nigdy nie opuszcza strony, więc możesz bezpiecznie konwertować robocze tytuły, wewnętrzne nazwy projektów lub nazwy jeszcze nieogłoszonych produktów.
⚙️
Konfigurowalny wynik
Wybierz między myślnikiem, podkreśleniem lub kropką jako separatorem. Włącz lub wyłącz konwersję na małe litery. Obejmuje to najczęstsze konwencje slugów stosowane w różnych frameworkach i systemach CMS.
🌐
Obsługa Unicode i akcentów
Generator stosuje normalizację NFD w celu usunięcia znaków diakrytycznych z liter akcentowanych. Café staje się cafe, naïve staje się naive. Znaki spoza alfabetu łacińskiego, których nie można transliterować, są usuwane w sposób czysty.

Zastosowania generatora slugów

Frontend Developer — planowanie tras
Generuj spójne slugi dla tras stron w React Router, Next.js lub Nuxt przed podłączeniem dynamicznych segmentów tras. Sprawdzaj, czy tytuły ze znakami specjalnymi produkują czyste ścieżki.
Backend Engineer — identyfikatory w bazie danych
Twórz bezpieczne dla URL slugi dla rekordów bazy danych, które wymagają czytelnych identyfikatorów. Slugi dobrze sprawdzają się jako klucze pomocnicze obok numerycznych ID w endpointach REST API, np. /api/products/sluchawki-bezprzewodowe.
DevOps — nazewnictwo plików konfiguracyjnych
Konwertuj nazwy usług lub etykiety środowisk na bezpieczne dla systemu plików ciągi znaków przeznaczone do plików konfiguracyjnych, tagów obrazów Docker lub nazw zasobów Kubernetes, gdzie znaki specjalne są niedozwolone.
QA Engineer — generowanie danych testowych
Szybko generuj warianty slugów z tytułów przypadków testowych, aby weryfikować routing URL, reguły przekierowań i zachowanie tagów kanonicznych w środowiskach stagingowych.
Data Engineer — normalizacja kolumn
Normalizuj niejednolite nagłówki kolumn z importów CSV lub Excela do spójnych identyfikatorów w formacie snake_case lub kebab-case do użycia w schematach baz danych lub potokach przetwarzania danych.
Student — projekty CMS i blogowe
Naucz się, jak działa generowanie slugów podczas budowania bloga z WordPress, Jekyll lub własnym systemem CMS. Użyj tego narzędzia, aby porównać swoje ręczne slugi z implementacją referencyjną.

Reguły generowania slugów i obsługa znaków

Generowanie slugów przebiega według przewidywalnej sekwencji przekształceń. Zrozumienie każdego kroku pomaga debugować nieoczekiwany wynik lub zbudować własną funkcję slugify.

  1. 1. Normalizacja Unicode (NFD)
    Rozkładaj złożone znaki na znak bazowy i znacznik łączący. Na przykład é (U+00E9) staje się e + combining acute accent (U+0301). Dzięki temu znaki diakrytyczne można usunąć w kolejnym kroku.
  2. 2. Usuwanie znaków diakrytycznych
    Usuń wszystkie znaki z bloku Unicode Combining Diacritical Marks (U+0300–U+036F). Po tym kroku café staje się cafe, a Ñ staje się N.
  3. 3. Usuwanie znaków specjalnych
    Zastąp każdy znak niebędący literą, cyfrą, białym znakiem ani myślnikiem spacją. Usuwa to znaki interpunkcyjne, symbole oraz znaki nieposiadające odpowiednika ASCII.
  4. 4. Przycinanie i zwijanie białych znaków
    Usuń wiodące i końcowe białe znaki, a następnie zwiń wszystkie ciągi kolejnych spacji, podkreśleń lub myślników do jednego wybranego separatora.
  5. 5. Zastosowanie wielkości liter i separatora
    Konwertuj na małe litery (opcjonalnie) i połącz słowa wybranym znakiem separatora: myślnikiem (-), podkreśleniem (_) lub kropką (.).

Tabela przekształceń znaków

Poniższa tabela pokazuje, jak poszczególne znaki są przetwarzane podczas generowania slugów:

WejścieWyjścieZastosowana reguła
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

Przykłady kodu

Generowanie slugów w popularnych językach i frameworkach. Każdy przykład obsługuje normalizację Unicode, usuwanie znaków diakrytycznych i wstawianie separatorów.

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"

Często zadawane pytania

Jaka jest różnica między slugiem a ścieżką URL?
Ścieżka URL to pełny segment po domenie, np. /blog/2026/moj-wpis. Slug to czytelna dla człowieka część identyfikująca konkretny zasób w tej ścieżce, zazwyczaj ostatni segment: moj-wpis. Slugi często wywodzą się z tytułów, podczas gdy reszta ścieżki odzwierciedla strukturę routingu witryny.
Jak generator slugów obsługuje pisma niełacińskie, takie jak chińskie lub arabskie?
Standardowe generatory slugów korzystające z normalizacji NFD i usuwania znaków diakrytycznych nie mogą transliterować pism niełacińskich. Znaki takie jak chińskie hanzi lub litery arabskie nie mają odpowiednika ASCII, więc są usuwane na etapie czyszczenia znaków specjalnych. Aby zachować treść niełacińską w slugach, potrzebujesz biblioteki transliteracyjnej, takiej jak limax (JavaScript), python-slugify z backendem unidecode lub niestandardowej tablicy mapowania.
Czy w slugach URL używać myślników czy podkreśleń?
Google traktuje myślniki jako separatory słów, a podkreślenia jako łączniki słów. Slug moj-pierwszy-wpis jest odczytywany jako trzy słowa (moj, pierwszy, wpis), natomiast moj_pierwszy_wpis jako jeden token. Dla celów SEO myślniki są standardowym wyborem w slugach URL. Podkreślenia są powszechne w nazwach plików, kolumnach baz danych i identyfikatorach programistycznych, gdzie pełnią rolę bezpiecznych dla zmiennych łączników.
Jak długi powinien być slug URL?
Google wyświetla w wynikach wyszukiwania około 60 znaków adresu URL przed obcięciem. Krótsze slugi są łatwiejsze do czytania, udostępniania i wpisywania. Dąż do 3–6 słów. Usuwaj spójniki i przyimki (i, w, z, na, do, od), gdy nie zmieniają znaczenia: jak-zbudowac-aplikacje-nextjs jest lepsze niż jak-zbudowac-aplikacje-w-nextjs-w-2026.
Czy generowanie slugów to to samo co kodowanie URL?
Nie. Kodowanie URL (kodowanie procentowe) zastępuje niebezpieczne znaki trójkami ze znakiem procentu, np. %20 dla spacji. Generowanie slugów usuwa lub zastępuje niebezpieczne znaki w całości, tworząc czysty ciąg bez artefaktów kodowania. Slug nigdy nie zawiera znaków procentu, spacji ani znaków specjalnych. Kodowanie URL zachowuje oryginalną treść; generowanie slugów przekształca ją w coś nowego.
Czy dwa różne tytuły mogą dać ten sam slug?
Tak. Tytuły różniące się wyłącznie interpunkcją, akcentami lub wielkością liter często dają ten sam slug. Na przykład Résumé Tips i Resume Tips oba dają resume-tips. W kontekście CMS lub bazy danych potrzebujesz sprawdzenia unikalności, które dołącza numeryczny sufiks (resume-tips-2) w przypadku kolizji.
Jak generować slugi w WordPress lub Django?
WordPress generuje slugi automatycznie z tytułu wpisu przy użyciu sanitize_title(). Slug możesz edytować w edytorze wpisu. Django udostępnia funkcję slugify() w django.utils.text, która dobrze obsługuje dane wejściowe ASCII. Dla obsługi Unicode przekaż allow_unicode=True. Obie platformy przechowują slugi w bazie danych obok pełnego tytułu.