Cyr-To-Lat
by Sergey Biryukov 4.7 (98 reviews)

Cyr-To-Lat

Convert Non-Latin characters in post, page and term slugs to Latin characters.

Cyr-To-Lat ranks #201 among WordPress.org plugins with 300,000+ active installations, is #6 of 799 in the Language Tools category, a 4.7/5 rating from 98 reviews, and was last updated Aug 8, 2026. Data from WordPress.org, refreshed twice daily — see methodology.

Compatible with WP 7.1
v7.1.0 Current Version v7.1.0
Updated 2 months ago Last Update on 08 Aug, 2026
Refreshed 8 hours ago Last Refreshed on
#6 of 799 in Language Tools Top 1% by installs Downloads -16.8% this week
View on WordPress.org
Rank
#201
— No change
Active Installs
300K+
-2.7%
KW Avg Position
10.8
— No change
Downloads
3.1M
+378 today
Support Resolved
0%
— No change
Rating
94%
Review 4.7 out of 5
4.7 (98 reviews)

Next Milestone 400K

Total Progress 6.1%
300K+ 400K+
46
Ranks to Climb
-
Growth Needed
8,000,000
Active Installs
Pro

Unlock Exact Install Count

See the precise estimated active installs for this plugin, calculated from real-time ranking data.

  • Exact install estimates within tiers
  • Track install growth over time
  • Milestone progress predictions
Upgrade to Pro
Need 93,878 more installs to reach 400K+

Rank Changes

181 191 201 211 221 01-10-2026 02-10-2026 03-10-2026 04-10-2026 05-10-2026 06-10-2026 07-10-2026 08-10-2026
181 191 201 211 221 23-09-2026 24-09-2026 25-09-2026 26-09-2026 27-09-2026 28-09-2026 29-09-2026 30-09-2026 01-10-2026 02-10-2026 03-10-2026 04-10-2026 05-10-2026 06-10-2026 07-10-2026 08-10-2026
Current #201
Change
Best #

Upgrade to Pro

Unlock 30-day and 90-day rank history charts with a Pro subscription.

Upgrade Now

Active Installs Growth

Active Installs 0,000,000+
Growth +0.0%
Peak 0,000,000

Downloads Growth

200 400 600 800 1K 1.2K 01-10-2026 02-10-2026 03-10-2026 04-10-2026 05-10-2026 06-10-2026 07-10-2026 08-10-2026
200 400 600 800 1K 1.2K 23-09-2026 24-09-2026 25-09-2026 26-09-2026 27-09-2026 28-09-2026 29-09-2026 30-09-2026 01-10-2026 02-10-2026 03-10-2026 04-10-2026 05-10-2026 06-10-2026 07-10-2026 08-10-2026
Downloads
Growth
Peak

Upgrade to Pro

Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.

Upgrade Now

Reviews & Ratings

4.7
98 reviews
Overall 94%
5
85 (87%)
4
4 (4%)
3
3 (3%)
2
1 (1%)
1
5 (5%)

Support Threads Overview

Resolved
Unresolved
2
Total Threads
0
Resolved
2
Unresolved
0%
Resolution Rate

Security History

Source: WPVulnerability

No known vulnerabilities on record for Cyr-To-Lat. Checked 3 days ago.

TL;DR

AI summary of the plugin's readme

This plugin is for WordPress site owners whose posts, pages, or terms have non-Latin slugs, including WooCommerce store owners. It converts Cyrillic and other non-Latin characters in slugs to Latin characters, producing human-readable URLs.

  • Editable transliteration table
  • Converts post, page, term slugs
  • Converts custom post type slugs
  • WP-CLI slug conversion support
  • Preserves existing permalinks
  • Transliterates attachment file names
  • WooCommerce product and taxonomy support
  • Compatible with WPML

Frequently Asked Questions

Common questions about Cyr-To-Lat

Add this code to your theme's functions.php file: /** * Modify conversion table. * * @param array $table Conversion table. * * @return array */ function my_ctl_table( $table ) { $table['Ъ'] = 'U'; $table['ъ'] = 'u'; return $table; } add_filter( 'ctl_table', 'my_ctl_table' );
For instance, if your non-standard locale is uk_UA, you can redefine it to uk by adding the following code to your theme's function.php file: /** * Use non-standard locale. * * @param string $locale Current locale. * * @return string */ function my_ctl_locale( $locale ) { if ( 'uk_UA' === $locale ) { return 'uk'; } return $locale; } add_filter( 'ctl_locale', 'my_ctl_locale' );
Add similar code to your theme's functions.php file: /** * Filter title before sanitizing. * * @param string|false $result Sanitized title. * @param string $title Title. * * @return string|false */ function my_ctl_pre_sanitize_title( $result, $title ) { if ( 'пиво' === $title ) { return 'beer'; } return $result; } add_filter( 'ctl_pre_sanitize_title', 10, 2 );
Version 7.0 uses explicit slug handlers for posts, terms, WooCommerce attributes, and other known save paths. A legacy sanitize_title bridge remains as a compatibility fallback for broad calls that older integrations may still rely on. You can disable the broad fallback with this code: add_filter( 'ctl_enable_legacy_sanitize_title_bridge', '__return_false' ); The filter receives the current default value, $title, $raw_title, and $context. Explicit known contexts, such as WordPress save handling, continue to use the dedicated 7.0 slug paths. For debugging unknown bridge calls, define CYR_TO_LAT_DEBUG_LEGACY_SANITIZE_TITLE_BRIDGE as true. This diagnostic log is disabled by default and is not enabled by WP_DEBUG.
Add similar code to your theme's functions.php file: /** * Filter filename before sanitizing. * * @param string|false $result Sanitized filename. * @param string $filename Title. * * @return string|false */ function my_ctl_pre_sanitize_filename( $result, $filename ) { if ( 'пиво' === $filename ) { return 'beer'; } return $result; } add_filter( 'ctl_pre_sanitize_filename', 10, 2 );
Add the following code to your plugin's (or mu-plugin's) main file. This code won't work being added to a theme's functions.php file. /** * Filter status allowed Cyr To Lat plugin to work. * * @param bool $allowed * * @return bool */ function my_ctl_allow( bool $allowed ): bool {
sanitize_url( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : ''; if ( 0 === strpos( $uri, '/divi-comments' ) ) { return true; } return $allowed; } add_filter( 'ctl_allow', 'my_ctl_allow' );
Add similar code to your theme's functions.php file: /** * Filter post types allowed for background conversion. * * @param array $post_types Allowed post types. * * @return array */ function my_ctl_post_types( $post_types ) { return [ 'post' => 'post', 'page' => 'page', 'attachment' => 'attachment', 'product' => 'product', 'nav_menu_item' => 'nav_menu_item', ]; } add_filter( 'ctl_post_types', 'my_ctl_post_types' );
Use the following command in the console: wp cyr2lat regenerate [--post_type=<post_type>] [--post_status=<post_status>]
-post_type is a list of post types, -post_status is a list of post statuses.

Sign In / Register

You need to sign in or register to use this feature.