{
    "title": "Cyr-To-Lat",
    "seo_title": "Cyr-To-Lat: review, recommended settings and limits",
    "h1": "Cyr-To-Lat",
    "description": "Cyr-To-Lat transliterates Cyrillic slugs into Latin: strengths, limitations, table settings and converting old slugs without losing your links.",
    "lead": "Cyr-To-Lat turns Cyrillic, Greek, Georgian or Armenian letters in slugs and file names into Latin letters, for readable addresses. Our take on this free plugin, its per-language tables, converting old slugs without breaking your links and the settings worth checking.",
    "language": "en",
    "locale": "en-US",
    "type": "plugin-sheet",
    "url": "https://www.wp-masquerade.com/features/camouflaged-plugins/cyr-to-lat/",
    "canonical": "https://www.wp-masquerade.com/features/camouflaged-plugins/cyr-to-lat/",
    "markdown": "https://www.wp-masquerade.com/features/camouflaged-plugins/cyr-to-lat/index.md",
    "json": "https://www.wp-masquerade.com/features/camouflaged-plugins/cyr-to-lat/index.json",
    "published": "2026-11-04T08:00:00+00:00",
    "modified": "2026-11-05T21:04:41+00:00",
    "site": {
        "name": "WP Masquerade",
        "url": "https://www.wp-masquerade.com/"
    },
    "translations": [
        {
            "language": "en",
            "hreflang": "en-US",
            "title": "Cyr-To-Lat",
            "url": "https://www.wp-masquerade.com/features/camouflaged-plugins/cyr-to-lat/",
            "markdown": "https://www.wp-masquerade.com/features/camouflaged-plugins/cyr-to-lat/index.md",
            "json": "https://www.wp-masquerade.com/features/camouflaged-plugins/cyr-to-lat/index.json"
        },
        {
            "language": "fr",
            "hreflang": "fr-FR",
            "title": "Cyr-To-Lat",
            "url": "https://www.wp-masquerade.com/fr/fonctionnalites/extensions-camouflees/cyr-to-lat/",
            "markdown": "https://www.wp-masquerade.com/fr/fonctionnalites/extensions-camouflees/cyr-to-lat/index.md",
            "json": "https://www.wp-masquerade.com/fr/fonctionnalites/extensions-camouflees/cyr-to-lat/index.json"
        },
        {
            "language": "es",
            "hreflang": "es-ES",
            "title": "Cyr-To-Lat",
            "url": "https://www.wp-masquerade.com/es/funcionalidades/plugins-camuflados/cyr-to-lat/",
            "markdown": "https://www.wp-masquerade.com/es/funcionalidades/plugins-camuflados/cyr-to-lat/index.md",
            "json": "https://www.wp-masquerade.com/es/funcionalidades/plugins-camuflados/cyr-to-lat/index.json"
        },
        {
            "language": "de",
            "hreflang": "de-DE",
            "title": "Cyr-To-Lat",
            "url": "https://www.wp-masquerade.com/de/funktionen/getarnte-plugins/cyr-to-lat/",
            "markdown": "https://www.wp-masquerade.com/de/funktionen/getarnte-plugins/cyr-to-lat/index.md",
            "json": "https://www.wp-masquerade.com/de/funktionen/getarnte-plugins/cyr-to-lat/index.json"
        },
        {
            "language": "it",
            "hreflang": "it-IT",
            "title": "Cyr-To-Lat",
            "url": "https://www.wp-masquerade.com/it/funzionalita/plugin-camuffati/cyr-to-lat/",
            "markdown": "https://www.wp-masquerade.com/it/funzionalita/plugin-camuffati/cyr-to-lat/index.md",
            "json": "https://www.wp-masquerade.com/it/funzionalita/plugin-camuffati/cyr-to-lat/index.json"
        },
        {
            "language": "pt",
            "hreflang": "pt-BR",
            "title": "Cyr-To-Lat",
            "url": "https://www.wp-masquerade.com/pt/recursos/plugins-wordpress-camuflados/cyr-to-lat/",
            "markdown": "https://www.wp-masquerade.com/pt/recursos/plugins-wordpress-camuflados/cyr-to-lat/index.md",
            "json": "https://www.wp-masquerade.com/pt/recursos/plugins-wordpress-camuflados/cyr-to-lat/index.json"
        },
        {
            "language": "nl",
            "hreflang": "nl-NL",
            "title": "Cyr-To-Lat",
            "url": "https://www.wp-masquerade.com/nl/functies/gecamoufleerde-plugins/cyr-to-lat/",
            "markdown": "https://www.wp-masquerade.com/nl/functies/gecamoufleerde-plugins/cyr-to-lat/index.md",
            "json": "https://www.wp-masquerade.com/nl/functies/gecamoufleerde-plugins/cyr-to-lat/index.json"
        }
    ],
    "headings": [
        {
            "level": 1,
            "text": "Cyr-To-Lat"
        },
        {
            "level": 2,
            "text": "What Cyr-To-Lat does on your site"
        },
        {
            "level": 2,
            "text": "Which sites Cyr-To-Lat is a good fit for"
        },
        {
            "level": 2,
            "text": "Cyr-To-Lat strengths and limitations"
        },
        {
            "level": 3,
            "text": "Strengths"
        },
        {
            "level": 3,
            "text": "Limitations"
        },
        {
            "level": 2,
            "text": "The settings we recommend for Cyr-To-Lat"
        },
        {
            "level": 2,
            "text": "Cyr-To-Lat security: a clean record so far"
        },
        {
            "level": 2,
            "text": "Cyr-To-Lat FAQ",
            "id": "faq"
        }
    ],
    "body": "## The essentials\n\n- Best for Russian, Ukrainian or Bulgarian sites that want readable addresses in Latin letters.\n- Main caveat: converting old slugs cannot be undone and leaves category addresses without redirects.\n- Free, with no paid version: converter, per-language tables and WooCommerce support included.\n\n## What Cyr-To-Lat does on your site\n\nOut 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.\n\nConversion 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](https://www.wp-masquerade.com/features/camouflaged-plugins/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](https://www.wp-masquerade.com/glossary/wp-cli/).\n\nCyr-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.\n\n![Diagram: Cyr-To-Lat works on visitors and bots, wordpress, database and files. Public traces: no known public trace.](https://www.wp-masquerade.com/media/wpm-sheets/cyr2lat/diagram-en.svg?v=8d1ec9c4)\n\n## Which sites Cyr-To-Lat is a good fit for\n\nThe plugin pays off as soon as your titles use a non-Latin alphabet:\n\n- **Blogs and business sites in Russian, Ukrainian, Bulgarian or Serbian**: short, readable addresses that are easy to share, without typing every slug by hand.\n- **WooCommerce stores in Cyrillic**: products, their categories and new attributes get Latin slugs.\n- **Multilingual sites**: an English and a Ukrainian version, for example, each transliterated with its own language table.\n- **Media libraries full of files with Cyrillic names**: uploaded files get a Latin name that is easier to handle outside WordPress.\n\nIt 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.\n\n## Cyr-To-Lat strengths and limitations\n\n### Strengths\n\n- **Fully editable table.** You add, remove or change pairs such as \"Я\" to \"Ya\", or even a whole word, without touching code.\n- **One table per language.** With Polylang or WPML, each piece of content is transliterated according to its own language.\n- **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.\n- **Free and maintained.** No paid version, regular updates and detailed WooCommerce support.\n\n### Limitations\n\n- **Conversion cannot be undone.** The plugin warns you itself: back up the database, and your media too if you convert attachments.\n- **No redirects for terms.** Old addresses of converted categories and tags are not redirected by the plugin.\n- **Existing WooCommerce attributes stay as they are.** Attributes created before version 7.0 keep their slugs, as there is no migration tool.\n- **English-only screens in many languages.** The settings are not translated into French, German, Italian or Brazilian Portuguese.\n\n## The settings we recommend for Cyr-To-Lat\n\nThe 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.\n\n| Setting | Recommended value | Why |\n| --- | --- | --- |\n| **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. |\n| **Table pairs**  Same tab | Adjust before you publish | A change only affects new slugs: settle your choices (\"й\", \"щ\"...) before writing. |\n| **\"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. |\n| **\"Post Statuses\"**  Same tab | Defaults (published, scheduled, private) | These items already have an address; drafts will get their slug when published. |\n| **\"Convert Existing Slugs\"**  Same tab | Only after a database backup | The operation cannot be undone and changes addresses that are already indexed. |\n| **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. |\n| **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. |\n\n- Create a draft with a Cyrillic title: the slug suggested under the title should be in Latin letters.\n- Before converting existing content, take a [full site backup](https://www.wp-masquerade.com/wordpress-backups-3-2-1-strategy/) and note a few addresses to test.\n- 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](https://www.wp-masquerade.com/glossary/301-redirect/), for example with [Redirection](https://www.wp-masquerade.com/features/camouflaged-plugins/redirection/).\n- On a large database, use `wp cyr2lat regenerate --post_type=post,page` rather than the admin button.\n\n## Cyr-To-Lat security: a clean record so far\n\nAs 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.\n\nThe 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.\n\n## Cyr-To-Lat FAQ\n\n**Does Cyr-To-Lat change the addresses of my old posts?**\n\nNot 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.\n\n**Is there a paid version of Cyr-To-Lat?**\n\nNo. Every feature, including the converter and support for WooCommerce, Polylang and WPML, is in the free plugin on wordpress.org.\n\n**Can I force my own transliteration for a word?**\n\nYes. Add the pair in the \"Tables\" tab, for example \"Пиво\" to \"Beer\". Developers can also use the `ctl_table` and `ctl_pre_sanitize_title` filters.\n\n**My site is in Russian, but there is no \"Russian\" table. Is that normal?**\n\nYes: 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.\n\n## Key facts\n\n- Category: Languages and translation\n- Vendor: KAGG Design\n- Price: Free, with no paid version\n- Active installations (wordpress.org): 300 000+\n- Version: 7.2.0\n- Official page: https://wordpress.org/plugins/cyr2lat/\n\n## What WP Masquerade hides\n\n- Handled by WP Masquerade Pro only",
    "catalog": "cyr2lat",
    "essentials": [
        "Best for Russian, Ukrainian or Bulgarian sites that want readable addresses in Latin letters.",
        "Main caveat: converting old slugs cannot be undone and leaves category addresses without redirects.",
        "Free, with no paid version: converter, per-language tables and WooCommerce support included."
    ],
    "format": "application/json"
}