URL Slug Generator — Free, In-Browser
Paste a blog title, product name, or headline and get a clean, lowercase, hyphenated, URL-safe slug. Strips accents, removes special characters, and validates against RFC 3986. Free and 100% client-side — your text never leaves the browser.
Unicode-Aware Transliteration
Café → cafe, Düsseldorf → dusseldorf, Crème Brûlée → creme-brulee. NFD-decomposes accents then strips combining marks. Handles ß, æ, ø, ł, þ, and more.
Full Control
Hyphen, underscore, period, or no separator. Lowercase, preserve case, or uppercase. Optional stop-word removal (a, the, and, …) and max-length cap with word-boundary truncation.
RFC 3986 Compliant
Output is restricted to URL-unreserved characters: A–Z, a–z, 0–9, hyphen, period, underscore, tilde. Validates the result and refuses to leave dangling separators at the edges.
100% Client-Side
Slug generation runs entirely in your browser. Article titles in stealth-launch mode, unreleased product names, and other sensitive copy never reach our servers.
URL Slug Generator: Turn Any Title Into a Clean, SEO-Friendly URL
A URL slug generator converts a title into the URL-safe segment that names a page. Paste text and it lowercases everything, replaces spaces with hyphens, strips accents and special characters, and trims dangling separators. Pick a separator, case style, optional stop-word removal, and a length cap. The output is validated against RFC 3986. Free and 100% in-browser.
How to generate a URL slug
- Paste a blog title, product name, or headline into the input — the slug updates instantly.
- Choose a separator: hyphen (default, best for SEO), underscore, period, or none.
- Set the case: lowercase (default), preserve, or uppercase.
- Leave transliteration on so accents become ASCII (
café→cafe), or turn it off to drop non-Latin letters. - Toggle Strip Stop Words and set a Max Length if the slug runs long.
- Copy the result. The status line confirms it passes RFC 3986 validation.
What is a slug, and how slugify works
A slug is the human-readable last segment of a URL. In https://example.com/blog/why-next-js-is-fast, the slug is why-next-js-is-fast. "Slugify" means transforming arbitrary text into that segment: lowercase it, swap spaces for hyphens, remove anything outside a safe character set. The safe set comes from RFC 3986 section 2.3 (unreserved characters): letters A–Z a–z, digits 0–9, and the four marks - . _ ~. Anything else — spaces, &, !, ?, emoji — would need percent-encoding, so a clean slug avoids them entirely.
This tool runs a seven-step pipeline. It NFD-normalizes the input and drops combining marks (so é → e), transliterates letters NFD can't split (ß → ss, æ → ae), applies the chosen case, optionally filters stop words, replaces every remaining non-alphanumeric run with the separator, collapses doubled separators, trims edge separators, then truncates at a word boundary if you set a cap. Use hyphens for content URLs: Google's URL-structure guidance treats hyphens as word separators and underscores as word joiners.
Worked examples: input → slug
Blog title · lowercase · hyphen
10 Things I Wish I'd Known About React Server Components! → 10-things-i-wish-i-d-known-about-react-server-components
Diacritics · transliteration on
Crème Brûlée & Schadenfreude → creme-brulee-schadenfreude
Punctuation · collapsed separators
Why Next.js 16 — A Deep Dive (2026 Edition) → why-next-js-16-a-deep-dive-2026-edition
Edge case · the apostrophe split
Apostrophes are stripped as non-alphanumeric, so contractions split: I'd becomes i-d, not id. Likewise don't → don-t. Search-and-replace the apostrophe out of the title first (I'd → Id) if you want the cleaner form.
Separator and option reference
These are the exact options this tool exposes and what each produces from the title My Blog Post.
| Option | Value | Output | Use for |
|---|---|---|---|
| Hyphen | - | my-blog-post | Content URLs, SEO (Google word-separates) |
| Underscore | _ | my_blog_post | Filenames, variables (parses as one word) |
| Period | . | my.blog.post | Namespaced keys, dotted IDs |
| None | — | myblogpost | Hashtags, handles, compact tokens |
| RFC 3986 set | A–Z a–z 0–9 - . _ ~ | validated, no edge separators | Everything else is removed |
The truncation rule most generators get wrong
When you set a Max Length, this tool does not just chop at the character limit and risk a half-word. It slices to the cap, finds the last separator, and cuts there only if that separator sits past 60% of the limit(lastSep > maxLength * 0.6). If the nearest break is too early — which would throw away most of the slug — it keeps the hard cut instead. So a 30-character cap on building-privacy-first-web-apps yields building-privacy-first-web, not a stub. The validator also enforces isValidSlug: the result must match ^[a-zA-Z0-9._~-]+$ and must not start or end with - . _ ~, so you never ship a dangling-hyphen URL.
Runs 100% in your browser
Your text never leaves your device. The entire pipeline runs locally in JavaScript — no uploads, nothing leaves your device. I tested it across all five sample titles (English, French/German diacritics, mixed punctuation, a 100-character marketing headline, and a Spanish title with inverted punctuation), every separator, all three case styles, stop-word removal on and off, and length caps from 20 to 80 characters. Accented inputs round-tripped to clean ASCII and the validator caught every edge-separator case. Slug generation stays instant even on the longest input.
Frequently asked questions
Is this URL slug generator free?
Yes — 100% free, no signup, no usage limit. Slugify as many titles as you want.
Does my text get sent to a server?
No. Normalization, accent stripping, transliteration, case conversion, stop-word filtering, and validation all run in your browser. Pre-launch product names and unpublished titles stay on your device.
Why hyphens instead of underscores?
Google treats hyphens as word separators and underscores as joiners. seo-friendly-urls parses as three words; seo_friendly_urls parses as one. Use hyphens for content URLs; the tool also offers underscore, period, or none for IDs and filenames.
What happens to accented characters like é or ñ?
With transliteration on, the tool NFD-decomposes the character and strips the combining mark, leaving the base letter. Letters with no decomposition — ß, æ, ø, ł, þ, ñ — map to ASCII (ß → ss).
Does this tool generate unique slugs?
No — uniqueness is your CMS's job. The conversion is deterministic, so the same text always yields the same slug. For duplicate titles, append a discriminator from the UUID Generator or a sequence number.
Related text & URL tools
Percent-encode the rest of the path & query
Case ConverterAlign slug, file & variable case
UUID GeneratorAppend a discriminator to duplicate slugs
Word CounterPlan title & article length
Find & ReplaceClean apostrophes out before slugifying
Text SorterSort & dedupe a list of slugs
Markdown EditorDraft the post behind the slug
Markdown TOCAnchor slugs for heading links
Lorem Ipsum GeneratorFill the page the slug points to
Guide: Text Tools for CreatorsRead the text-processing workflow guide
Guide: Markdown SyntaxLink headings to slug anchors
All ToolsBrowse the full Toolk hub
Last updated: June 2, 2026 · Runs 100% in your browser — no uploads, nothing leaves your device.
Need a different tool?
Browse all 89 free, in-browser tools — or tell us what we should build next.