How to use it
- Paste one or more titles — one per line, one slug per line out.
- Pick a separator and decide whether Turkish or German transliteration applies.
- Copy the result.
The Turkish i problem
This is the part most slug generators get wrong, and it is worth being precise about.
The usual approach to accents is Unicode normalisation: decompose each character into a base letter plus combining marks (NFD), then delete the marks. It works beautifully for é → e and ñ → n. It fails for Turkish, because Turkish has four distinct letters where other Latin alphabets have two.
İ (capital dotted i, U+0130) decomposes into I plus a combining dot above. Strip the mark and you get I — correct, by luck. But ı (lowercase dotless i, U+0131) does not decompose at all: it is an atomic character with no combining mark to strip. Generic code leaves it as-is, and it then falls foul of the ASCII filter and disappears entirely. A title like Yılın En İyisi becomes yln-en-iyisi — a word silently lost.
Turkish also has the reverse problem in case conversion. Lowercasing I in Turkish gives ı, not i. Any pipeline that lowercases with the invariant culture and then transliterates will produce different results from one that uses the Turkish culture. This tool maps the letters explicitly before any case change, so the outcome does not depend on locale.
The same explicit approach handles German, where the convention is expansion rather than substitution: ä → ae, ö → oe, ü → ue, ß → ss. Note that German and Turkish disagree about ö and ü — hence the separate toggle.
What makes a good slug
Hyphens, not underscores. Google treats a hyphen as a word separator and an underscore as a joiner, so remove-line-breaks is three words and remove_line_breaks risks being read as one.
Lowercase only. The path portion of a URL is case-sensitive. /About and /about are distinct URLs, and serving the same content at both is the simplest way to create duplicate content for yourself.
Short, and front-loaded. The important words go first, because search results truncate. Drop filler — the, a, how-to — unless it carries the search intent.
Stable. Changing a slug breaks every existing link to it. If you must change one, keep the old path working with a 301 redirect; a slug change without a redirect throws away whatever ranking the page had earned.
One slug per line
The input is processed line by line, which makes bulk work practical: paste a list of article titles exported from a CMS and get the full set of slugs in one pass, ready to paste back. The status bar reports the longest result so you can spot the ones that need trimming before they reach production.