User Rating 0.0
Total Usage 0 times
Preset:
Leave empty to keep spaces
Examples:
Cyrillic 0 chars
Cyrillic → Latin
Latin (Translit) 0 chars
Is this tool helpful?

Your feedback helps us improve.

About

Transliteration maps Cyrillic characters to their Latin phonetic equivalents according to standardized rulesets. Errors in transliteration cause passport rejections, broken URLs, failed database lookups, and non-compliant document filings. This tool implements three complete presets: Russian (GOST 7.79-2000 simplified), Ukrainian (Cabinet of Ministers of Ukraine Resolution No. 55, used for passport romanization), and Mongolian (MNS 5217:2012 standard). Each preset handles multi-character digraphs (ShchЩ), positional rules, and apostrophe conventions. The reverse operation reconstructs Cyrillic from Latin input using greedy longest-match parsing to resolve ambiguity (e.g., distinguishing Sh from S+h). Note: reverse transliteration is inherently lossy for edge cases where multiple Cyrillic sources map to the same Latin output.

cyrillic translit transliteration russian ukrainian mongolian converter latin

Formulas

The transliteration algorithm operates as a greedy left-to-right character substitution with multi-character digraph priority:

translit(S) = ni=0 map(longestMatch(S, i))

Where S is the input string of length n. At each position i, the algorithm attempts to match the longest possible substring against the transliteration map M. Match length k is tried from max(keyLen(M)) down to 1. If a match is found, the mapped value is appended and i advances by k. If no match exists, the original character passes through unchanged and i advances by 1.

Space replacement applies a secondary pass: replace(output, " ", spaceChar). When spaceChar is empty, spaces are preserved as-is.

Reverse transliteration constructs M1 by inverting each (key, value) pair. Ambiguity is resolved by greedy longest-match: longer Latin sequences are tested before shorter ones, ensuring Shch maps to Щ before Sh can consume Ш.

Reference Data

CyrillicRussian (ru)Ukrainian (uk)Mongolian (mn)
А аA aA aA a
Б бB bB bB b
В вV vV vV v
Г гG gH hG g
Ґ ґ - G g -
Д дD dD dD d
Е еE eE eYe ye
Ё ёYo yo - Yo yo
Є є - Ye ye -
Ж жZh zhZh zhJ j
З зZ zZ zZ z
И иI iY yI i
І і - I i -
Ї ї - Yi yi -
Й йJ jY yI i
К кK kK kK k
Л лL lL lL l
М мM mM mM m
Н нN nN nN n
О оO oO oO o
Ө ө - - U u
П пP pP pP p
Р рR rR rR r
С сS sS sS s
Т тT tT tT t
У уU uU uU u
Ү ү - - U u
Ф фF fF fF f
Х хKh khKh khKh kh
Ц цTs tsTs tsTs ts
Ч чCh chCh chCh ch
Ш шSh shSh shSh sh
Щ щShch shchShch shch -
Ъ ъ(omitted) - (omitted)
Ы ыY y - Y y
Ь ь(omitted)(omitted)(omitted)
Э эE e - E e
Ю юYu yuYu yuYu yu
Я яYa yaYa yaYa ya

Frequently Asked Questions

Reverse transliteration is inherently lossy. Multiple Cyrillic characters may map to the same Latin output. For example, in Russian both Е and Э can map to E. The algorithm uses greedy longest-match and defaults to the most common mapping, but cannot guarantee perfect reconstruction without context. Always verify reverse output against the original Cyrillic source.
In Ukrainian transliteration (Resolution No. 55), the combination Зг is transliterated as Zgh (not Zh) to distinguish it from ЖZh. This tool implements the Zgh rule by checking for the Зг bigram before falling back to single-character matching of З.
Any character not found in the active preset's map passes through unchanged. This includes digits (0 - 9), punctuation, Latin characters (in forward mode), and special symbols. This preserves URLs, email addresses, and numeric data embedded in the text.
Only standard space characters (Unicode U+0020) are replaced. Tabs, newlines, non-breaking spaces, and other whitespace variants are preserved as-is. If you need to normalize all whitespace, pre-process your text to convert tabs and multiple spaces to single spaces before transliterating.
The Russian preset follows a simplified GOST 7.79-2000 System B mapping, which is the most widely used convention for informal transliteration (URLs, filenames, user-facing text). It omits the hard sign (Ъ) and soft sign (Ь) entirely. For ICAO passport transliteration or other strict standards, manual adjustments may be needed.
Yes. Set the space replacement to a hyphen (-) or underscore (_), convert, then apply toLowerCase() to the output. The result is a URL-safe ASCII string. Note: you should additionally strip or replace any remaining non-ASCII punctuation characters for strict RFC 3986 compliance.