How to use the slugify tool
- Paste your titles into Text (one slug per line). Blank lines are skipped.
- Choose a Separator: Hyphen (-), Underscore (_) or Dot (.).
- Keep Lowercase ticked for normal URLs, or untick it to keep the original capitals.
- Tick Remove short stop words (a, an, the, and, of…) for shorter slugs.
- Set Maximum length (0 = no limit), up to 200 characters, then copy the result. There is one slug per line, in the same order.
What it does and when to use it
A slug is the readable part of a URL, such as /blog/creme-brulee-10-easy-recipes. Use this tool to make slugs for blog posts, product pages, docs headings, Git branch names or file names. Batch mode helps when you import many titles from a spreadsheet.
For code identifiers rather than URLs (camelCase, snake_case and so on), use the developer case converter. If you need to keep non-ASCII characters in a URL instead of removing them, percent-encode the text with the URL encoder. The meta tags generator takes the finished URL as its canonical link.
How it works
Each line goes through these steps in order:
- Transliterate letters that do not decompose: ß→ss, æ→ae, ø→o, œ→oe, đ→d, ł→l, þ→th, ð→d, ħ→h, ı→i.
- Strip accents with Unicode NFKD normalisation, then remove the combining marks, so é becomes e.
- Replace
&with the word “and”, and delete apostrophes, so “Don’t” becomes “dont” rather than “don-t”. - Lowercase (if ticked) and split on anything that is not A–Z, a–z or 0–9.
- Drop the stop words a, an, and, as, at, by, for, from, in, is, of, on, or, the, to and with (if ticked).
- Join with the separator, trim to the maximum length at a separator, and remove any trailing separator.
This runs in your browser; nothing is uploaded.
Worked examples
Crème Brûlée: 10 Easy Recipes for 2026! → creme-brulee-10-easy-recipes-for-2026
Straße & Smørrebrød (separator _) → strasse_and_smorrebrod
The Art of the Deal (stop words on) → art-deal
Two lines with Maximum length 30:
Don't Panic: Node.js 22 Release Notes
Why we moved to PostgreSQL 17
gives
dont-panic-node-js-22-release
why-we-moved-to-postgresql-17
The first line would be 35 characters, so “-notes” is dropped at the separator. The dot in “Node.js” becomes a hyphen, like every other symbol.
Limits and tips
- Changing a published slug breaks links. Add a redirect from the old URL when you change one.
- Only the listed letters are transliterated. Other special Latin letters are kept only if Unicode can break them into a base letter plus an accent.
Frequently asked questions
Why is my slug empty?
Hyphen or underscore?
Does stop-word removal ever remove everything?
Will the maximum length cut a word in half?
Does it check that the slug is unique on my site?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.