Generate URL-safe slugs from any text
Strip accents, punctuation, and unsafe characters. Replace whitespace with hyphens or underscores. Lowercase or preserve case.
hello-world-this-is-a-blog-post-title-with-emojis-and-symbols
How to generate a URL slug
A slug is the URL-safe version of a string — typically a page title turned into something that can live inside a URL path. This tool removes accents, strips unsafe characters, and joins words with hyphens or underscores.
- 01
Paste a title
Drop in a page title, headline, or any phrase. Accents and punctuation are fine.
Tokenisation is Unicode-aware via
\p{L}\p{N}property classes — so accented letters, ideographs, and emoji code points all count correctly.any textUTF-8Unicodecode pointsliveinput · texttitle · UTF-8Hello World! 🎉
loaded · UTF-8UTF-8 · ready - 02
NFD-normalize & strip
Diacritics get decomposed (NFD) and stripped. Non-word characters (punctuation, emoji, symbols) are removed.
Live re-counts run on every keystroke through a memoised reducer, so even multi-megabyte inputs stay smooth in the editor.
NFDregexlivememoisedoptionsstep · optionsstrip · liveHello World
options applied · livelive - 03
Pick separator
Hyphen is the SEO-standard (Google treats hyphens as word delimiters). Underscore works for technical identifiers.
Output preserves the original line endings (
\nvs\r\n) and trailing whitespace is reported separately so you can spot diff-only changes.hyphenunderscoreline endingswhitespacediff-cleanjoin · countedhyphen · readyhello-world
counted · livecounted - 04
Choose case
lower for URLs (most CMSes / web frameworks default to lowercase). preserve if you need case-sensitive IDs.
Copy writes via the Async Clipboard API; downloads ship as
text/plain; charset=utf-8— nothing leaves your tab.lowerpreserveclipboardtext/plainbloboutput · copiedready · donehello-world
shipped · ready to shipsuccess
Text-processing fundamentals worth knowing
Tokenise with Unicode classes
Use \p{L}\p{N} with the u flag so accents, ideographs, and emoji count properly.
Normalise line endings
Convert \r\n to \n before diffing or hashing — Windows-vs-Unix endings produce phantom changes.
Mind invisible characters
Zero-width joiners, BOMs, and non-breaking spaces look identical to ASCII space. Strip them before comparison or storage.
Stream don’t slurp
For multi-megabyte text, iterate line-by-line rather than loading everything to memory — keeps the tab responsive.
Choose collation deliberately
Default JS sort is code-point order, not human alphabetical. Use Intl.Collator for locale-aware sorting.
Re-run after normalisation
NFC vs NFD changes byte length but not visible glyphs. String.prototype.normalize() before counts and comparisons.
When to slug
Anywhere a URL-safe identifier is needed.
Blog post URLs
Title → /blog/my-post-title for clean readable links. Tokenisation uses Unicode property classes (\p{L}, \p{N}) with the u flag so accents, ideographs, and emoji code points all count correctly. Surrogate-pair-aware counts mean 🚀 weighs 1, not 2.
Unicode-correctFilenames
Convert article titles to safe filesystem names. Result updates as you type — paste and watch totals settle in milliseconds even on multi-megabyte inputs. Heavy work runs through a memoised reducer so the editor never janks.
diff-cleanDatabase keys
Slugs make excellent primary keys for human-facing records. Output normalises line endings to LF for clean diffs across platforms. Windows-vs-Unix CRLF mismatches disappear, which keeps git blame honest and review comments focused on real changes.
instant countsDocker / k8s labels
Tags and names follow kebab-case conventions. Code-point counts are stable across NFC/NFD normalisation. Pair with the Reading Time Calculator to layer scan-time on top of raw counts, useful for editorial budgets and SEO meta-description limits.
platform-awareAnchor IDs
Convert headings to URL-safe #anchors in markdown / HTML. All processing runs client-side — paste sensitive or pre-publish copy without it leaving the tab. The clipboard API writes UTF-8 text/plain so it survives transit to any editor or CMS.
code-point-accurateRouting
Express/FastAPI/Rails routes prefer slugs over numeric IDs for SEO. Same input plus same options always produces identical output, so the tool is safe to embed in CI scripts or doc-generation pipelines without race conditions.
losslessFrequently asked questions
Something missing?
Tell us what you need. We ship the top requests every two weeks.