transliterate
Bi-directional transliterator for Python
What it is and what it does
Transliterate is a bidirectional character-mapping library that converts text between Latin and non-Latin scripts. It ships with language packs for Armenian, Bulgarian, Georgian, Greek, Macedonian, Mongolian, Russian, Serbian, and Ukrainian, allowing you to convert Latin text to Cyrillic or Greek and back again. The package uses simple character-to-character mappings defined in language packs, plus optional multi-character rules for cases where one source character maps to multiple target characters.
Beyond basic transliteration, it includes utilities for language detection, slug generation for non-Latin text, and lorem ipsum generation in supported languages. You can register custom language packs to extend it to other scripts, and for performance-critical work with large datasets, you can pre-load a specific language's transliteration function. The library has no external dependencies and runs on Python 2.7, 3.4+, and PyPy.
Use it for:
- Convert user-generated Russian or Greek text to Latin characters for URL slugs or ASCII-only storage systems.
- Build a search system that accepts both Latin and Cyrillic input and normalizes queries to a common script.
- Generate placeholder text (lorem ipsum) in Armenian, Russian, or other supported languages for UI mockups.
- Reverse-transliterate Cyrillic names or addresses back to Latin for international data exchange.
- Register a custom language pack to support transliteration for scripts not in the bundled set.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Converts text between Latin and non-Latin scripts (Armenian, Bulgarian, Georgian, Greek, Russian, Serbian, Ukrainian, Macedonian, Mongolian) in both directions using language-specific character mapping rules.
Yes, with license caution. The package is actively maintained, has no dependencies, installs cleanly, and solves a specific problem well for the languages it supports. However, its GPL 2.0/LGPL 2.1 copyleft license requires careful review if you plan to use it in proprietary software. The alpha/beta status of some language packs suggests you should test accuracy for your specific language before relying on it in production.
Install
transliterate on PyPI
pip
pip install transliterateuv
uv add transliteratepoetry
poetry add transliterateInstalling transliterate
Before you install
No runtime dependencies and a pure-Python wheel distribution make installation straightforward. The package is actively maintained with a recent commit in 2026, though the latest release was in 2018.
License in practice
Licensed under GPL 2.0/LGPL 2.1 (copyleft). Use in proprietary software requires careful licensing review; derivative works and distributions must comply with copyleft obligations.
Quickstart
pip install transliterate
from transliterate import translit
text = "Lorem ipsum"
print(translit(text, 'ru')) # Лорем ипсум
print(translit(u"Лорем ипсум", 'ru', reversed=True)) # Lorem ipsum
Verify before relying
- Whether the 2018 release date reflects actual code staleness or if the 2026 commit represents active maintenance with unreleased changes.
- Performance characteristics when processing large text volumes with different language packs.
- Completeness and accuracy of the alpha/beta language packs (Macedonian, Mongolian, Serbian, Bulgarian).
Package facts
| License | GPL 2.0/LGPL 2.1 (copyleft) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 2,888 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 545,654/month — #6,076 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: transliterate-1.10.2-py2.py3-none-any.whl
Keywords: translit
Tags
More Linguistic packages
Detects and normalizes text encoding from…
permissive · top 100 on PyPI
tiktokentiktoken is a fast BPE tokenizer that converts…
permissive · top 1,000 on PyPI
chardetDetects character encoding and language in byte…
permissive · top 1,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
tree-sitterPython bindings to the tree-sitter parsing…
permissive · top 1,000 on PyPI
cyrtranslitConverts text between Cyrillic and Latin…
permissive · top 15,000 on PyPI
indic-transliterationConverts text between different Indic script…
permissive · top 15,000 on PyPI
uromanConverts text in any script to Latin alphabet…
permissive · top 15,000 on PyPI
epitranEpitran converts written text in various…
permissive · top 15,000 on PyPI
UnidecodeConverts Unicode text to ASCII-safe…
copyleft · top 1,000 on PyPI
python-bidiConverts bidirectional text (mixed…
copyleft · top 5,000 on PyPI
pymorphy2-dicts-ruProvides Russian morphological dictionaries for…
permissive · top 15,000 on PyPI
anyasciiConverts Unicode text to ASCII-only equivalents…
permissive · top 5,000 on PyPI
hangul-romanizeConverts Korean Hangul text to romanized (Latin…
unclear · top 15,000 on PyPI