URL Slug Generator_
Type a title and read the URL slug back. The difference between this and most slug tools is one word: transliteration. Crème Brûlée becomes creme-brulee here and crme-brle almost everywhere else, because stripping a character you do not recognise is easier than knowing what it stands for.
Cyrillic and Greek are mapped too, ß becomes ss rather than disappearing, and an ampersand becomes the word and instead of a gap. Whatever the tool cannot map, it says so rather than leaving you to notice the hole.
—- Input
- A title, a heading, a product name — anything you would put in a URL. Accents, Cyrillic, Greek, currency symbols and punctuation all have somewhere to go.
- Output
- A lowercase slug joined by your chosen separator, with no leading, trailing or doubled separators, and no character a URL would have to escape.
- Processing
- String work in this tab. The transliteration map is part of the page rather than a service call, which is why it answers on every keystroke.
- Limits
- Latin, Cyrillic and Greek are transliterated. CJK, Arabic, Hebrew and other scripts have no meaningful ASCII form and are dropped — the page reports it rather than handing back an empty slug silently.
- The slug you should not change
- A published URL is a promise. Changing a slug breaks every link to it — bookmarks, other people’s articles, search results — and the fix is a 301 redirect, not an edit. Get it right before publishing, and after that treat a bad slug as a cost of doing business rather than something to tidy up.
What slugify actually does
The word, and where it came from
A slug is the readable part at the end of a URL — the what-slugify-does rather than the ?id=4471. The name is borrowed from newspaper production, where a slug was the short label a story carried through editing before it had a headline. To slugify is to turn a title into that label mechanically: lowercase it, replace anything that is not a letter or a digit with a separator, and collapse what is left into something a person can read aloud and a server can route.
Transliteration is the part that separates the tools
Removing unsupported characters is one line of code, and it produces crme-brle. Mapping them takes a table, and it produces creme-brulee. Most of Latin comes free from Unicode normalisation, which splits an accented letter into a base letter plus a mark that can then be discarded — but the interesting cases do not decompose at all. ß is not an s with something on it, ø is not an o with a mark, and æ is a letter in its own right. Those have to be named one by one, and a tool either has that table or it does not.
Where a slug stops being reversible
Slugification throws information away on purpose, so two different titles can produce the same slug — The Best of 2026 and The Best of 2026? both give the-best-of-2026. Any system storing slugs therefore needs a uniqueness rule, and the readable one is a numeric suffix: the-best-of-2026-2 is guessable and stable, where a random suffix tells the reader nothing and changes if the operation is retried.
Stop words, and why the default leaves them in
Dropping the, of and and makes a slug shorter and is, in 2026, worth close to nothing for ranking — the days when a keyword-dense URL moved a page are long gone. It costs readability when the list is aggressive: strip it and How It Works becomes how-works. The option is here because publishing conventions differ, it is off by default, and the list it uses is deliberately short.
Changing a published slug is a redirect, not an edit
Every link to a page points at its slug. Editing one after publication breaks bookmarks, inbound links and anything already in a search index, and the only correct repair is a 301 from the old address to the new one — kept forever, because links do not expire. This is the argument for spending thirty seconds on a slug before publishing and none afterwards.
Type the title, adjust if you need to
- 01Type or paste the title. The slug appears as you type, with a preview of how it looks in a full URL.
- 02Change the separator if your platform expects underscores — WordPress and most CMSs use hyphens, and hyphens are what search engines read as word boundaries.
- 03Set a maximum length if your system has one. It cuts at a word boundary, never mid-word.
- 04Watch the notes: they appear when characters had to be dropped, when stop words were removed, or when the slug was truncated.
A title with accents in it
The obvious approach strips what it does not recognise and produces something unreadable. Mapping each letter to its ASCII form keeps the words.
Crème Brûlée: A Beginner’s Guide
creme-brulee-a-beginners-guide (most tools: crme-brle-a-beginner-s-guide)
A product name full of symbols
Ampersands and percent signs mean something to a reader and nothing in a path. Turning them into words keeps the meaning instead of leaving a gap.
Salt & Pepper — 50% Off
salt-and-pepper-50-percent-off
A non-Latin heading
Cyrillic and Greek have established Latin transliterations. Dropping them entirely would leave a slug made only of the digits.
Москва — 2026
moskva-2026
Two posts that collide
Slugification is lossy, so different titles can produce the same slug. A numeric suffix stays readable and predictable where a random one does not.
the-best-of-2026
the-best-of-2026-2
What each kind of character becomes
| Input | Becomes | Why |
|---|---|---|
é ñ ü å | e n u a | Unicode normalisation splits the mark off the base letter. |
ß æ ø þ ł | ss ae o th l | These do not decompose — each one is named explicitly in the table. |
Москва | moskva | Cyrillic uses its conventional Latin transliteration. |
Αθήνα | athina | Greek is decomposed first, so accented letters reach their base form. |
& % € | and percent euro | Symbols that carry meaning become the word, spaced so they do not glue to a number. |
beginner's | beginners | An apostrophe joins a word rather than splitting it — straight or curly. |
: , ! — … | separator | Punctuation is a word boundary, collapsed so runs never produce doubled separators. |
日本語 | dropped | No conventional ASCII form exists. The page reports it rather than returning an empty slug. |
Every row here is asserted in the test suite against the function itself, including the two that were wrong on the first draft: the percent sign glued itself to the preceding number, and accented Greek survived untransliterated.
Habits that make slugs age well
- Use hyphens rather than underscores. Search engines treat a hyphen as a word boundary and an underscore as part of the word, which is the one place the choice still matters.
- Keep it short enough to read in a search result, and long enough to say what the page is. Three to six words covers almost everything.
- Leave dates out unless the page is genuinely about a date. A slug containing 2026 looks stale in January and cannot be fixed without a redirect.
- Decide the slug before publishing, not after. Changing it later costs a permanent redirect and every link that does not follow one.
- Set uniqueness with a numeric suffix, not a random string.
post-2is readable and stable;post-a8f3is neither.
Where slugs cause problems later
Editing a published slug breaks every link to it
Bookmarks, inbound links and search results all point at the old address. A 301 redirect is the only correct repair, and it has to be kept indefinitely.
Two titles can produce one slug
The transformation is lossy by design, so any system that stores slugs needs a uniqueness rule. Without one, the second post overwrites the first or fails at save time.
Scripts with no ASCII form are dropped, not translated
Transliteration is not translation. Chinese, Japanese, Arabic and Hebrew have no conventional Latin spelling that a table can supply, so a title in those scripts leaves only its digits — which is why this page says so rather than handing back something empty.
A slug is not a title
It is an address that happens to be readable. Optimising it as though it were a headline produces long, keyword-stuffed URLs that help nobody and look like spam in a search result.
Transliteration coverage and rules
- Latin
- Normalised to NFD and stripped of combining marks, which covers the accented alphabet. Letters that do not decompose — ß, æ, œ, ø, đ, ð, þ, ł and others — are mapped explicitly.
- Cyrillic and Greek
- Mapped character by character using the conventional Latin forms, with the input decomposed first so accented Greek reaches its base letter.
- Symbols
- Currency, ampersand, at, percent, degree and fraction signs become words, surrounded by spaces so they cannot glue to an adjacent number.
- Apostrophes
- Removed rather than treated as boundaries, in both the straight and curly forms, so a possessive stays one word.
- Guarantees
- No leading, trailing or repeated separator; nothing outside letters, digits and the separator; truncation only at a word boundary; and never an empty result caused by removing every stop word.
- Network
- None from tool code. A test sweep calls every function this page uses with
fetchandXMLHttpRequestreplaced by stubs that throw, so a stray request fails the build instead of shipping. Disconnect from the network and the page still works.
Questions about slugs and slugify
What is slugify?
Turning a piece of text into a URL slug: lowercasing it, replacing anything that is not a letter or digit with a separator, collapsing the runs, and mapping accented or non-Latin letters to their closest ASCII form. The word comes from newspaper production, where a slug was the short label a story carried through editing before it had a headline.
What is a URL slug?
The readable part at the end of an address — the-best-cameras rather than ?post=4471. It identifies the page to the server and describes it to anybody reading the link, which is why it appears in search results and in messages where nobody clicked through yet.
Should a slug use hyphens or underscores?
Hyphens. Search engines treat a hyphen as a word boundary and an underscore as part of the word, so best_camera_2026 can be read as one long token. Every major platform defaults to hyphens for this reason.
How long should a URL slug be?
Long enough to say what the page is, short enough to read in a search result — three to six words covers almost everything. There is no penalty for length as such, but a slug that wraps in a result listing has stopped doing its job.
Should I remove stop words from slugs?
Usually not. The ranking benefit is close to zero now, and an aggressive list mangles titles — strip "it" and "How It Works" becomes how-works. The option is here because conventions differ, it is off by default, and the list it uses is short on purpose.
Can I change a slug after publishing?
You can, and it breaks every link pointing at the old one. If you must, add a permanent 301 redirect from the old address to the new one and keep it indefinitely — links do not expire. This is the argument for deciding the slug before you publish.
What happens to Chinese or Arabic text?
It is dropped, and the page tells you so. Transliteration works where a conventional Latin spelling exists — Cyrillic and Greek have one, and those are mapped — but Chinese, Japanese, Arabic and Hebrew do not, and inventing one would be guessing. For those, write the slug by hand in Latin script.
Why do two of my titles produce the same slug?
Because the transformation deliberately discards punctuation and case, so "The Best of 2026" and "The Best of 2026?" are identical afterwards. Any system storing slugs needs a uniqueness rule; a numeric suffix is the readable one.
Does my text leave the browser?
No. The work is JavaScript running in this tab. Every function it calls is covered by a test that stubs fetch and XMLHttpRequest to throw, so a request that slipped in would break the build rather than reach a server — and you can confirm it for yourself by disconnecting and carrying on.