Slug Generator

Převeďte libovolný text na čistý URL-friendly slug

Zkusit příklad
Oddělovač

Vstupní text

Slug

Běží lokálně · Bezpečné pro vkládání tajných údajů
Slug se zobrazí zde…

Co je URL slug?

URL slug je část webové adresy, která identifikuje konkrétní stránku v lidsky čitelné podobě. V URL https://example.com/blog/my-first-post je slugem my-first-post. Generátor slugů transformuje název stránky nebo popis na řetězec obsahující pouze malá písmena, číslice a pomlčky (nebo jiný zvolený oddělovač). Tento proces odstraní mezery, diakritiku, speciální znaky a normalizuje bílé znaky na jednotlivé oddělovače.

Generování slugů je standardním krokem v systémech pro správu obsahu, generátorech statických stránek, blogovacích platformách a v každé aplikaci, která odvozuje URL adresy z uživatelského vstupu. WordPress, Ghost, Hugo, Next.js i Django obsahují logiku pro generování slugů, protože čitelné URL adresy zlepšují jak použitelnost, tak optimalizaci pro vyhledávače. Správně sestavený slug uživateli sdělí obsah stránky ještě před kliknutím na odkaz.

Pojem „slug“ pochází z novinového vydavatelství, kde označoval krátký štítek používaný k identifikaci článku během výroby. Ve webovém vývoji slug plní stejnou funkci: je to kompaktní, jedinečný, URL-bezpečný identifikátor odvozený z delšího názvu nebo titulku. Protože se slugy generují programově, spolehlivý generátor zajistí konzistenci na každé stránce a v každém jazyce.

Proč používat tento Slug Generator?

Ruční vytváření URL slugů je náchylné k chybám. Opomenutá diakritika, dvojitá pomlčka nebo nezohraněný okrajový případ s Unicode vstupem mohou vytvořit nefunkční nebo ošklivé URL adresy. Tento nástroj tyto problémy řeší automaticky.

Okamžitá konverze
Vložte nebo napište libovolný text a sledujte, jak se slug aktualizuje v reálném čase. Žádné odesílání formuláře, žádné načítání stránky. Užitečné při hromadném zpracování názvů článků nebo produktů.
🔒
Zpracování v prohlížeči
Veškeré generování slugů probíhá přímo ve vašem prohlížeči. Váš text nikdy neopustí stránku, takže můžete bezpečně převádět koncepty názvů, interní názvy projektů nebo dosud nezveřejněné názvy produktů.
⚙️
Konfigurovatelný výstup
Vyberte si mezi oddělovači pomlčka, podtržítko nebo tečka. Přepněte malá písmena zapnuto nebo vypnuto. To pokrývá nejběžnější konvence pro slugy napříč různými frameworky a CMS systémy.
🌐
Podpora Unicode a diakritiky
Generátor používá NFD normalizaci k odstranění diakritiky z písmen s háčky a čárkami. Café se stane cafe, naïve se stane naive. Znaky nelatinských abeced, které nelze transliterovat, jsou čistě odstraněny.

Případy použití Slug Generatoru

Frontend vývojář — plánování tras
Generujte konzistentní slugy pro trasy stránek v React Router, Next.js nebo Nuxt ještě před propojením dynamických segmentů tras. Ověřte, že názvy se speciálními znaky vytvářejí čisté cesty.
Backend vývojář — databázové identifikátory
Vytvářejte URL-bezpečné slugy pro záznamy v databázi, které potřebují lidsky čitelné identifikátory. Slugy fungují dobře jako sekundární klíče vedle číselných ID pro REST API endpointy jako /api/products/wireless-headphones.
DevOps — pojmenování konfiguračních souborů
Převádějte názvy služeb nebo štítky prostředí na řetězce bezpečné pro souborový systém pro konfigurační soubory, Docker image tagy nebo názvy Kubernetes prostředků, kde nejsou povoleny speciální znaky.
QA inženýr — generování testovacích dat
Rychle generujte varianty slugů z názvů testovacích případů pro ověření URL směrování, pravidel přesměrování a chování kanonických tagů ve stagingových prostředích.
Datový inženýr — normalizace sloupců
Normalizujte nepořádné záhlaví sloupců z importů CSV nebo Excelu na konzistentní identifikátory ve formátu snake_case nebo kebab-case pro použití v databázových schématech nebo datových pipelinech.
Student — projekty s CMS a blogem
Zjistěte, jak generování slugů funguje při tvorbě blogu s WordPressem, Jekyllem nebo vlastním CMS. Použijte tento nástroj k porovnání ručně vytvořených slugů s referenční implementací.

Pravidla generování slugů a zpracování znaků

