Free · No sign-up · 100% in-browser
URL Slug Generator
Paste one title per line into this free URL slug generator to create clean, SEO-friendly URL slugs instantly. This bulk slug generator strips accents, romanizes Cyrillic and Greek, turns symbols like & and % into words, drops stop words, and caps length at word boundaries. Export results to CSV or JSON, or copy a matching slugify() function. Everything runs 100% in your browser.
- 100% in your browser
- Free, no signup
- slugify() code in JS/TS, Python, PHP, Go & SQL
- Every code snippet is tested to return the same slugs as the tool

Live example
Title
Slug
/blog/creme-brulee-and-cafe-50-percent-off
36 chars·SEO length OK
Processed in your browser · nothing is uploaded
Slugs (live)
- 1
10-tips-for-writing-seo-friendly-urls-in-202645 - 2
creme-brulee-and-cafe-au-lait-a-beginners-guide47 - 3
strasse-arger-und-ubermut25 - 4
privet-mir-hello-world22 - 5
dont-stop-me-now-live-at-wembley32
Slug options
Separator & caseHyphen - · lowercase
Separator
TransliterationASCII
LengthNo limit
Limits cut only at word boundaries, so a word is never split in half.
Stop wordsOff
SymbolsTo words
Base URLOptional
Preview the full page address under each slug.
Get code snippet
A slugify() function that reproduces your current settings: separator: hyphen, lowercase, transliterate, symbols to words.
What is a URL slug generator?
A URL slug is the readable part of an address that identifies a specific page, such as seo-friendly-urls in /blog/seo-friendly-urls. A URL slug generator turns a title like "10 Tips for SEO-Friendly URLs!" into a lowercase, hyphen-separated string safe for any web address.
Doing this by hand works for one post, but is error-prone for hundreds. Accented letters, apostrophes, emoji, and symbols all need consistent rules. This slug generator processes titles line by line, applying identical rules and updating results as you type.
How it works
How to use the slug generator
- 01PastePaste your titles into the box, one per line (up to 1,000 lines).
- 02TunePick a separator and choose whether to keep lowercase, remove stop words, or remove numbers.
- 03LimitSet a maximum number of words or characters if needed. Slugs are cut at word boundaries.
- 04PreviewAdd an optional base URL like
https://example.com/blog/to preview full page addresses. - 05Copy & exportCopy your slugs, export to CSV or JSON, or copy the matching code snippet.
Use cases
Built for the places slugs actually come from

Blogs and CMS
Turn a content calendar into WordPress, Ghost or Webflow slugs in one paste.

E-commerce
Make short, readable product handles from long product names.

Site migrations
Rebuild URLs for hundreds of pages, then generate 301 redirects from the old ones.

