What makes a good slug
A slug is the human-readable tail of a URL, and good ones share five properties. Lowercase — URL paths can be case-sensitive, so mixed case invites duplicate-URL problems. Hyphen-separated — search engines read hyphens as word boundaries (see the FAQ on underscores). ASCII — accented and non-Latin characters are legal in modern URLs but get percent-encoded when shared (café becomes caf%C3%A9 in many contexts), so transliterating to plain letters keeps links readable everywhere. Meaningful but short — the words a person would use to describe the page, minus the filler; three to six words covers most titles. Stable — a slug is an address, so pick one you won’t want to change; changing it later means redirects.
How transliteration works
Most accented letters decompose in Unicode into a base letter plus a combining accent — é is e + ´ — so the accent can be stripped mechanically (Unicode NFD normalization), leaving the base letter. But a set of letters are their own characters with no decomposition, and each needs an explicit mapping. This tool carries those mappings:
| Character | Becomes | Notes |
|---|---|---|
| é è ê ë á ü ñ ç … | e e e e a u n c | Accent stripped via Unicode decomposition |
| ß | ss | German sharp s |
| æ / Æ | ae | Ligature expanded |
| œ / Œ | oe | Ligature expanded |
| ø / Ø | o | No Unicode decomposition — mapped directly |
| å | a | Decomposes normally |
| đ / Đ, ð | d | Stroke and eth |
| þ / Þ | th | Thorn |
| ł / Ł | l | Polish stroke l |
| ħ ŧ ŋ | h t ng | Stroked/engma forms |
| & | and | Written out rather than dropped |
| Other scripts (Cyrillic, CJK…) | removed | Honest limit: no romanization is attempted — see FAQ |
Batch mode
Paste multiple lines — one title per line — and the tool switches to batch mode automatically: each line becomes its own slug, listed with its source title, with per-row copy, copy-all, and a .txt download. Typical use: converting a content calendar’s worth of headlines, generating slugs for a CMS import, or renaming a folder of drafts consistently. All the same options (stopwords, max length, separator) apply to every row.
Frequently asked questions
Underscores or hyphens?
Hyphens. Search engines treat a hyphen as a word separator (blue-widgets reads as “blue widgets”) but treat an underscore as a word joiner (blue_widgets reads as one token, “blue_widgets”). That convention dates to how programming identifiers use underscores, and it’s never been reversed. The underscore option exists here for systems that require it — not because it’s ever the better choice for a public URL.
How long should a slug be?
There’s no ranking cutoff — the practical guidance is “as short as stays meaningful.” Three to six words is typical; beyond roughly 60 characters, slugs get truncated in shares and look unwieldy. The max-length option trims at a word boundary so a limit never leaves half a word (how-to-brew-espre) at the end.
Should I remove stopwords?
Optional, and the trend has moved away from it. Removing a/the/of made sense when URLs were length-constrained displays; today, readability wins, and how-to-train-a-puppy reads better than train-puppy. Remove them when a title is long and the filler genuinely adds nothing; keep them when they carry meaning (on vs. off, with vs. without — this tool’s stopword list deliberately excludes meaning-bearing prepositions like those).
What happens to text in other alphabets?
It’s removed, and the tool is honest about that rather than pretending: proper romanization (Cyrillic → Latin, pinyin for Chinese) is language-specific and lossy, and a bad automatic guess is worse than none. For non-Latin titles, either write the slug’s words in Latin yourself, or keep the native-script URL — modern browsers display them fine, at the cost of percent-encoding when the link is copied around.
Is my text uploaded anywhere?
No — slugging runs in your browser tab with no server or network request, and the page works offline once loaded.