Generování slugů se řídí předvídatelnou posloupností transformací. Pochopení každého kroku pomáhá ladit neočekávaný výstup nebo vytvořit vlastní funkci slugify.

  1. 1. Unicode normalizace (NFD)
    Rozložte kombinované znaky na základní znak + kombinační značku. Například é (U+00E9) se stane e + combining acute accent (U+0301). Díky tomu lze diakritiku v dalším kroku odstranit.
  2. 2. Odstranění diakritiky
    Odstraňte všechny znaky v bloku Unicode Combining Diacritical Marks (U+0300–U+036F). Po tomto kroku se café stane cafe a Ñ se stane N.
  3. 3. Odstranění speciálních znaků
    Nahraďte každý znak, který není písmeno, číslice, bílý znak nebo pomlčka, mezerou. Tím se odstraní interpunkce, symboly a znaky bez ASCII ekvivalentu.
  4. 4. Oříznutí a sjednocení bílých znaků
    Odstraňte počáteční a koncové bílé znaky, poté sjednoťte všechny sekvence po sobě jdoucích mezer, podtržítek nebo pomlček na jediný zvolený oddělovač.
  5. 5. Použití velikosti písmen a oddělovače
    Převeďte na malá písmena (volitelně) a spojte slova zvoleným oddělovačem: pomlčka (-), podtržítko (_) nebo tečka (.).

Referenční tabulka transformace znaků

Níže uvedená tabulka ukazuje, jak jsou běžné znaky zpracovány během generování slugů:

VstupVýstupPoužité pravidlo
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

Příklady kódu

Generování slugů v populárních jazycích a frameworcích. Každý příklad zpracovává Unicode normalizaci, odstranění diakritiky a vkládání oddělovačů.

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"

Často kladené otázky

Jaký je rozdíl mezi slugem a URL cestou?
URL cesta je celý segment za doménou, například /blog/2026/my-post. Slug je lidsky čitelná část identifikující konkrétní zdroj v rámci této cesty, typicky poslední segment: my-post. Slugy se odvozují z názvů, zatímco zbytek cesty odráží strukturu směrování webu.
Jak generování slugů zpracovává nelatin­ská písma jako čínštinu nebo arabštinu?
Standardní generátory slugů využívající NFD normalizaci a odstraňování diakritiky neumí transliterovat nelatinská písma. Znaky jako čínské znaky hanzi nebo arabská písmena nemají ASCII ekvivalent, takže jsou odstraněny během kroku čištění speciálních znaků. Chcete-li v slugu zachovat nelatinský obsah, potřebujete transliterační knihovnu jako limax (JavaScript), python-slugify s backendem unidecode nebo vlastní mapovací tabulku.
Mám v URL slugu používat pomlčky nebo podtržítka?
Google považuje pomlčky za oddělovače slov, ale podtržítka za spojovací znaky slov. Slug my-first-post je čten jako tři slova (my, first, post), zatímco my_first_post je čten jako jeden token. Pro účely SEO jsou pomlčky standardní volbou pro URL slugy. Podtržítka jsou běžná v názvech souborů, databázových sloupcích a programátorských identifikátorech, kde slouží jako bezpečné spojovníky proměnných.
Jak dlouhý by měl být URL slug?
Google zobrazuje ve výsledcích vyhledávání přibližně 60 znaků URL, než je zkrátí. Kratší slugy se lépe čtou, sdílejí a zadávají. Cílem jsou 3 až 6 slov. Odstraňte pomocná slova (the, a, an, and, or, in), pokud nemění smysl: how-to-build-nextjs-app je lepší než how-to-build-a-next-js-app-in-2026.
Je generování slugů totéž co URL kódování?
Ne. URL kódování (percent-encoding) nahrazuje nebezpečné znaky trojicemi s procentem, jako je %20 pro mezeru. Generování slugů nebezpečné znaky zcela odstraní nebo nahradí, čímž vznikne čistý řetězec bez artefaktů kódování. Slug nikdy neobsahuje znak procenta, mezery ani speciální znaky. URL kódování zachovává původní obsah; generování slugů ho transformuje na něco nového.
Mohou dva různé názvy vytvořit stejný slug?
Ano. Názvy lišící se pouze interpunkcí, diakritikou nebo velikostí písmen se często sjednotí do stejného slugu. Například Résumé Tips i Resume Tips oba vytvoří resume-tips. V kontextu CMS nebo databáze je nutná kontrola jedinečnosti, která při kolizi přidá číselnou příponu (resume-tips-2).
Jak generovat slugy ve WordPressu nebo Djangu?
WordPress generuje slugy automaticky z názvu příspěvku pomocí funkce sanitize_title(). Slug lze upravit v editoru příspěvku. Django poskytuje funkci slugify() v django.utils.text, která dobře zpracovává ASCII vstup. Pro podporu Unicode předejte allow_unicode=True. Obě platformy ukládají slugy do databáze vedle plného názvu.