How to Use Special Characters in WordPress Permalinks?

WordPress automatically removes accents, symbols, and punctuation from slugs to keep links readable, and compatible across browsers and server environments.

During this process, WordPress converts post titles into safe ASCII strings. This prevents encoding issues that once caused malformed URLs, especially in older browsers like Netscape and Internet Explorer.

Those browsers are hardly used anymore, but WordPress has not changed how it handles URLs. Limiting URLs to Latin characters keeps permalinks consistent and standardized. If you need to keep non-Latin characters in your URLs, you can use Permalink Manager as a workaround.

Special characters

URL Encoding and Character Compatibility

URLs are based on the ASCII character set, defined in RFC 1738 back in 1994. This set contains the English alphabet, numbers, and selected symbols.

Since most early web content was written in English, ASCII became the standard format for building URLs.

ASCII character table
Note: Control characters (0-31) and DEL (127) are not listed. They are considered non-printable, meaning they do not display as visible symbols.

Non-Latin Characters and Percent-Encoding

When you build a WordPress site in languages such as Greek, Japanese, or Arabic, you may notice that the browser converts these characters in the address bar. This conversion is known as percent-encoding, or URL encoding.

Since the URL standard supports ASCII characters only, any special characters must be converted into a safe ASCII format. You typically do not notice the encoded form, as the browser shows the decoded version in the status bar.

In simple terms, percent encoding keeps non‑standard URLs backward compatible when they contain characters or symbols that were not originally supported by the early RFC protocols.

Why Does WordPress Strip Special Characters?

Special characters outside the ASCII range can lead to malformed URLs or inconsistent behavior across browsers and servers. To stay compliant with RFC standards, WordPress applies strict URL sanitization rules.

WordPress automatically removes or replaces special characters in URLs to ensure they remain compatible with the ASCII standard. URLs must be readable by browsers, servers, and search engines, all of which rely on ASCII-based encoding.

How WordPress Strips Non-Alphanumeric Characters from Slugs?

In WordPress, special and non‑alphanumeric characters are automatically stripped from slugs when a post or term is first saved and whenever it is updated. This process is known as slug sanitization.

During this process, WordPress keeps only ASCII letters, numbers, and hyphens, and it converts all uppercase characters to lowercase. By default, it uses sanitize_title() function to remove the following characters from slugs:

  • Spaces:
    Replaced with a hyphen (-)
  • Non-alphanumeric characters:
    Removed completely
  • Diacritics (accented characters):
    Replaced with the corresponding non-accented character

For instance, if your post title is "My Special Post!", the system will generate the slug as "my-special-post".

Special characters in WordPress permalinks

 

Should You Keep or Remove Special Characters?

As a general WordPress best practice, keep your URLs simple and easy to read. Google handles non-Latin characters without any problem, but older browsers may not.

While this is not very common, encoded URLs are usually longer and may look awkward in search results. Some email clients and messaging apps may not process the non standard letters correctly, which could result in broken links or formatting issues.

If your WordPress site includes characters with diacritics such as é, ñ, or ö in permalinks, consider transliterating them (e.g., change "café" to "cafe"). This helps prevent encoding issues and avoids percent‑encoded URLs.

How to Keep Special Characters in WordPress Slugs?

If you need to bypass WordPress’s default slug sanitization and allow special symbols like underscores or dots in permalinks, you can use the Permalink Manager plugin.

The plugin allows you to preserve these characters in custom permalinks. It works by dynamically overriding the original URLs generated by the built‑in permalink system, which normally relies on sanitized slugs.

Allow Special Characters in URLs

To allow additional symbols in URLs, go to the Permalink Manager settings, open the "Advanced settings" tab, and change the "Strip special characters" option to "No":

Once this setting is enabled, you can keep special characters (dots, commas, underscores, pluses) in URLs when changing custom permalinks in WordPress.

"Strip special characters" settings

Preserving Accented Letters (Diacritics)

By default, WordPress converts accented characters and other special symbols into their standard Latin versions (for example, Å becomes A, Ø becomes O, and Ć turns into C).

If you would rather keep the accents inside the custom permalinks, you can disable the remove_accents() function through the Permalink Manager settings:

Keep accented letters in the slugs

How to Transliterate WordPress Slugs Without a Plugin?

Transliteration converts special characters into their closest Latin equivalents. Using Latin characters helps prevent malformed URLs in email clients, social networks, and older browsers.

You do not need to install an extra plugin to use this feature. Simply implement the code snippet to automatically transliterate slugs for one of six supported languages:

  1. Russian
  2. Bulgarian
  3. Serbian
  4. Ukrainian
  5. Greek
  6. Arabic

Keep in mind that this code only affects slugs created or updated after implementing the code. Older slugs will stay the same unless you regenerate them to keep URLs consistent.

Last updated by Maciej Bis on: February 18, 2026.


Maciej BisFounder of Permalink Manager & WordPress Developer

The developer behind Permalink Manager, a plugin for managing permalinks, has been working with WordPress, creating custom plugins and themes, for more than a decade.

Go up