How to use this Slug Generator
Enter your title, heading, or phrase, choose a separator, decide whether you want lowercase
output, and generate the slug instantly. You can then copy the result for use in your URL,
article path, or page slug field.
- Enter your title or phrase.
- Choose a separator style.
- Select lowercase or keep original casing.
- Click Generate Slug or use live conversion.
- Copy the result into your website or CMS.
Example conversion
Input: Best SEO Tips for Blog Posts 2026
Output: best-seo-tips-for-blog-posts-2026
Common use cases
- Blog post URLs
- Landing page paths
- Product page slugs
- Category and tag URLs
- CMS publishing workflows
How a slug is actually built — and why the order matters
A robust slug pipeline runs in a specific order: normalize to NFD first,
then strip the combining marks (Unicode U+0300–U+036F),
then lowercase, then replace every run of non-alphanumeric characters
with a single hyphen, and finally trim any hyphens off the ends. This tool performs the
NFD-and-strip step before cleaning up separators.
The NFD step is the part people skip, and skipping it quietly corrupts accented text. In
its normal (NFC) form, café stores the é as a single code
point. A plain [a-z0-9] filter cannot match that code point, so it simply
deletes it — leaving caf. Normalizing to NFD first
decomposes é into a base e plus a separate combining
accent, so you can drop just the accent and keep the letter, yielding the correct
cafe.
Stripping accents is not the same as transliterating
Removing combining marks is a Latin-script shortcut, not real transliteration — and
transliteration is language-dependent, with no locale-free correct
answer. German expands umlauts: ö → oe
(Schön → schoen), and likewise ä → ae,
ü → ue, ß → ss. Swedish does the
opposite: ö → o (Örebro → orebro),
because Swedish treats ö as a distinct letter, not an o
wearing an umlaut.
So the same glyph ö has a different correct slug depending on the source
language. A generic accent-stripper — including the mark-removal this tool uses — produces
o for both: correct for Swedish, wrong for German. If your content is in a
language that expands its diacritics, you need a transliteration step that actually knows
the language, not a blanket accent remover.
What happens to a Chinese, Arabic, or Cyrillic title
NFD decomposition plus mark-stripping does nothing for scripts that aren't Latin. Chinese,
Arabic, Hebrew, and Cyrillic characters have no combining accents to remove and no ASCII
fallback, so an ASCII-only filter deletes all of them and you are left with an
empty slug. That is a real failure mode for multilingual sites, and it
usually surfaces as a pile of URLs like /post/ or auto-numbered fallbacks.
There are two honest fixes. Either run true transliteration for the script — for example,
Chinese to pinyin — so the words survive in Latin letters, or keep the Unicode in the URL
directly. Modern browsers accept percent-encoded UTF-8 slugs (this is how Wikipedia
serves non-Latin article URLs), the trade-off being that a raw copied link shows
%E2%80%-style escapes. ASCII slugs stay the most portable across old systems,
analytics tools, and manual sharing.
Never regenerate a published slug from the title
Once a page is live, its slug is the URL — the target of every inbound link,
bookmark, social share, and search-engine result. If your CMS regenerates the slug from
the title on each save, then editing a typo in the headline silently changes the URL and
404s every one of those references at once. That is one of the most
common self-inflicted SEO wounds.
The fix is to treat the slug as its own piece of data: store it in a dedicated database
column, generate it once at creation time, and keep it even after the
title changes. If you genuinely must change a published slug, add a
301 redirect from the old path to the new one so links and ranking carry
over. When two titles produce the same slug, disambiguate by appending a numeric suffix —
-2, -3, and so on.
Small rules that keep slugs from breaking
A few habits prevent the subtle bugs that show up later:
- Keep slugs lowercase. URL paths are case-sensitive on many servers,
so
/My-Post and /my-post are two different URLs — a mismatch
that can split link equity or hand visitors a 404.
- Collapse consecutive separators. Two spaces, a space next to a
hyphen, or stray punctuation should become a single separator, never
best--seo--tips.
- Strip or map symbols. Emoji, punctuation, and characters like the
sharp S should be removed or transliterated, not left to be percent-encoded into
noise.
- Trim the ends. A title that begins or ends with a symbol shouldn't
leave a leading or trailing hyphen on the slug.
Frequently Asked Questions
Why normalize to NFD before stripping accents?
Because an accented letter like é is usually stored as a single
precomposed code point that a plain [a-z0-9] filter can't match — so the
filter deletes it, turning café into caf. Normalizing to
NFD first splits é into a base e plus a separate accent, so
you drop only the accent and keep the letter, giving cafe.
Should "ö" become "o" or "oe"?
It depends on the language. Swedish treats ö as its own letter, so the
slug is o (Örebro → orebro). German expands it,
so the slug is oe (Schön → schoen). A generic
accent-stripper always gives o, which is right for Swedish and wrong for
German — correct results need language-aware transliteration.
What happens to a Chinese or Arabic title?
An ASCII-only slugger produces an empty slug, because those scripts have no combining
marks to strip and no Latin fallback, so every character is removed. You either
transliterate the script (for example, Chinese to pinyin) or keep the Unicode in the
URL as percent-encoded UTF-8, the way Wikipedia does.
If I edit a post's title, should its slug change?
No. The slug is the live URL, so regenerating it from the title 404s every existing
link, share, and search result to that page. Store the slug once at creation and keep
it after the title changes; if you truly must change it, add a 301
redirect from the old path to the new one.
How should I handle two posts that produce the same slug?
Append a numeric suffix to make each one unique — my-post,
my-post-2, my-post-3. Check for an existing slug at creation
time and increment until the value is free, then store that final value rather than
recomputing it later.
Can a URL slug contain Unicode or non-ASCII characters?
Yes. Modern browsers accept percent-encoded UTF-8 in the path, so a non-Latin slug is
valid and renders correctly in the address bar. The catch is portability: a copied
link shows %-escapes, and some older tools mishandle it, so ASCII slugs
remain the safest default.