URL-safe · NFD-normalized · SEO-friendly

Generate URL-safe slugs from any text

Strip accents, punctuation, and unsafe characters. Replace whitespace with hyphens or underscores. Lowercase or preserve case.

Slug Generator Workspace
Input size
66 B
13 words
Slug length
61 B
URL-safe chars
Separator
-
hyphen (SEO)
Case
lower
convention
Separator
Case
input · title or phrase
output · slug
hello-world-this-is-a-blog-post-title-with-emojis-and-symbols
Quick Start

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.

  1. 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 pointslive
    input · texttitle · UTF-8
    Hello World! 🎉
    loaded · UTF-8UTF-8 · ready
  2. 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.

    NFDregexlivememoisedoptions
    step · optionsstrip · live
    Hello World
    options applied · livelive
  3. 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 (\n vs \r\n) and trailing whitespace is reported separately so you can spot diff-only changes.

    hyphenunderscoreline endingswhitespacediff-clean
    join · countedhyphen · ready
    hello-world
    counted · livecounted
  4. 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/plainblob
    output · copiedready · done
    hello-world
    shipped · ready to shipsuccess
Pro tips

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.

Use Cases

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-correct

Filenames

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-clean

Database 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 counts

Docker / 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-aware

Anchor 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-accurate

Routing

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.

lossless
FAQ

Frequently asked questions

Unicode Normalization Form D — splits accented characters into base + combining diacritic, then the combining marks are stripped. Café → Cafe.
Google treats hyphens as word separators but underscores as word joiners. Hyphens are better for SEO.
Partially — non-Latin characters that don't decompose to Latin (e.g. Chinese, Arabic) are removed. Use a transliteration library for full coverage.
Yes — running it twice produces the same slug.
No. All processing runs locally.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!