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

    Up to 200 lines in one run

    The character between words

    What to do with marks above and below letters

    0 means no cap

    the, and, of, for and the rest

    Suffix, or flag and leave alone

    Form progress0 / 5 fields

    💡 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 æ.

    One title, traced through every stage. Starting from Straße des 17. Juni:
    1. Letters with no decomposition are spelled out: Strasse des 17. Juni
    2. Remaining marks are decomposed and dropped: nothing left to do here
    3. Lowercased: strasse des 17. juni
    4. Every run of anything else becomes one separator: strasse-des-17-juni
    5. 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

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.
    6. 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.
    7. 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.

    A batch with a collision in it. Four product titles that a human would call four different pages:

    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

    Hyphen or underscore, if I only care about search?
    Hyphen. A hyphen is read as a word break, an underscore is not, so red_running_shoes can be read as one long token rather than three words. Underscore earns its place where a path segment is really an identifier being handed to another system, and there the readability argument does not apply anyway.
    Why does Kyiv come out as kiyiv?
    Because one romanization is applied to every language that uses Cyrillic, and it reads the vowel и the Russian way, as i. Ukrainian romanizes that same letter as y, which is where the official spelling Kyiv comes from. The tool does not detect the language of a title, so it cannot switch conventions on its own. For Ukrainian titles, type the romanization you want and let the tool handle the punctuation and the casing.
    Should I remove stop words?
    Usually not, and definitely not blindly. Removal is worth it when the cap is tight and the words carry nothing, which is where it saved 29 characters in the table above. It is a bad idea when the small word is the meaning: The Who, To Kill a Mockingbird and anything where on and off are opposites. A title made only of stop words is left intact rather than emptied, which is the one case the tool decides for you.
    Is there a correct length for a slug?
    There is no published limit that makes one length correct. There are two practical ceilings: the width of the database column the value has to fit in, and the point at which a path stops being readable when it is pasted somewhere. A cap between 50 and 75 characters keeps most headlines whole and keeps the address quotable. Set 0 while drafting to see the full path first, then decide where to cut.
    Can I change a slug after the page is live?
    You can, and it costs you a permanent redirect that has to survive every future migration. Anyone who linked to the old address is relying on it. That is the whole argument for spending twenty seconds on the path before publishing rather than twenty minutes on redirect rules afterwards.
    Why did my title come back empty?
    Because nothing in it maps to a Latin letter or a digit. A title written entirely in Chinese, Japanese, Korean, Arabic or Hebrew has no transliteration here, so the honest answer is an empty result and a line naming the characters involved, rather than a silent blank. Those languages need a romanization chosen by someone who reads them, or a path built from a translated title.
    Does a number at the start of the path cause problems?
    Not for the address itself. 5-best-calculators is a perfectly valid path. It is worth a second look only if your routing treats a numeric first segment as a record id, because then a path that is nothing but digits can be swallowed by a route meant for something else. The tool leaves digits alone and shows you the result, so the check takes a glance.
    How many titles can go in at once?
    Up to 200 lines in one run, and the duplicate check looks at the whole batch, not at adjacent lines. That is the reason to paste a whole content calendar in one go rather than one title at a time: a collision between line 4 and line 180 is invisible any other way.

    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

    Similar calculators from this section