How to turn a title into a URL slug that does not break
Lowercase it, swap spaces for hyphens, strip the rest. That covers English. Everything else is where slug generators quietly produce garbage.
A slug is the readable tail of a URL. In example.com/blog/how-to-bake-bread, the slug is how-to-bake-bread. It should survive being typed by hand, pasted into Slack, and stored as a database key, which means plain ASCII letters, digits, and a separator. Nothing that needs percent-encoding.
How it works
- Type or paste a title. The slug appears on the right while you type, no button to press.
- Set the options: hyphen or underscore, lowercase on or off, stop-word removal, and a maximum length.
- Turn on batch mode to paste a whole list of headlines and get one slug per line, then copy the lot.
Accents are two characters pretending to be one
Unicode can spell é two ways: as a single code point (U+00E9), or as a plain e followed by a combining acute accent (U+0065 U+0301). Both render identically. Calling normalize('NFD') forces the second form for every character that has one, which turns the problem into an easy one: delete every combining mark in the range U+0300 to U+036F and what remains is the base letter.
So Ação Rápida decomposes, loses its tilde and acute, and comes out as acao-rapida. Same mechanism handles ü, ñ, ç, and the rest of the Latin diacritics.
A handful of letters have no decomposition at all. ß, ø, đ, ł, and æ are single indivisible code points, so NFD leaves them untouched and the ASCII filter then deletes them. That is how Straße becomes strae in naive implementations. These get an explicit mapping instead: ss, o, d, l, ae.
Hyphen or underscore
Use a hyphen for anything public. Google treats the two characters differently: a hyphen is a word separator, an underscore is a word joiner. red-shoes is indexed as two words, red_shoes as one token, and nobody searches for red_shoes. The underscore option exists because slugs also end up as file names, S3 keys, and column values, where an underscore is often the house style.
Stop words, and when to leave them alone
Dropping a, an, the, of, and, or, in, on, at, to, for shortens a slug without losing much meaning. The Best of the Year in Review becomes best-year-review. Worth doing when your titles are long and your CMS shows the full URL in the SERP.
It has failure modes. Band names and titles built out of small words come apart: The Who reduces to who, In and Out to out. A title made only of stop words would filter down to nothing at all, so the generator keeps the original words in that case rather than handing you an empty slug. The list is also English-only, so leave the toggle off for Portuguese or German titles where in, an, and or mean something else entirely.
Truncating without cutting a word in half
Setting a limit of 40 characters on ten-tips-for-a-faster-website-in-2026 should not give you ten-tips-for-a-faster-website-in-20. The generator adds words one at a time and stops before the one that would push past the limit, so the result always ends on a complete word. The single exception is a first word already longer than the limit, which gets a hard cut because there is no boundary to find.
Around 50 to 60 characters, or three to five words, is a reasonable target. Long slugs are not a ranking penalty, but they get truncated in search results and look broken when pasted into a chat window.