Slug Generator
Paste one or more titles, one per line, and get a lowercase, hyphen-separated URL slug for each, with accents, apostrophes and punctuation handled for you.
0 words 0 characters 0 lines
Continue with this text: kebab-caseLowercaseRemove accents
Your text stays in your browser: nothing is uploaded or stored on a server.
How to make a slug
- Paste or type your titles in the Titles (one per line) box. Click Example to load three sample titles.
- Choose a Separator: Hyphen (-) for web addresses, Underscore (_) for file names or systems that ask for it.
- Leave Lowercase ticked unless you need to keep capital letters.
- Optionally tick Drop short words (a, the, of…) and set a Max length to shorten long titles.
- Copy the result with Copy, save it with Download .txt, or click Use as input to keep working on it. The output updates as you type, and Undo restores the text that Use as input, Example or Clear replaced.
How a title becomes a slug
Every line goes through the same steps, in this order:
- Compatibility characters are spelled out as plain characters: the ligature fi becomes fi, superscript ² becomes 2, and ½ becomes 1⁄2, which ends up as
1-2. &becomes the word and, and straight and curly apostrophes ('and’) are removed, so Chef’s becomes chefs rather than chef-s.- Accents are removed: é becomes e, ü becomes u. Letters that have no accent to strip are spelled out: ß becomes ss, æ becomes ae, ø becomes o, ł becomes l, þ becomes th.
- With Lowercase ticked, everything is lowercased.
- Every run of characters that is not a letter A-Z or a digit 0-9 (spaces, punctuation, dashes, underscores, emoji) becomes one separator, and separators at the start and end of the line are dropped. You never get
--or a slug that starts with a hyphen. - The optional short-word filter and maximum length are applied last.
| Before | After |
|---|---|
10 Tips for Writing Better Titles |
10-tips-for-writing-better-titles |
Crème Brûlée: The Chef's Recipe! |
creme-brulee-the-chefs-recipe |
What's New in 2026? |
whats-new-in-2026 |
Rock & Roll |
rock-and-roll |
Straße in Łódź |
strasse-in-lodz |
Ăn Phở ở Hà Nội |
an-pho-o-ha-noi |
Pokémon Go – A Beginner’s Guide (2026 Edition) |
pokemon-go-a-beginners-guide-2026-edition |
3.5 inch floppy |
3-5-inch-floppy |
C++ vs C# |
c-vs-c |
I ❤️ NY |
i-ny |
file x² ½ cup |
file-x2-1-2-cup |
Some symbols carry meaning that a slug cannot show: C++ vs C# loses its plus and hash signs, and 50% becomes 50. Edit those slugs by hand (for example c-plus-plus-vs-c-sharp).
Only Latin letters and digits survive, so text in Cyrillic, Greek, Chinese, Japanese or Arabic is removed completely: Привет мир gives an empty line. The tool does not transliterate other scripts, but it does tell you: a note under the result lists the lines that gave an empty slug.
The options
| Option | Default | What it changes | Example result |
|---|---|---|---|
| Separator | Hyphen (-) | The character placed between words | whats_new_in_2026 with underscore |
| Lowercase | On | Off keeps the original capitals | Whats-New-in-2026 |
| Drop short words | Off | Removes a, an, the, and, or, of, to, in, on, for, with, at, by, from | whats-new-2026 |
| Max length | 0 (no limit) | Shortens each slug to at most this many characters (up to 200) | 10-tips-for-writing at 20 |
Drop short words only acts on slugs with three or more words, and it never removes every word. The Lord of the Rings becomes lord-rings, but To Be stays to-be, and a title made only of short words is left as it is. Because & is turned into and first, Rock & Roll becomes rock-roll with this option on. Words such as how, is and what are not on the list, so How to Make Cold Brew Coffee at Home becomes how-make-cold-brew-coffee-home.
Max length counts characters, separators included. When a slug is too long, it is cut at the limit and then shortened back to the last whole word, as long as that keeps more than half of the limit. If the only separator is earlier than that, the cut stays mid-word, so Supercalifragilisticexpialidocious word at 10 gives supercalif. A cut slug never ends with a separator: a b at 2 gives a, not a-. Check cut slugs before using them.
| Title | Max length | Short words | Slug |
|---|---|---|---|
| The Best Running Shoes for Flat Feet in 2026 | 30 | Kept | the-best-running-shoes-for |
| The Best Running Shoes for Flat Feet in 2026 | 30 | Dropped | best-running-shoes-flat-feet |
| How to Write a URL Slug That Works | 20 | Kept | how-to-write-a-url |
Hyphens, case and length: what search engines say
Google’s URL guidelines recommend hyphens instead of underscores between words, because hyphens help users and search engines identify the separate words. They also say Google treats URLs as case-sensitive, so /APPLE and /apple are different addresses. That is why the generator lowercases by default: one consistent case avoids two addresses for the same page.
The same guidelines recommend readable words over long ID numbers. No official limit on slug length is given, so the Max length option is about readability, not a rule. A short slug fits in links, search results and social posts, and it can stay the same when you edit a long headline later.
Avoid changing a slug once a page is published: the old address breaks unless you set up a redirect. To learn more, read our guide on what a URL slug is and how to write one.
Slug, kebab-case or URL encoding?
Three tools on this site produce text that looks similar but follows different rules:
| Tool | Crème Brûlée: The Chef's Recipe! |
myVariableName |
|---|---|---|
| Slug generator | creme-brulee-the-chefs-recipe |
myvariablename |
| kebab-case converter | crème-brûlée-the-chefs-recipe |
my-variable-name |
The kebab-case converter is built for code: it splits camelCase words and keeps accented letters. The slug generator is built for URLs: it removes accents and turns & into and, so the result is plain ASCII. For underscores in code, use snake_case instead.
The URL encoder does something different again. It keeps your text as it is and replaces unsafe characters with % codes, so Crème Brûlée becomes a valid but unreadable address. Use it for search terms in query strings, not for page names. Our guide to URL encoding explains when each is needed.
When people use a slug generator
- Blog posts and product pages. Most content systems suggest a slug from the title, but they often keep stop words or leave in odd characters from pasted titles. Generate the slug here, then paste it into the slug or permalink field.
- Bulk imports. Paste a column of product names or article titles from a spreadsheet, convert them all at once, and paste the slugs into the next column. Line order and empty lines are kept, so rows stay aligned.
- File and folder names. With Underscore selected, Q3 Report – Final (Sales & Marketing) becomes
q3_report_final_sales_and_marketing, which is safe on any operating system and in command lines. - Anchor IDs and CSS classes. Heading text turned into a slug makes a clean
#anchorfor a table of contents. - Checking an existing slug. Paste a slug that was typed by hand and you will see it come back unchanged if it is already clean.
If you only need to strip accents and keep spaces and punctuation, use the remove accents tool.
Questions
What is a slug in a URL?
The slug is the last, readable part of a page address that names the page, such as text-to-slug in example.com/blog/text-to-slug. It is usually made from the page title in lowercase, with words joined by hyphens. Our guide what is a URL slug covers how to choose one.
Should a slug use hyphens or underscores?
Hyphens, for web pages. Google recommends hyphens instead of underscores to separate words in URLs because they help users and search engines identify the words. Underscores are mainly useful for file names and systems that require them.
Why is my slug empty?
The generator keeps only the Latin letters A-Z and the digits 0-9 (after removing accents), so a line written entirely in Cyrillic, Greek, Chinese, Japanese or another script produces an empty line, and a note under the result names the lines that gave an empty slug. Write the slug by hand in Latin letters, or keep the original script and let the browser percent-encode it.
Does it work like slugify in Python, Django or npm?
It is close to Django's slugify with its default settings, which converts to ASCII, lowercases, removes punctuation and joins words with hyphens. Two differences are that this tool turns & into "and" and turns a dot between digits into a separator (3.5 becomes 3-5). Library defaults vary, so check the one your site uses if the slugs must match exactly.
Can I convert many titles at once?
Yes. Each line is converted separately and the output keeps the same lines in the same order, including empty lines, so you can paste a column from a spreadsheet and paste the result back next to it.
Is the text sent anywhere?
No. The slugs are made in your browser as you type, and nothing is uploaded.