Local browser utility

Slug Generator

Turn any title into a URL slug: accents reduced to base letters, symbols spelled out, and characters with no Latin form listed rather than silently dropped.

Enter a title, headline or any text. It becomes a clean URL slug as you type.

0 characters

Options

Separator

Generated slug

Your slug will appear here

Generate several at once

One title per line. Repeats get a numeric suffix, the way a CMS resolves a collision. The options above apply to every line.

Slugs will appear here

Good to knowAccented letters are reduced to their base form, so café becomes cafe. Characters with no Latin equivalent — Chinese, Cyrillic, emoji — are dropped and listed, because a silently empty slug is the failure worth catching.

Questions About This Tool

Should I use hyphens or underscores?

Hyphens for anything public. Search engines have long treated a hyphen as a word separator and an underscore as a word joiner, so first_post can be read as one token where first-post is two words. Underscores are fine for internal identifiers.

Why were my Chinese characters removed?

Because there is no correct romanization without knowing the language and which system you want. Rather than guess, the tool drops them and lists exactly which characters went, so an empty or shortened slug is visible instead of surprising.

How long should a slug be?

Around 50 to 60 characters suits most titles: long enough to keep the keyword, short enough to survive truncation in search results. When the cap is on here, truncation breaks at a word boundary rather than mid-word.

Should I regenerate slugs when a title changes?

No. Once a URL is published, changing its slug breaks inbound links and discards the ranking the old URL earned. Generate at creation, store it, and let title and slug drift apart. If it truly must change, redirect the old URL permanently.

How does batch mode handle duplicates?

With a numeric suffix starting at 2, which is the convention every CMS uses — the unsuffixed slug is the first one. It only sees the list you paste, so it cannot know what already exists in your database.