Multilingual sites
Romanize Latin-accented, Cyrillic and Greek titles, or keep Unicode for other scripts.
Features
Features
Live bulk conversion
Every line updates instantly as you type, with no button to press.
Hyphen, underscore, dot or none
Hyphens are default because search engines treat them as word separators.
Editable SEO stop words
Remove words like "a", "the", and "for", or load Spanish, French, and German presets.
Smart transliteration
Strip Latin accents (é→e, ñ→n, ç→c, ß→ss, æ→ae, ł→l) plus Cyrillic and Greek. Optional German mode turns ä→ae, ö→oe, ü→ue, and optional Chinese → pinyin turns 重庆银行 into chong-qing-yin-hang (no tones, ü→v).
Symbols to words
Convert & to "and", @ to "at", % to "percent". Edit symbol=word pairs to match your needs.
Word-boundary limits
Cap slugs by words or characters without cutting a word in half.
CSV and JSON export
UTF-8 with BOM export ensures accented titles open correctly in Excel.
Code snippets
Copy a JavaScript, Python, PHP, Go, or PostgreSQL slugify() function matching your exact settings.
Real examples
Transliteration examples
| Title | Slug |
|---|---|
| Crème Brûlée à la Française | creme-brulee-a-la-francaise |
| Año Nuevo en España | ano-nuevo-en-espana |
| Straße über München | strasse-uber-munchen |
| Straße über München (German mode) | strasse-ueber-muenchen |
| Zażółć gęślą jaźń | zazolc-gesla-jazn |
| Привет мир | privet-mir |
| Καλημέρα κόσμε | kalimera-kosme |
| Salt & Pepper @ 50% Off | salt-and-pepper-at-50-percent-off |
Comparison
Slug Generator vs a quick regex
| Slug Generator | Regex only | By hand | |
|---|---|---|---|
| Accents & ß (Café Straße) | cafe-strasse | caf-stra-e | Easy to miss |
| Symbols (Salt & Pepper) | salt-and-pepper | salt-pepper | Depends on who types it |
| Apostrophes (Don't Stop) | dont-stop | don-t-stop | Depends on who types it |
| Cyrillic (Привет мир) | privet-mir | - | Needs a lookup table |
| Greek (Αθήνα) | athina | - | Needs a lookup table |
| Chinese (重庆银行) | chong-qing-yin-hang (Chinese → pinyin on) | - | Type the pinyin yourself |
| 1,000 titles → CSV, JSON, 301s | Yes, live | Needs a script | No |
Regex results are from text.toLowerCase().replace(/[^a-z0-9]+/g, '-').
SEO best practices for slugs
- Use a few descriptive keywords that match what the page is about.
- Separate words with hyphens, not underscores or spaces.
- Keep slugs lowercase so one page never lives at two addresses.
- Aim for 60 characters or fewer; the SEO length indicator turns amber above 60 and red above 75.
- Leave out dates and database IDs to keep URLs evergreen and easy to maintain.
- If you change a published slug, add a 301 redirect from the old URL. Use the 301 redirect generator or the bulk CSV slug generator for redirect rules.
Read more in our guide to what is a URL slug.
FAQ
Frequently asked questions
What is a URL slug?
A slug is the part of a URL after the domain that names a specific page, for example url-slug-guide in /blog/url-slug-guide. Good slugs are short, readable, and describe the page.
Should I use hyphens or underscores in URLs?
Use hyphens. Google recommends hyphens to separate words in URLs because underscores can join words together. Underscores are still useful for file names or code, so the tool supports both.
What is the ideal slug length?
There is no fixed limit, but shorter slugs are easier to read and share. Three to six words, or about 60 characters, is a practical target for most pages.
Should I remove stop words from slugs?
Often, yes. Removing "a", "the", or "for" keeps slugs short. Keep a stop word when removing it changes the meaning, and the tool never leaves a slug empty.
Does changing a slug hurt SEO?
Changing a slug creates a new URL, so the old one must redirect to it with a 301. Use the bulk CSV slug generator to create .htaccess, Nginx, or Cloudflare redirect rules for many pages at once.
How are accents and non-Latin letters handled?
Latin accents are stripped (é→e, ñ→n, ç→c), special characters are expanded (ß→ss, æ→ae, ł→l), and Cyrillic and Greek are romanized. German mode converts ä→ae, ö→oe, ü→ue. Apostrophes are dropped ("don't" becomes "dont") and emoji are removed. Chinese can become pinyin with the optional Chinese → pinyin setting (on by default on the Chinese pages); its dictionary loads only when your text has Chinese. Choose Keep Unicode to preserve non-Latin scripts like Chinese or Arabic. See pinyin vs Chinese URLs.
How do I slugify a string in JavaScript or Python?
Open the "Get code snippet" panel under the tool and copy the function for JavaScript, Python, PHP, Go, or PostgreSQL. Our guide to slugify regex and code snippets explains each step.
Can I convert a whole list at once?
Yes. Paste up to 1,000 lines and every line becomes its own slug instantly. For spreadsheets, use the bulk CSV slug generator to add slug and URL columns to your file.
Is my text uploaded anywhere?
No. All conversion runs 100% in your browser using JavaScript. No account or login is required. Your text and CSV files never leave your device, nothing is stored on a server, and settings are saved only in your browser's localStorage. The site is for people aged 16 and older.
Can I keep uppercase letters?
Yes. Turn off Lowercase to preserve the original case. Lowercase slugs are recommended for most sites because some web servers treat uppercase and lowercase URLs as separate pages.
Can I link to the tool with my titles already filled in?
Yes. Add ?q= with your URL-encoded text, for example /?q=Hello%20World. Encode line breaks as %0A to fill in several titles at once. The text is only placed in the input box. It is processed in your browser like anything you type, and it is not logged or stored.
Clean up your next batch of URLs
Paste a list, tune the rules once, and copy slugs, URLs or code. Nothing leaves your browser.