Readable addresses from real headlines: accents converted rather than deleted, symbols spelled out, the cut landing on a whole word, and duplicates named before two pages share one path.
URL Slug Generator - Clean Permalinks From Any Alphabet
Readable addresses from real headlines: accents converted rather than deleted, symbols spelled out, the cut landing on a whole word, and duplicates named before two pages share one path.
Parameters
Enter data for calculations
💡 Fill in all required fields to unlock the calculate button
The same article, two addresses
An address is the one part of a page that outlives the page. Titles get rewritten, images get swapped, the layout gets rebuilt twice, and the path stays, because every link anyone ever made points at it. That is why the twenty seconds spent turning a headline into a path are worth more than they look.
Left to the CMS
/index.php?p=482&cat=7&lang=de
- Nothing in it says what the page is about
- Two titles can quietly land on the same path
- Accented letters get deleted rather than converted
- Shared in a chat window, it looks like spam
Written on purpose
/schoene-gruesse-fuer-kaeufer
- Readable before anyone clicks it
- Collisions are caught while you can still rename
- Every letter has a defined Latin form
- Survives being pasted into a plain text email
Paste one headline or two hundred, one per line. Each line comes back as a path, with a note saying what changed on the way: which symbol was spelled out, which stop word went, where the length cap fell, and which line collided with a line above it.
What a title has to survive on its way to a path
A path may contain lowercase letters, digits and one separator. Everything else has to become one of those three or disappear, and the interesting question is which. Deleting is the lazy answer and it is the one that loses data: drop the ring from å and Malmö still reads, drop the caron from š and Ceška becomes Ceka, which is a different word.
The order of operations here is deliberate. Letters that carry a mark are decomposed into a base letter plus that mark, and the mark is discarded, so é becomes e, ș becomes s and ế becomes e without needing an entry per letter. Letters that carry no mark at all get an explicit rule, because there is nothing to strip: ß is not an s with something on top, it is its own letter, and it becomes ss. The same goes for ø, ł, đ, þ and æ.
- Letters with no decomposition are spelled out:
Strasse des 17. Juni - Remaining marks are decomposed and dropped: nothing left to do here
- Lowercased:
strasse des 17. juni - Every run of anything else becomes one separator:
strasse-des-17-juni - Length checked against the cap: 19 characters, under 60, left alone
Two smaller decisions do a surprising amount of work. An apostrophe is closed up rather than broken on, so Don’t Panic gives dont-panic and not dont-t-panic. And four symbols are spelled out instead of dropped, because dropping them changes the meaning: The Best 50% Off Deal becomes the-best-50-percent-off-deal, where deleting the sign would have left the-best-50-off-deal.
Six settings, top to bottom
- Titles - one per line. A whole editorial calendar can go in at once, up to 200 lines, and duplicates are only visible when the batch is judged together rather than one title at a time.
- Separator - hyphen or underscore. Hyphen for anything a search engine will read, underscore where a downstream system treats a path segment as an identifier. Whichever you pick, the other one stops appearing in the output, which is where most hand written slugs go wrong.
- Accents - drop the mark, or use the German convention. The first gives schone-grusse, the second gives schoene-gruesse. German readers search for the second spelling, so on a German site the convention is not decoration.
- Length cap - a number of characters, or 0 for none. The cut lands on the last whole word that fits, never mid word, unless the first word is already longer than the cap.
- Stop words - keep or remove. Removing turns a 76 character path into a 47 character one. It also removes meaning from some titles, which is why it is a switch and not a default.
- Duplicate handling - add a numeric suffix, or flag and leave alone. Flagging is the honest setting when you still have the option of changing the title.
- Read the table - the slug column is what to paste, and the last column says what happened to get there.
What each writing system turns into
Latin letters with marks are handled by decomposition, so the table below lists only the cases that need a rule of their own. Cyrillic and Greek get a single romanization applied to every language that uses them, which is a deliberate simplification and is worth knowing about before you trust it with a Ukrainian title.
| Input | Becomes | Worked example |
|---|---|---|
| Any letter with a mark | base letter | Ceška Košarka → ceska-kosarka |
| ß | ss | Straße des 17. Juni → strasse-des-17-juni |
| ä ö ü in German mode | ae oe ue | Schöne Grüße → schoene-gruesse |
| ø ł đ þ æ œ | o l d th ae oe | Zażółć gęślą jaźń → zazolc-gesla-jazn |
| Cyrillic | one romanization | Москва Россия → moskva-rossiya |
| Cyrillic digraphs | zh ch sh shch yu ya | Ёлка и Чайка → yolka-i-chayka |
| Greek | one romanization | Αθήνα Ελλάδα → athina-ellada |
| & % + @ | and percent plus at | C++ Tutorial → c-plus-plus-tutorial |
| Apostrophes and quotation marks | closed up | Don’t Panic → dont-panic |
| Punctuation, emoji, currency, degrees | one separator | Summer 🌞 Sale → summer-sale |
| Everything else | reported, not hidden | A CJK title returns empty and says which characters had no Latin form |
What the careless version costs later
None of these are hypothetical. They are the four ways a path goes wrong, and every one of them is cheap to prevent and expensive to undo, because undoing means a redirect that has to be maintained for as long as anyone still links to the old address.
| What goes wrong | Left alone | Caught here |
|---|---|---|
| Two titles, one path | The second save overwrites the first, or the CMS appends a suffix nobody chose | The collision is named while you can still rename the title |
| A letter deleted rather than converted | ceska becomes ceka, and the word no longer matches anything anyone searches for | Every mark bearing letter keeps its base letter |
| Mixed separators in one path | already-hyphenated_title, which is two conventions in one address | The chosen separator is the only one that appears |
| A path longer than the column | The insert fails, or the value is silently cut mid word by the database | The cut lands on a word boundary and is reported |
| Cost of fixing it after launch | A permanent redirect per address, kept forever | Nothing, the title was still a draft |
Where the cap falls, on one real headline
The same 76 character headline, run at four settings. Nothing here is estimated, every row is what the tool returns for The Complete Guide to Choosing Running Shoes for Flat Feet and Overpronation.
| Setting | Result | Chars |
|---|---|---|
| No cap | the-complete-guide-to-choosing-running-shoes-for-flat-feet-and-overpronation | 76 |
| Cap 60 | the-complete-guide-to-choosing-running-shoes-for-flat-feet | 58 |
| Cap 40 | the-complete-guide-to-choosing-running | 38 |
| No cap, stop words removed | complete-guide-choosing-running-shoes-flat-feet | 47 |
Notice what the cap at 60 threw away: and overpronation, which is the part of the headline a reader with flat feet was searching for. Removing stop words instead keeps overpronation out of the path but saves 29 characters and holds every noun. Neither is automatically right. The point is seeing the trade before the address is permanent, not after.
Red Running Shoes! → red-running-shoes
Red Running Shoes? → red-running-shoes-2
Red Running Shoes → red-running-shoes-3
Blue Running Shoes → blue-running-shoes
Three of the four titles differ only in punctuation, so three of them want the same address. The suffix keeps all three reachable, and the report says plainly that a suffix is a patch and a different title is the actual fix.
The awkward cases, answered
Related tools
CSS Gradient Generator
The background behind the headline whose path you just wrote, with the contrast checked at both ends - Open the tool
Random Name Generator
People to populate the pages while the real content is still being written - Open the tool
SEO Meta Tag Generator
The title and description that sit above this address, measured in pixel width rather than characters - Open the tool
UTM Link Generator
Campaign parameters bolted onto the finished address, with the channel named before you publish - Open the tool
Business Name Generator
Names that have to work as a brand and as a path at the same time, checked for both - Open the tool
Table Generator
Turns a pasted range into Markdown, HTML and two other shapes for the article behind the address - Open the tool
QR Code Generator
The same address as a printable symbol, where a short readable path really does mean a smaller code - Open the tool