Skip to tool
ecech.
💻 Developer & Code

Free URL Slug Generator That Handles Accents, Symbols and Stop Words

Turn a headline into a clean, safe URL. Strips accents properly, keeps the words that matter, and tells you when a character cannot be transliterated.

Slugs

What happened to each character

Advertisement

How the calculation works

Café Crème & Crème Brûlée → cafe-creme-creme-brulee 1. Normalise NFD splits é into e + combining mark 2. Strip marks drop the accents, keep the base letter 3. Map the rest ß→ss ø→o ð→d NFD cannot split these 4. Replace anything not a-z or 0-9 becomes a hyphen 5. Collapse squash runs, trim the ends Step 3 is the one most implementations skip — and it is why “Straße” so often becomes “stra-e”. A handful of letters carry no combining mark to strip. They need an explicit map or they vanish.

How to Use This Tool

A slug is the human-readable part of a URL — the how-much-is-20-off in example.com/how-much-is-20-off. Getting it right matters more than it looks, because a URL is the one part of a page you cannot casually change later without breaking every link to it.

How a title becomes a slug

Five steps, and one of them is usually skipped:

  1. Normalise to NFD. Unicode can store é either as a single character or as e plus a combining acute accent. NFD forces the second form.
  2. Strip combining marks. Now the accents are separate characters, removing them leaves the plain Latin letter behind. This handles the great majority of European text in one line.
  3. Map what is left. A handful of letters carry no combining mark to strip — ß ø ð þ æ Đ and a few others. NFD cannot decompose them, so they need an explicit table or they disappear entirely. This is why so many slugifiers turn Straße into stra-e.
  4. Replace everything else. Anything outside a–z and 0–9 becomes the separator.
  5. Collapse and trim. Squash runs of separators into one and remove them from the ends.
Two kinds of accented letter, and only one of them handles itself. Decomposes under NFD é à ü ñ ç å ö become e + mark, a + mark … Strip the mark, keep the letter. café → cafe ✓ Needs an explicit map ß ø æ ð þ đ ł no combining mark to remove so they get deleted entirely straße → stra-e ✗ (want strasse)
The right-hand column is small enough to hard-code and large enough to matter across German, Danish, Norwegian, Icelandic, Polish and Vietnamese.

The stop-word question

Removing a, the, of, and, for makes slugs shorter and denser. It is a real trade-off rather than an improvement. Shorter URLs display better in search results and are easier to share, but stop words sometimes carry meaning: state-of-the-art and state-art do not read the same, and how-to-cook loses its shape as cook.

Google has said for years that it does not weight keywords in URLs heavily, so the SEO argument for stripping them is weak. Leave it off unless a slug is genuinely unwieldy.

Length

There is no technical limit worth worrying about, but URLs are truncated in search results at roughly 60–70 characters on desktop and less on mobile. The tool warns past 60. Beyond about 100 you are producing something nobody will ever read or paste correctly.

Non-Latin scripts

Chinese, Japanese, Korean, Arabic, Hebrew, Thai and Cyrillic cannot be transliterated by stripping marks, because there is nothing to strip — a proper transliteration needs a dictionary, and for Chinese it needs to know the reading of each character in context. This tool does not pretend otherwise. It flags those characters and leaves you two honest options: keep them as percent-encoded UTF-8, which every modern browser displays correctly, or write the slug in English yourself. Percent-encoding is fine for search engines and ugly when copied as plain text; a hand-written English slug is the more durable choice.

Duplicates

Two different titles very often produce the same slug once punctuation is removed. In bulk mode the tool marks collisions, because the alternative is discovering them when your CMS silently appends -2 to something you wanted to keep clean.

Advertisement

Frequently Asked Questions

What makes a good URL slug?
Short, lowercase, hyphen-separated, made of real words, and stable. Stability matters most: a URL is the one part of a page you cannot change later without breaking every existing link to it, so it is worth a moment's thought before publishing rather than after.
Should I use hyphens or underscores?
Hyphens. Google has stated it treats hyphens as word separators and underscores as word joiners, so file_name reads as one token while file-name reads as two. Hyphens are also the overwhelming convention, which matters for people typing a URL from memory.
Why does my slugifier turn 'Straße' into 'stra-e'?
Because it only strips combining accent marks, and ß has none to strip — it is a single indivisible character rather than an s with a mark on it. It therefore falls through to the 'replace everything else' step and becomes a separator. Correct handling needs an explicit map from ß to ss, along with ø, æ, ð, þ, đ and ł.
Should I remove stop words like 'the' and 'of'?
Usually not. Google does not weight URL keywords heavily, so the SEO gain is minimal, while the readability loss can be real — 'state-of-the-art' and 'state-art' do not mean the same thing to a human. Remove them only when a slug is genuinely too long.
How long should a URL slug be?
Under about 60 characters, which is roughly where search results start truncating the displayed URL. There is no technical limit that matters, but a slug beyond 100 characters is not something anyone will read, remember or paste correctly.
Can I use Chinese or Arabic characters in a URL?
Technically yes — browsers percent-encode them and display them correctly, and search engines handle them fine. The practical problem is that the encoded form is unreadable when pasted as plain text, and some older systems mangle it. Writing the slug in English is usually the more durable choice, and this tool will not pretend it can transliterate those scripts, because doing so properly requires a dictionary.
What happens if two titles produce the same slug?
Most content systems silently append a number, so you end up with 'my-post' and 'my-post-2' with no indication which is which. Bulk mode here flags collisions before you publish, which is the only point at which fixing them is free.

Related tools in Developer & Code

Browse all Developer & Code tools
The desk where ecech. tools get written: a laptop, a notebook of to-dos and a whiteboard listing the tools on the site.

Made by one person

ecech. is not a content farm. Every tool here is written and checked by hand, one at a time, by someone who wanted the tool to exist and could not find a version that showed its working.

No accounts and no sign-in, and nothing you type reaches a server — every calculation on this page runs inside your browser. The ads are served by Google and do set their own cookies, which is set out in full on the privacy page. More about the site.