URL Slug Generator
Turn titles into clean URL slugs: lowercase, hyphenated, accents transliterated. One per line for batches. Runs in your browser.
Your stuff stays yours. The conversion happens in this page's JavaScript. Nothing you paste here leaves your machine, and the tool keeps working with the network unplugged.
Paste one title per line and get URL-ready slugs: lowercase, words joined with single hyphens, punctuation dropped, and accented characters transliterated to their base letters (Café becomes cafe) via Unicode normalization rather than a lookup table, so it works across Latin-script languages. Hyphens are the right separator - Google has said for years that it treats hyphens as word boundaries in URLs but not underscores - and clean slugs survive being pasted into chat, email, and markdown without percent-encoding noise.
How to generate URL slugs
- Paste your titles into Titles in (one per line). You can convert a single headline or a whole column of titles copied from a spreadsheet or CMS export.
- Press Slugify.
- Read Slugs out. Line 1 of the output is the slug for line 1 of the input, line 2 for line 2, and so on, so the two columns stay aligned when you paste them back into a spreadsheet.
- Press Copy result to take every slug at once, or Clear to empty both boxes.
What happens to each title
A slug is the human-readable part of a URL path that identifies a page, like blue-widgets in /products/blue-widgets/. This tool builds one from each line in four steps, in this order:
- Unicode decomposition. The line is normalized to NFKD form. That splits a letter like
éinto a plaineplus a separate combining accent mark, and it expands compatibility characters, so the ligaturefibecomesfiand a fraction character like½becomes1, a fraction slash, and2. - Accent removal. The combining marks from step 1 are deleted, leaving the base letters.
- Lowercasing.
- Collapsing. Every run of characters that is not
atozor0to9becomes a single hyphen, and hyphens at the start or end are trimmed.
The result can only ever contain lowercase ASCII letters, digits, and single hyphens between them. Those characters are all in the unreserved set for URLs, so the slug never needs percent-encoding, and it never produces a double hyphen or a leading or trailing hyphen.
Keep in mind that a slug is only part of a URL. Once a page is published, changing its slug changes its address, so links and bookmarks to the old one break unless you set up a redirect. Decide on the slug before the page goes live.
A worked example
Input, four lines, with an empty third line and extra spaces around the last title:
How Frédéric's Café Doubled Revenue - A 2026 Case Study
Straße & Øresund: ½ Price Æsir
10 Tips for C++ Beginners!
Output:
how-frederic-s-cafe-doubled-revenue-a-2026-case-study
stra-e-resund-1-2-price-sir
10-tips-for-c-beginners
The first line shows the tool at its best: accents stripped, the spaced hyphen and spaces merged into single hyphens. It also shows a quirk: the apostrophe becomes a hyphen, giving frederic-s. The second line shows the limits of Unicode decomposition. ß, Ø, and Æ have no decomposed form with a plain Latin base letter, so they are removed, and ½ turns into 1-2. The blank line stays blank, and C++ loses its plus signs.
Common problems and how to fix them
Possessives come out as "-s"
Apostrophes are treated like any other punctuation, so Frédéric's becomes frederic-s and don't becomes don-t. Delete apostrophes from your titles before slugifying (a find-and-replace for both ' and ’ handles it) to get frederics and dont instead.
Letters are missing from German, Nordic, Polish, or Turkish words
Characters like ß, ø, æ, ł, and the dotless ı are separate letters, not accented versions of a Latin letter, so they are dropped. Replace them by hand first with the spelling your audience expects: ss for ß, oe or o for ø, ae for æ, l for ł. Similarly, German readers often expect ü to become ue, while this tool gives u.
Symbols that carry meaning vanish
C++ becomes c, C# becomes c, and AT&T becomes at-t. Spell the symbol out in the title first: C plus plus, C sharp, AT and T.
Two different titles produce the same slug
Because punctuation and case are discarded, Part 1: Setup and Part 1 - Setup both give part-1-setup. Most CMSs refuse duplicate slugs or silently add a suffix. Check a batch for repeats by pasting the output into remove duplicate lines and comparing the line counts.
Empty lines in the output
A blank input line, or a line made only of symbols or non-Latin script, produces an empty slug. That keeps rows aligned, but an empty slug is not usable. Give those pages a slug written by hand.
Related tasks
If you need the title itself in another format, such as a snake_case database key, use the case converter. To put a value with spaces or symbols into a query string instead of a path, use URL encode and decode.
Questions this tool gets asked
Why hyphens instead of underscores?
Search engines treat hyphens as word separators in URLs; underscores historically glue words together. “blue-widgets” reads as two words to a crawler, “blue_widgets” may not.
What happens to accented and non-Latin characters?
Accented Latin letters are decomposed and their accents stripped, so é becomes e. Characters with no Latin base form (Chinese, Arabic, emoji) are dropped - for those languages, meaningful slugs need transliteration rules this tool won't pretend to have.
Are stop words like “a” and “the” removed?
No. Slug length rarely matters to ranking, and removing words can change meaning (“the-office” vs “office”). Trim words by hand where you actually want to.
Is there a length limit for slugs?
No technical one worth worrying about, but shorter slugs are kinder in shared links. A common practice is keeping the 3-6 words that carry the title's meaning.