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 755 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.1
v7.1.0 Current Version v7.1.0
Updated 1 month ago Last Update on 08 Aug, 2026
Refreshed 13 hours ago Last Refreshed on
#6 of 755 in Language Tools Top 1% by installs Downloads -24.6% this week
View on WordPress.org
Rank
#201
No change
Active Installs
300K+
-3.2%
KW Avg Position
10.6
0.2 worse
Downloads
3.5M
+840 today
Support Resolved
0%
No change
Rating
94%
Review 4.7 out of 5
4.7 (98 reviews)

Next Milestone 400K

Total Progress 8.2%
300K+ 400K+
45
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 91,837 more installs to reach 400K+

Rank Changes

181 191 201 211 221 11-09-2026 12-09-2026 13-09-2026 14-09-2026 15-09-2026 16-09-2026 17-09-2026 18-09-2026
181 191 201 211 221 03-09-2026 04-09-2026 05-09-2026 06-09-2026 07-09-2026 08-09-2026 09-09-2026 10-09-2026 11-09-2026 12-09-2026 13-09-2026 14-09-2026 15-09-2026 16-09-2026 17-09-2026 18-09-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

400 500 600 700 800 900 1K 1.1K 11-09-2026 12-09-2026 13-09-2026 14-09-2026 15-09-2026 16-09-2026 17-09-2026 18-09-2026
400 500 600 700 800 900 1K 1.1K 03-09-2026 04-09-2026 05-09-2026 06-09-2026 07-09-2026 08-09-2026 09-09-2026 10-09-2026 11-09-2026 12-09-2026 13-09-2026 14-09-2026 15-09-2026 16-09-2026 17-09-2026 18-09-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
3
Total Threads
0
Resolved
3
Unresolved
0%
Resolution Rate

Security History

Source: WPVulnerability

No known vulnerabilities on record for Cyr-To-Lat. Checked 1 week 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.