Slug Generator
Turns a title into a clean, URL-safe slug — lowercase, hyphenated, no accented characters, no punctuation. The exact transformation a CMS runs behind the scenes when you save a post title and it quietly becomes the page's URL path.
What actually happens under the hood
- Accented and non-Latin-adjacent characters get normalised to their closest plain ASCII equivalent —
ébecomese,übecomesu— using Unicode normalisation (NFD decomposition, splitting a character into its base letter plus a separate accent mark, then dropping the accent mark) - Everything gets lowercased, since URL paths are conventionally lowercase even though they're technically case-sensitive
- Anything that isn't a letter or digit — spaces, punctuation, symbols — collapses into a single separator
- Leading and trailing separators get trimmed, so a title starting or ending with punctuation doesn't produce an ugly leading or trailing hyphen
Why URLs specifically avoid spaces and most punctuation
A raw space in a URL has to be percent-encoded as %20 or replaced with a + depending on context, which is exactly the kind of thing that turns a clean, readable link into a wall of encoded noise the moment it's shared anywhere — pasted into a chat, printed on a business card, read aloud over the phone. A slug sidesteps the whole problem by never containing anything that needs encoding in the first place, which is why "clean URLs" became the standard for blogs, documentation and e-commerce product pages rather than a stylistic preference.
Hyphens over underscores, and why it's not just a style preference
Google's own documentation has stated for years that it treats a hyphen as a word separator when indexing a URL, but treats an underscore as joining two words into one token — meaning coffee-shop is indexed as two separate searchable words while coffee_shop may be indexed as the single token "coffeeshop." For anything public-facing where search visibility matters, hyphens are the better default for exactly that reason, not just convention — underscores remain fine for internal identifiers, file names, or contexts where search indexing isn't a consideration at all.