sandywp / plugins / cyr3lat
Cyr to Lat Enhanced
Converts Cyrillic, European and Georgian characters in post, term slugs and media file names into Latin characters.
Ready in seconds.
v3.7.5 80,000+ installs WP 5.0+ PHP 7.4+

About this plugin
Cyr to Lat Enhanced automatically converts Cyrillic, European and Georgian characters in post slugs, term slugs and media file names into Latin characters.
It helps maintain clean, readable and consistent URLs on WordPress sites that use non-Latin scripts.
The plugin integrates directly with WordPress core sanitization (sanitize_title and sanitize_file_name) and performs transliteration at the moment slugs and filenames are generated.
It does not modify post content, titles or front-end text. Its scope is strictly limited to URLs and file names.
On activation, existing post and term slugs are converted in the background using safe, batch-based processing via WP-Cron.
WordPress core APIs are used to preserve permalink integrity and existing redirects.
Transliteration is based on an ISO 9-style mapping table with built-in support for:
– Russian
– Belarusian
– Ukrainian
– Bulgarian
– Macedonian
– Georgian
Locale-specific adjustments are applied automatically, and the transliteration table can be customized using a public filter.
Cyr to Lat Enhanced is intentionally lightweight and focused:
– no admin interface
– no settings pages
– no bidirectional conversion
– no data collection or tracking
The plugin continues the cyr2lat / cyr3lat lineage and remains compatible with the original approach introduced by Sergey Biryukov.
Advanced Transliteration
For advanced transliteration needs such as full content conversion, bidirectional processing, extended language rules and fine-grained control, consider the separate plugin:
https://wordpress.org/plugins/serbian-transliteration/
That plugin is designed for complex multilingual setups and broader language processing beyond slugs and file names.
Adoption Notice
This plugin represents the continued maintenance of the original “Cyr to Lat Enhanced” project from the cyr3lat lineage.
The project has been revived to ensure long-term stability, modern WordPress compatibility and responsible maintenance, while preserving the original behavior and purpose.
Credits
Original upstream concept: Rus-To-Lat by Anton Skorobogatov
cyr2lat / cyr3lat lineage contributors: karevn, Atrax, Sergey Biryukov, webvitaly
Maintainer: Ivijan Stefan Stipic (INFINITUM FORM)
Legal Notice
This plugin is licensed under the GPLv2 or later license.
All new contributions are released under the same license.
Questions
- How can I define my own substitutions?
You can modify or extend the transliteration table by using the
ctl_tablefilter.Add this code to your theme’s
functions.phpfile:function my_cyr_to_lat_table( $ctl_table ) { $ctl_table['Ъ'] = 'U'; $ctl_table['ъ'] = 'u'; return $ctl_table; } add_filter( 'ctl_table', 'my_cyr_to_lat_table' );- How can I adjust the background batch size?
By default, the plugin processes slugs in batches to avoid timeouts.
On slower or low-memory servers, you may want to reduce the batch size.Add this code to your theme’s
functions.phpfile:function my_ctl_batch_size( $size, $context ) { // Apply the same batch size for posts and terms. return 100; } add_filter( 'ctl_enhanced_batch_size', 'my_ctl_batch_size', 10, 2 );- Can I modify the generated slugs after transliteration?
Yes. You can adjust the final slug value after transliteration and normalization
by using thectl_enhanced_sanitized_titlefilter.Add this code to your theme’s
functions.phpfile:function my_ctl_modify_slug( $slug, $source, $context ) { // Example: append a suffix to all generated slugs. return $slug . '-custom'; } add_filter( 'ctl_enhanced_sanitized_title', 'my_ctl_modify_slug', 10, 3 );- Can I modify media file names after transliteration?
Yes. You can adjust media file names after transliteration and normalization
by using thectl_enhanced_sanitized_file_namefilter.Add this code to your theme’s
functions.phpfile:function my_ctl_modify_filename( $filename, $source ) { // Example: prepend a prefix to all media file names. return 'media-' . $filename; } add_filter( 'ctl_enhanced_sanitized_file_name', 'my_ctl_modify_filename', 10, 2 );- What is the difference between Cyr to Lat Enhanced, cyr2lat and Transliterator?
Cyr to Lat Enhanced is a continuation of the original cyr2lat / cyr3lat lineage.
Its purpose is strictly limited to transliteration of post slugs, term slugs and media file names.The original cyr2lat plugin by Sergey Biryukov introduced a simple and effective way to generate Latin slugs from Cyrillic titles.
Cyr to Lat Enhanced preserves this philosophy while modernizing the codebase, improving reliability and ensuring compatibility with current WordPress versions.Transliterator is a separate plugin with a different scope and goals.
It is designed for advanced and complex use cases, including:
– transliteration of post content and front-end text
– bidirectional conversion (Latin and Cyrillic)
– extended language rules and exclusions
– fine-grained control over when and where transliteration is appliedBecause these plugins solve different problems, they are intentionally separated.
Cyr to Lat Enhanced focuses on clean URLs and file names with zero configuration.
Transliterator focuses on full-language processing and advanced multilingual setups.Users should choose the plugin that best matches their needs:
– use Cyr to Lat Enhanced for simple, automatic slug and filename transliteration
– use Transliterator when full content-level transliteration is required
sandywp / also on the shelf
Try another plugin
4.7 · 300K+ installs
Convert Non-Latin characters in post, page and term slugs to Latin characters.
Cyrlitera – Transliteration of Links and File Names
4.5 · 40K+ installs
Convert Cyrillic and Georgian URLs and file names to Latin. Works for all post types, pages, and terms. Custom characters, URL…
Cyr to Lat Reloaded – Transliteration of Links and File Names
4.4 · 30K+ installs
Convert Cyrillic, Georgian and Greek URLs and file names to readable Latin characters. Works on slugs, attachments and taxonomies…
Spin up a real WordPress site in seconds.
Test plugins, build a demo, hand a client a link — then squash it and start again. No local setup, no Docker.