🧰 ToolPicoAll Tools →
HomeBlog › Why Does My CMS Slug Look Wrong?

Why Does My CMS Slug Look Wrong? Fixing Accents, Dashes & Duplicate URLs

If you've ever published a post titled "Café Menú Ideas" and watched your CMS turn it into a slug full of percent signs or stray underscores, you're not imagining it. Here's why it happens and how to generate a clean slug yourself before you hit publish.

In this guide

Why slugs come out wrong in the first place

Quick answerMost auto-slug features only do a shallow lowercase-and-hyphenate pass — they don't reliably strip accents, symbols, or emoji, so anything outside plain a-z0-9 either gets percent-encoded, silently dropped, or left in as a broken character.

A slug is the readable last segment of a page's URL — in https://example.com/best-coffee-makers, the slug is best-coffee-makers. It's meant to be short, lowercase, and hyphen-separated so both people and search engines can tell what the page is about at a glance. The problem is that the "auto-generate slug from title" feature built into most CMS platforms is a fairly basic pass: it lowercases the title and swaps spaces for hyphens, but it often stops there.

That's fine for a plain English title. It falls apart the moment your title includes an em dash, a curly quote, an emoji, or a name with an accent — exactly the kind of punctuation a normal title often has (a product review with "2026!" in it, a recipe with a degree symbol, a name like "François"). The result is a slug that's either ugly, gets percent-encoded into something like %C3%A9, or quietly loses characters it shouldn't have.

Rule of thumb: if you can't comfortably read your slug out loud, it's not clean enough to publish yet.

Handling accented and non-ASCII characters

Quick answerConvert accented characters to their closest plain-ASCII equivalent before anything else: é→e, ñ→n, ü→u, ö→o, ç→c, and ß→ss. Only after that pass should spaces become your chosen separator and remaining symbols get stripped.

A dedicated slug generator runs a transliteration table first, then a Unicode-normalization safety net for anything the table misses, so accented letters resolve to something readable instead of a percent-encoded mess. This matters most for names, place titles, and international recipes or products — the exact content types that tend to produce percent-sign soup in a naive auto-slug.

Worked example (illustrative only): a post titled "Café, naïve, façade — accent test: crème, mañana" cleans up to cafe-naive-facade-accent-test-creme-manana — every accented letter swapped for its ASCII counterpart, punctuation stripped, and everything joined with a single hyphen.
Common accented-character conversions
OriginalASCIIExample
é / è / êecafé → cafe
ñnmañana → manana
ï / íinaïve → naive
çcfaçade → facade
ü / öu / oZürich → zurich

Hyphen vs. underscore, and slug length

Quick answerUse a hyphen, not an underscore, and keep the slug under roughly 50-60 characters. Google reads a hyphen as a word separator but treats an underscore as joining two words into one token — the opposite of what you want for keyword-readable URLs.

Beyond the separator choice, a good slug limits itself to 2-5 meaningful keywords, drops filler words like "a," "the," and "of," and avoids stray numbers or dates unless the date is genuinely part of the topic. If a title runs long, trimming should happen at a word boundary — cutting off mid-word (top-10-coffee-mak) looks broken and reads worse than a shorter, complete slug.

Practical scenario: say you're publishing a post titled "The Best Way to Learn a New Language in 2026 (Complete Guide)." Left to a naive auto-slug, that could turn into a 70+ character mess. Stripping stopwords and the parenthetical gets you to something like best-way-learn-new-language-2026 — short, readable, and still keyword-rich.

Generating slugs for a whole batch of titles

Quick answerProcess titles in bulk (one per line) rather than one at a time, and make sure duplicate slugs get an automatic -2, -3 suffix — the same collision-handling approach most CMS platforms use internally at the database level.

Migrating a batch of posts, importing from a spreadsheet, or renaming an entire category of product pages all create the same risk: two different titles that are similar enough to produce the identical slug once cleaned up. Without automatic de-duplication, the second one either silently overwrites the first in your CMS's internal mapping or throws an error you have to resolve by hand, one at a time.

Example (illustrative): if "Best Places to Visit in Lisbon" appears twice in an import batch, a bulk slug pass should produce best-places-to-visit-in-lisbon for the first occurrence and best-places-to-visit-in-lisbon-2 for the second, rather than silently colliding.

Being able to export the result afterward — as a plain-text list or a CSV with the original title next to its new slug — also makes it far easier to hand off a batch of URL changes to a developer or paste directly into a CMS import sheet.

Paste a title (or a whole batch of them) and get a clean, SEO-friendly slug instantly — accents stripped, separator of your choice, duplicates auto-numbered.

Try the free Slug Generator →

Frequently asked questions

Why did my CMS turn an accented title into a slug full of percent signs?
Some CMS platforms percent-encode any character outside the basic ASCII range instead of converting it. A title like "Café Menú" can turn into a slug containing %C3%A9 and %C3%BA, which is technically valid but ugly and hard to read. Converting accented characters to their closest ASCII equivalent first (é→e, ñ→n, ü→u) avoids this entirely.
Should I use a hyphen or an underscore in a slug?
Use a hyphen. Google treats a hyphen as a word separator, so best-coffee-makers is read as three separate keywords: best, coffee, makers. An underscore is treated as joining words together, so best_coffee_makers can be read closer to a single token. Hyphens are the safer default for SEO.
How long should a URL slug be?
Aim for roughly 50-60 characters or fewer, with 2-5 meaningful keywords. Longer slugs get truncated in search results and are harder for users to read and share. Trimming should happen at a word boundary rather than mid-word, so the slug still reads cleanly.
How do I generate slugs for a whole batch of titles without duplicates?
Paste one title per line into a bulk mode and generate them all together, rather than one at a time. If two titles would produce the exact same slug, an increasing number like -2, -3 should be appended automatically to the later ones — the same approach most CMS platforms use at the database level.
Does changing a slug after publishing hurt SEO?
Yes, potentially. Changing the slug of a page that is already indexed breaks the old URL; existing links and search results pointing to it can start returning a 404 unless you set up a 301 permanent redirect from the old address to the new one. It is safest to settle on the slug before the first publish.

Related guides

A note on this guide: the worked examples above use illustrative, hypothetical titles to demonstrate how the slug rules apply — they are not claims about any specific real website's traffic or rankings. This content is for general informational purposes and isn't a substitute for your CMS's own documentation or a developer's review of your specific setup.