§
§ · free tool

URL slug generator. Accent-safe, stopword-aware.

Type a title. Get a URL-safe slug. Transliterates accents (café → cafe), strips reserved characters, optionally removes stopwords, truncates at the nearest word boundary. Browser-only.

Type a title. The slug renders live below — accent-stripped, lowercase, hyphen-joined, with reserved characters removed. Toggle stopword removal, separator (hyphen / underscore), max-length cap. Browser-only — no upload.

Live preview updates as you type.

Separator
Case

Truncates at nearest word boundary. Set to 120 to disable.

slug · live
// type a title
0 chars ·
change log

Privacy: slug generation happens in your browser. Nothing is sent or logged.

§ 02 · what makes a good slug

Five rules. All defaults here.

Rule 1: Hyphens, never underscores. Google's URL structure guidance has been clear since 2008: hyphens read as word separators; underscores read as a single concatenation. For SEO and human readability, hyphens win.

Rule 2: Lowercase only. URL paths are case-sensitive on most servers — /About/ and /about/ are technically different pages, which causes duplicate-content headaches with Google. Lowercase everywhere is the safest default.

Rule 3: ASCII only. URLs with non-ASCII characters technically work via percent-encoding (münchen → m%C3%BCnchen) but render as alphabet soup when shared. Transliterate to the closest ASCII (münchen → munchen, café → cafe) at slug time. We use NFD normalization to do this for Latin-script languages; non-Latin scripts need a real transliteration pass.

Rule 4: 60-character soft cap. Long URLs truncate badly in social-media link previews, email clients, and bookmark managers. Most modern publications keep slugs under 60 characters. We truncate at the nearest word boundary so you don't get mid-word cuts. The 60-char default is a guideline; some brands go shorter (40 for snappier sharing), some longer (80 for category-rich URLs).

Rule 5: Stable slugs forever. Once a slug ships, never change it. Google indexes the URL; backlinks point at it; share buttons cache it. If you must rename, set up a 301 redirect from the old slug to the new — every CMS supports this. Pair with our Redirect Chain Checker to verify the redirect after deploy.

§ 03 · when to use this

Four jobs this tool covers.

Job 1: Generate slugs for new blog posts. Type the headline, copy the slug into your CMS's URL field. Your CMS may already auto-generate slugs — they sometimes include stopwords or have weird truncation rules. This tool gives you the explicit control over separator, stopwords, and length cap.

Job 2: Migrate from a legacy CMS to a new structure. When moving from a slug pattern like post_id_12345 or post-title-with-spaces-everywhere to clean slugs, paste each title here and copy the modern slug. Then set up 301 redirects from the old paths.

Job 3: Build URLs for marketing landing pages. Campaign landing pages tend to have descriptive URLs that need to be brand-safe and keyword-rich. Type the page concept, get a clean slug, paste into your routing config. Pair with our UTM Builder for the tracking-parameter side.

Job 4: Create folder names for files and projects. Use the underscore separator for filesystem-friendly slugs. Most modern shells and IDEs handle hyphens too, but some legacy tooling (Make, certain shell pipelines) chokes on hyphens at the start of filenames. Underscore is the safer default for filesystem use; hyphen for URLs.

§ 04 · questions

Six questions users ask.

Why hyphens instead of underscores?

Google's URL structure guidance has been clear since 2008: hyphens are interpreted as word separators, underscores are not. So 'sticky-tape-stripping' reads to Google as three words; 'sticky_tape_stripping' reads as one long word. For SEO, hyphens win every time. Underscores are still common in code identifiers (Python, SQL), file names, and a handful of legacy CMSes — pick the underscore separator only if your existing URL structure already uses them and you can't migrate.

What does accent transliteration do?

We use the JavaScript String.normalize('NFD') technique to decompose accented characters into a base letter plus a combining diacritic, then strip the diacritics. So café becomes cafe, naïve becomes naive, résumé becomes resume, München becomes munchen. This produces ASCII-only slugs that work universally in URLs without percent-encoding. For non-Latin scripts (Cyrillic, Arabic, Hindi, Chinese), NFD doesn't transliterate — those need a real transliteration library, or the source text needs an English equivalent supplied manually.

Should I remove stopwords?

Optional, and the answer depends on your URL strategy. SEO conventional wisdom says remove stopwords (a, the, of, in, on, …) to keep the slug short and keyword-dense. Modern Google handles either form fine — content matters more than slug length. Reasons to keep stopwords: shorter slug loses semantic clarity ('manual-bike-tune-up' vs 'a-manual-on-bike-tune-ups'), the stopwords help users understand the URL when scanning. We default to keeping them because preserving meaning beats keyword-density theatre. Toggle on for the more SEO-conventional behaviour.

Why does the slug get truncated?

Long URL slugs are harder to share, easier to truncate in social-media link previews, and harder for users to recognise. We default to a 60-character soft cap and truncate at the nearest word boundary so you don't end up with 'best-shopify-themes-for-fashion-brands-in-the-bro' (cut mid-word). Adjust the cap or disable it entirely if your CMS has different conventions; some publications go up to 80, some keep under 40 for branding reasons.

What characters get stripped?

Anything outside [a-z0-9] and the chosen separator. Specifically: punctuation (! ? . , ; :), brackets and parens, quotes (single + double + smart), ampersand, hash, percent, plus, slash, backslash, colon, semicolon, equals, question mark — all of which would either need percent-encoding in URLs or have reserved meanings. Spaces and tabs collapse to a single separator. Multiple consecutive separators collapse to one. Leading and trailing separators get trimmed.

Is the text I paste sent anywhere?

No. Slug generation happens in your browser. The text is never uploaded to Digital Heroes servers, never logged. The page is static HTML; the only network request is the initial page load. Safe for unpublished article titles or any sensitive content you'd not want to ship to a third party.