URL Slug Generator

Turn titles into URL slugs the way WordPress does: accents mapped to their base letter, symbols spelled out, and an optional stop word strip.

Enable JavaScript to customise; default output below.

One title per line. Each line becomes its own slug.

Separator

Hyphens. Google treats an underscore as part of the word, so it joins two words into one.

More options Show

0 for no limit. A limit cuts at a word, never mid-word.

Live preview slugs.txt
how-to-build-a-wordpress-plugin-in-2026
cafe-and-bar-50-percent-off

Output is valid and updates as you type.

Turn a title into a slug the way WordPress does, so the URL you plan is the URL the site will store.

How to use

  1. Paste one title per line. Each line becomes its own slug.
  2. Keep the hyphen separator. Google reads an underscore as part of the word, so hello_world is one word to it and hello-world is two.
  3. Leave symbol spelling on for titles where the symbol carries meaning: & becomes and, % becomes percent, @ becomes at.
  4. Turn on stop word removal for long titles. It never strips everything: a title made only of stop words keeps them.
  5. Set a maximum length if your URLs have one. The cut lands on a word boundary, never mid-word.

Example

How to Build a WordPress Plugin in 2026
Café & Bar: 50% Off!

becomes

how-to-build-a-wordpress-plugin-in-2026
cafe-and-bar-50-percent-off

Café becomes cafe, not caf. The accent is mapped to its base letter, which is what WordPress does through its own accent table; stripping the character instead is how a URL quietly loses a word.

Pitfalls

  • Changing a published slug changes the URL. Old links break unless you add a redirect, and search engines treat the new URL as a new page.
  • Accents are the usual surprise. A naive slug generator drops them, turning Größe into gre; mapping them gives grosse, which is what the German reader expects.
  • Stop word removal can change meaning. how-to-be-a-good-host and good-host are not the same title, and the second is harder to recognise in a link.
  • Non-Latin titles have no ASCII equivalent. WordPress percent-encodes them, which works but gives an unreadable URL; this tool tells you when nothing usable is left rather than emitting an empty slug.
  • Length is not an SEO ranking factor, but it is a usability one. A slug people can read aloud is the useful limit, not a character count.
  • Dates in slugs age the content. wordpress-plugin-2026 looks stale in 2027, even if the article is updated.
  • A trailing number added by WordPress means the slug was taken. Check for an existing post with the same slug before assuming yours will be used as is.
  • Uppercase letters are lowercased. Some servers treat URLs case-sensitively, so a mixed-case slug is a source of duplicate pages.

Compatibility

The accent mapping follows the Latin-1 and Latin Extended-A tables WordPress uses in remove_accents, so slugs match what sanitize_title would produce for the same title. Hyphens, digits and lowercase ASCII are the whole output, which is safe in every browser, server and CDN. The tool runs in your browser and uploads nothing.

Frequently asked questions

Will this match what WordPress saves?
For Latin titles, yes: the same accent table and the same collapsing rules. WordPress also appends a number if the slug already exists, which only your site knows about.
Should I remove stop words?
Only when the slug is unwieldy. They cost nothing for ranking, and they make a URL read like the title it came from.
What about non-English titles?
Accented Latin text converts. Greek, Cyrillic, Arabic and CJK have no ASCII form, so WordPress percent-encodes them; the tool says when there is nothing left to use.
Hyphens or underscores?
Hyphens. Underscores join words rather than separating them, as far as search engines are concerned.
How long should a slug be?
Long enough to say what the page is, short enough to read in a link. Three to six words is the usual answer.
Weekly drops

New tools, when there are new tools

One email when something worth using ships. No schedule to fill, so no filler.

Your address goes nowhere else, and one click unsubscribes.