International URL Slugs: Transliteration vs Native Characters for Non-Latin Scripts
Chinese, Arabic, and Cyrillic characters in URLs are technically valid and browsers display them readably — but transliteration vs native-language slugs involves real SEO and UX trade-offs. Here's how percent-encoding works, transliteration libraries for different languages, and how major frameworks handle non-ASCII slugs.
By sadiqbd · June 10, 2026
Using Chinese characters in URL slugs is a legitimate choice — and the SEO and UX trade-offs are real
The default approach to URL slugs for non-English content is transliteration: convert "中文标题" to "zhong-wen-biao-ti" or even just "chinese-title". This works but loses information — a Chinese reader can't infer the page content from the URL, and you're serving an international market with URLs that look like they're trying to represent another language phonetically.
The alternative — using native-script slugs — is increasingly viable technically, but the SEO and usability trade-offs are genuine.
How URLs handle non-ASCII characters
URLs officially support only ASCII characters in their "unreserved" set: letters A-Z, digits 0-9, and -, _, ., ~. Everything else must be percent-encoded.
A Chinese character in a URL becomes a percent-encoded sequence of its UTF-8 bytes. The character "中" (U+4E2D) encodes as three UTF-8 bytes: E4 B8 AD → %E4%B8%AD.
The full URL for a Chinese page might be:
https://example.com/blog/%E4%B8%AD%E6%96%87%E6%A0%87%E9%A2%98/
This is what the URL actually is. However, modern browsers and applications display the decoded Unicode form:
https://example.com/blog/中文标题/
The display form is legible; the wire form is encoded.
Transliteration: converting scripts to Latin
Transliteration libraries convert native-script text to Latin-script approximations:
Python (pinyin for Chinese):
from pypinyin import lazy_pinyin
title = "机器学习入门"
slug = "-".join(lazy_pinyin(title))
# → "ji-qi-xue-xi-ru-men"
Python (unidecode for general Unicode):
from unidecode import unidecode
title = "Ñoño señor" # Spanish
unidecode(title) # → "Nono senor"
title = "Привет мир" # Russian (Cyrillic)
unidecode(title) # → "Privet mir"
title = "über" # German
unidecode(title) # → "uber"
JavaScript (slugify):
import slugify from 'slugify';
slugify("Ñoño señor", { lower: true }) // → "nono-senor"
slugify("über Straße", { lower: true }) // → "uber-strase"
The limitation of transliteration: it's phonetically approximate, not semantically exact. "学习" (xuéxí, meaning "learning") becomes "xue-xi" — correct phonetically but meaningless to English readers.
Native-language slugs: the case for them
User recognition: a Spanish reader can tell from /blog/cómo-aprender-programación/ what the page is about. /blog/como-aprender-programacion/ (transliterated, without accent) is still readable but different. /blog/how-to-learn-programming/ (translated) works but requires translation at the URL level.
SEO for non-English search: when users in China search in Chinese, the query terms are Chinese characters. A URL containing those characters is a relevance signal that a transliterated slug cannot provide. Google's John Mueller has stated that keyword-relevant URLs in the user's language are a minor ranking signal — not large, but present.
Cleaner URLs with no transliteration guessing: some languages don't transliterate cleanly to Latin (Thai, Arabic, Chinese, Japanese). Phonetic transliteration of Thai produces awkward Latin approximations that don't help users.
The practical trade-offs
For native-language slugs:
- Google, Bing, and major search engines index and rank pages with non-ASCII URLs
- The decoded (readable) form is shown in search results, making them legible
- Users sharing links may see the readable decoded form in messaging apps and social media
- Content targeting non-English speakers gets character-level relevance signals
Against native-language slugs:
- Copy-paste behaviour varies: some tools copy the encoded form (
%E4%B8...) rather than the decoded form - Link building and citation may produce either encoded or decoded URLs depending on the sharing context
- ASCII-only CMS platforms and tools may not handle non-ASCII slugs cleanly
- Difficult to type or memorise by non-native speakers of that language (less of a concern as users rarely type URLs)
The pragmatic middle ground:
- English-primary sites with multilingual content: transliterate for consistency with the rest of the site's URL structure
- Sites primarily serving non-English speakers: native-language slugs
- Mixed-language sites: choose one approach per language and apply consistently
Slugification implementation across frameworks
WordPress: uses sanitize_title() which by default produces ASCII, removing non-ASCII characters. Install plugins like "Polylang" or "WPML" to enable multilingual slugs. The sanitize_title_with_dashes filter can be extended.
Next.js / React: slugs are typically generated in application code. Use a library like slugify or limax (which has better multilingual support than slugify).
Django: django.utils.text.slugify() converts to ASCII by default but has allow_unicode=True parameter:
from django.utils.text import slugify
slugify("中文标题") # → '' (empty — ASCII only default)
slugify("中文标题", allow_unicode=True) # → '中文标题' (preserved)
Ruby/Rails: ActiveSupport::Inflector.transliterate converts to ASCII transliteration.
Character-level slug rules that apply universally
Regardless of whether you use ASCII or native characters:
- Lowercase:
About-Us→about-us - Replace spaces with hyphens:
my article→my-article - Remove special characters:
article!@#→article - Collapse multiple hyphens:
my--article→my-article - Trim leading/trailing hyphens:
-article-→article - Remove stopwords (optional):
the-best-article-of-all-time→best-article-all-time(for shorter, cleaner URLs)
How to use the Text to Slug tool on sadiqbd.com
- Enter any text — including non-ASCII characters
- Generate slug — the tool applies standard slugification rules
- Options: preserve or transliterate non-ASCII, include/exclude stopwords
- Copy — ready to use in CMS or URL generation
Frequently Asked Questions
Can Google rank pages with non-ASCII URLs as well as ASCII URLs? Yes — Google fully supports indexing and ranking pages with non-ASCII, percent-encoded URLs. The choice between ASCII transliteration and native character slugs is primarily a user experience and search intent decision, not a technical indexation constraint.
What happens when a URL with non-ASCII characters appears in an HTML email?
Email clients vary in how they handle URLs. Modern email clients typically display the decoded form but link to the encoded form. Older clients may display the encoded form (%E4%B8...) in the visible link text. For email marketing, ASCII slugs are safer for universal compatibility.
Is the Text to Slug tool free? Yes — completely free, no sign-up required.
The slug is a commitment — a URL that changes after indexing loses its link equity and search history. Whether you choose transliteration or native-language slugs, choose a system that works for your primary audience and apply it consistently.
Try the Text to Slug tool free at sadiqbd.com — generate SEO-friendly URL slugs from any text, in any language.