What Cyr-To-Lat does on your site
Out of the box, WordPress keeps Cyrillic, Greek or Georgian letters in slugs: a post titled "Пиво" gets an encoded address like %D0%9F%D0%B8..., which turns unreadable as soon as it is pasted into an email or a spreadsheet. Cyr-To-Lat transliterates those characters into Latin letters when you save: the same post becomes /pivo/. The plugin works on the slugs of posts, pages, custom post types and terms (categories, tags, taxonomies), and on the names of files uploaded to the Media Library.
Conversion follows a mapping table picked from the site language: a default table (ISO 9), also used for Russian, plus dedicated tables for Belarusian, Ukrainian, Bulgarian, Macedonian, Serbian, Greek, Armenian, Georgian, Kazakh, Hebrew and Chinese. Every table can be edited in the admin, pair by pair. On a multilingual site run with Polylang or WPML, the plugin uses the language of each piece of content: "Пиво" becomes pivo in Russian and pyvo in Ukrainian. A converter also handles slugs that already exist, in a background process or with the wp cyr2lat regenerate command in WP-CLI.
Cyr-To-Lat is free, with no paid version. It is published on wordpress.org by Sergey Biryukov, Mikhail Kobzarev and Igor Gergel, and its official page is hosted by KAGG Design. The plugin also handles WooCommerce products, categories and attributes, and WPML lists it as officially compatible.
Which sites Cyr-To-Lat is a good fit for
The plugin pays off as soon as your titles use a non-Latin alphabet:
- Blogs and business sites in Russian, Ukrainian, Bulgarian or Serbian: short, readable addresses that are easy to share, without typing every slug by hand.
- WooCommerce stores in Cyrillic: products, their categories and new attributes get Latin slugs.
- Multilingual sites: an English and a Ukrainian version, for example, each transliterated with its own language table.
- Media libraries full of files with Cyrillic names: uploaded files get a Latin name that is easier to handle outside WordPress.
It is not useful on a site written only in English or French: WordPress already strips accents from slugs. And if your site has been indexed for years with Cyrillic addresses, converting the old slugs needs planning: without redirects, you would lose inbound links.
Cyr-To-Lat strengths and limitations
Strengths
- Fully editable table. You add, remove or change pairs such as "Я" to "Ya", or even a whole word, without touching code.
- One table per language. With Polylang or WPML, each piece of content is transliterated according to its own language.
- Converts existing content. The converter processes old slugs in the background or through WP-CLI, and keeps each post's old slug for WordPress's own redirect.
- Free and maintained. No paid version, regular updates and detailed WooCommerce support.
Limitations
- Conversion cannot be undone. The plugin warns you itself: back up the database, and your media too if you convert attachments.
- No redirects for terms. Old addresses of converted categories and tags are not redirected by the plugin.
- Existing WooCommerce attributes stay as they are. Attributes created before version 7.0 keep their slugs, as there is no migration tool.
- English-only screens in many languages. The settings are not translated into French, German, Italian or Brazilian Portuguese.
The settings we recommend for Cyr-To-Lat
The settings live under Settings > Cyr To Lat, in two tabs, "Tables" and "Converter". On a new site there is almost nothing to do: transliteration of new content works as soon as the plugin is activated.
| Setting | Recommended value | Why |
|---|---|---|
| Active table Settings > Cyr To Lat > "Tables" | The one marked "(current)", which should match the site language | The table follows the site language; without a dedicated table, the default ISO 9 table applies. |
| Table pairs Same tab | Adjust before you publish | A change only affects new slugs: settle your choices ("й", "щ"...) before writing. |
| "Post Types" Settings > Cyr To Lat > "Converter" | Defaults (posts, pages, menu items) | Check "attachment" only with a copy of your media: files are renamed on disk. |
| "Post Statuses" Same tab | Defaults (published, scheduled, private) | These items already have an address; drafts will get their slug when published. |
| "Convert Existing Slugs" Same tab | Only after a database backup | The operation cannot be undone and changes addresses that are already indexed. |
| Redirects for pages and terms Redirect plugin | One redirect per important old address | WordPress redirects old post slugs, but not those of hierarchical pages or categories. |
| Thumbnail regeneration WP-CLI | wp media regenerate --skip-plugins=cyr2lat | The developers note that regenerating with the plugin active can break image links in older posts. |
- Create a draft with a Cyrillic title: the slug suggested under the title should be in Latin letters.
- Before converting existing content, take a full site backup and note a few addresses to test.
- After the conversion, open the old address of a post: it should send you to the new one. For pages and categories, add 301 redirects, for example with Redirection.
- On a large database, use
wp cyr2lat regenerate --post_type=post,pagerather than the admin button.
Cyr-To-Lat security: a clean record so far
As of this review, the Patchstack database lists no published vulnerability for Cyr-To-Lat. Version 7.1.0 hardened filename transliteration, multisite settings and data validation in the admin. Do not confuse it with Cyr to Lat Enhanced, a different plugin with a similar name, for which an SQL injection usable by accounts able to create terms was made public in 2023.
The useful step is the same as for any plugin: turn on automatic updates for Cyr-To-Lat under Plugins, after reading our guide to automatic plugin updates. WP Masquerade Pro replaces the plugin folder (cyr2lat) with an alias in file addresses: that makes it harder for bots to spot, without replacing updates.
What WP Masquerade hides for Cyr-To-Lat
Pro Handled by WP Masquerade Pro only
The free version does not know the traces specific to Cyr-To-Lat: without Pro, only generator tags are removed, as for any plugin.
Free version
Handled by WP Masquerade Pro only
With Pro
Nothing more
Still visible
No known trace
Cyr-To-Lat FAQ
Does Cyr-To-Lat change the addresses of my old posts?
Not on activation: only new content and content you save get a Latin slug. Old slugs only change if you run the converter or the WP-CLI command.
Is there a paid version of Cyr-To-Lat?
No. Every feature, including the converter and support for WooCommerce, Polylang and WPML, is in the free plugin on wordpress.org.
Can I force my own transliteration for a word?
Yes. Add the pair in the "Tables" tab, for example "Пиво" to "Beer". Developers can also use the ctl_table and ctl_pre_sanitize_title filters.
My site is in Russian, but there is no "Russian" table. Is that normal?
Yes: Russian uses the default table, ISO 9, like any language without a dedicated table. You can edit it in the "Tables" tab like the others.