URL Slug Generator

Turn titles into clean URL slugs: strip diacritics, transliterate Arabic to Latin or keep it percent-encoded, drop stop words, set a maximum length and resolve duplicates in bulk lists.

Workspace

How the result is calculated

Steps in order: (1) NFKD normalization, removal of Arabic diacritics (ً ٌ ٍ َ ُ ِ ّ ْ and others) and tatweel, folding hamza-alef forms to plain alef, converting Arabic-Indic and Persian digits to 0-9, and dropping apostrophes; (2) splitting at any character that is not a letter or digit; (3) removing stop words if chosen (kept if nothing else remains); (4) in transliterate mode each Arabic letter is replaced from a fixed table (ث = th, خ = kh, ش = sh, ق = q, ع = a …) and characters without a mapping are dropped; (5) joining with the separator; if the length exceeds the limit, trailing words are dropped whole. In lists a -2, -3 suffix resolves duplicates.

Limits: Arabic transliteration yields a consonant skeleton with no short vowels (مرحبا → mrhba) because Arabic is written without them; it works as a URL identifier, not as pronunciation. For SEO a hand-written descriptive English slug is often better. Other scripts (Chinese, Russian) are not transliterated and their letters are dropped in that mode; use “Keep original letters” for them. The stop word lists are deliberately short.

FAQ

Should I keep Arabic in the URL or transliterate?

Both are accepted by Google. An Arabic URL becomes %D8… when shared, making it long and hard to copy, so many sites prefer a descriptive Latin slug while the title stays Arabic.

What is the best slug length?

There is no official limit; short and clear (3–5 words) is the usual practice. What matters is that it describes the page and does not change after publishing.

Newest tools

Recently added free tools — they run in your browser without uploading your data

All tools →

Compare two texts by line, word or character with the Myers algorithm, a similarity score and a unified patch export

Local

Percent-encode and decode in RFC 3986, encodeURIComponent, encodeURI and form modes with URL parsing and punycode

Local