Turn any title into a clean, shareable URL slug as you type
| System | Separator | Case | Notes |
|---|---|---|---|
| WordPress | Hyphen | Lowercase | sanitize_title strips most punctuation; the post_name field holds 200 characters |
| Django | Hyphen | Lowercase | slugify default; SlugField caps at 50 chars and ASCII unless allow_unicode is set |
| Laravel | Hyphen | Lowercase | Str::slug transliterates accents first, then hyphenates |
| Rails | Hyphen | Lowercase | String#parameterize; older versions used a double dash |
| GitHub repos | Free-form | Preserved | Letters, digits, hyphens, underscores, periods; up to 100 characters |
| Common SEO practice | Hyphen | Lowercase | 3-5 words, roughly 60 characters or fewer |
The defaults above match what WordPress and Laravel produce, which is also what most CMSs and static site generators expect when you paste a slug into a permalink field.
A slug has one job: compress a human title into characters that are safe in every browser, server, and printer along the way. That means lowercase ASCII letters, digits, and one separator. Everything else either disappears or becomes the separator.
Step by step: normalize and strip accents (Résumé → Resume), lowercase everything, drop apostrophes so Home's becomes homes, turn ampersands into the word and, then replace every remaining run of non-alphanumeric characters — spaces, punctuation, emoji — with a single hyphen. Optional stopword removal deletes filler words like a, the, and of, and the max-length option trims at the last full word rather than cutting mid-word.
Paste or type a title and the slug updates on every keystroke. Switch to underscores if you're naming a file or a wiki page. Set a max length when a CMS or database column caps you. Tick the stopword box for long headline-style titles. The copy button puts the finished slug on your clipboard, ready for a permalink field.
Take 10 Tips for a Better Café Résumé in 2026!. The accents strip first: Cafe, Resume. Lowercased, the spaces and the exclamation mark collapse into hyphens, and the result is 10-tips-for-a-better-cafe-resume-in-2026 — 40 characters, 8 words, valid in any URL bar exactly as written.
Punctuation-heavy titles behave the same way. C++ für Anfänger: Teil #2 loses its umlaut (für → fur), and the ++, colon, and # each become a single hyphen: c-fur-anfanger-teil-2. Nothing is left that a browser would have to percent-encode.
The slug is the last, human-readable segment of a URL — in toolaspect.com/slug-generator/, the slug is slug-generator. It identifies the page and, unlike an ID or a query string, tells people and search engines what the page is about.
Three to five words is the sweet spot, and staying under about 60 characters keeps the full URL from being cut off in search results. Longer slugs work, but every extra word dilutes the keywords that matter and makes the link harder to share.
Hyphens. They are the universal convention for public URLs — WordPress, Django, Laravel, and Rails all build hyphenated slugs by default, and Google has historically treated the hyphen as a word separator. Underscores survive in technical corners like wiki page names and file names, not marketing URLs.
Modestly, and mostly through keyword relevance. A descriptive slug that matches the search phrase helps users and reinforces what the page is about; a bloated or cryptic one hurts click-through. Changing a slug later breaks links unless you set up a redirect, so it pays to get it right at publish time.
Accented characters, spaces, apostrophes, ampersands, emoji, and most punctuation — all of them force percent-encoding into the URL and make it ugly and error-prone. Dates and version numbers are worth avoiding in evergreen content too, since they make a still-useful page look stale.