← Blog

Languages

Russian and Ukrainian: telling two Cyrillic languages apart

Russian and Ukrainian share most of the Cyrillic alphabet. Which letters only one uses, how the official romanizations differ, and what published identification and translation results show for the pair.

Oct 21, 20264 min read8 sources

Why it matters

The Library of Congress tables romanize the same Cyrillic letter г as g for Russian and h for Ukrainian, so a name's Latin spelling depends on which language a system decided it was reading.

The short version

  1. 1Ukrainian uses ґ, є, і, and ї, which modern Russian does not. Russian uses ё, ъ, ы, and э, which Ukrainian does not.
  2. 2Cabinet of Ministers resolution 55 of January 27, 2010 sets Ukraine's national romanization, which BGN and PCGN adopted for place names in 2019.
  3. 3The NLLB language identifier scored 100.0 F1 for both languages on FLORES-200, yet NLLB-200 translated each into the other with lower chrF++ than from English.

Russian and Ukrainian are closely related Slavic languages written in Cyrillic, and many words are spelled identically in both. A 2026 study of code-switching between them, by Kanishcheva and Shvedova, says the shared alphabet and common homographs make the two hard to tell apart. A system that reads either language makes two early decisions: which language a text is in, and how to spell its names in Latin letters. The letter inventories answer part of the first question. The official romanization tables answer the second.

Letters only one alphabet has

The Library of Congress tables list each alphabet letter by letter. The Russian table, 2012 version, includes ё, ъ, ы, and э. The Ukrainian table, dated 2011, has no rows for those four and includes ґ, є, і, and ї instead. A text with ґ, є, or ї points to Ukrainian, and one with ё, ъ, ы, or э points to Russian.

The letter і needs care. The Russian table also lists і, with ѣ, ѳ, and ѵ, and notes that all four were eliminated in the orthographic reform of 1918. In older Russian text, і is not evidence of Ukrainian.

The shared letters do not share values. The same tables romanize г as g for Russian and h for Ukrainian, and и as i for Russian and y for Ukrainian.

The Unicode Cyrillic chart, for Unicode 18.0, gives the code points. It places the basic Russian alphabet at U+0410 to U+044F and marks ґ (U+0491) and ї (U+0457) as Ukrainian. It cross-references Cyrillic І (U+0406) to Latin I (U+0049). It also gives ё a decomposition into е followed by a combining diaeresis, U+0308.

Ukraine's national romanization

Ukraine's system is Cabinet of Ministers resolution No. 55 of January 27, 2010, which approves a table for transliterating the Ukrainian alphabet into Latin letters. The national legislation database lists it as in force, in an edition dated January 12, 2016, after amendments in 2013, 2014, and 2015.

The table's examples show the rules. Київ is Kyiv, Харків is Kharkiv, and Одеса is Odesa. The letter г becomes h, as in Hadiach, and ґ becomes g, as in Gorgany. Five letters change with position: є, ї, й, ю, and я are written ye, yi, y, yu, and ya at the start of a word and ie, i, i, iu, and ia elsewhere. Three notes follow the table. The pair зг is written zgh, to keep it distinct from zh for ж. The soft sign and the apostrophe are not rendered, so Знам'янка becomes Znamianka. Names of people and places are transliterated by rendering each letter.

Place names: BGN/PCGN

The U.S. Board on Geographic Names (BGN) and the Permanent Committee on Geographical Names (PCGN) jointly agree romanization systems for geographical names written in non-Roman scripts. Their Ukrainian document, the BGN/PCGN 2019 Agreement, checked in February 2022, adopts the national system in use since 2010 and supersedes the BGN/PCGN 1965 system. The two committees adopted it after monitoring a good level of implementation within Ukraine.

The document attaches two warnings. The system is not recommended for reverse transliteration. Unlike the 1965 system, it no longer separates sequences such as кг, сг, and тс from the digraphs kh, sh, and ts.

The table's code column needs checking too. It gives decimal codes 1027 and 1107 for Ґ and ґ. In the Unicode chart, those values, U+0403 and U+0453, are Ѓ and ѓ, named GJE. Ґ and ґ are U+0490 and U+0491. The Library of Congress table also differs from the national system: it romanizes ї as ï.

Identification and translation

Kanishcheva and Shvedova labeled about 200,000 tokens from parliamentary transcripts dated 1990 to 2021, word by word, as Ukrainian, Russian, Ukrainian-Russian hybrid, other, number, or punctuation. They found n-grams containing і and ї distinctly Ukrainian, and frequent morphemes such as Ukrainian -ння and Russian -ть useful for word-level identification. Transcribers did not always switch keyboard layouts in time, which left typos in the mixed passages.

On clean sentences the pair is easy. The NLLB paper reports F1 of 100.0 for both Russian and Ukrainian on FLORES-200, and the pair is not among the confusable languages it names.

Translation tells a different story. In the metrics file for the 54.5-billion-parameter NLLB-200 model, translation into Ukrainian scores 56.3 on the chrF++ translation metric from English and 51.7 from Russian. Into Russian, it scores 56.3 from English and 54.0 from Ukrainian. The NLLB paper says FLORES-200 sentences were sampled from English-language Wikimedia projects and translated into every language, so each reference is a translation of English, not of the other language.

What to check

  • Does the identifier use letter evidence, and what does it do with a sentence that has none of ґ, є, і, ї, ё, ъ, ы, or э?
  • Does it treat Cyrillic І (U+0406) and Latin I (U+0049) as different characters?
  • Does it handle pre-1918 Russian text, which can contain і?
  • Which system produced a Latin name: the 2010 national system that BGN/PCGN adopted in 2019, the BGN/PCGN 1965 system, or the Library of Congress table?
  • Can a romanized Ukrainian name be converted back, given that the 2010 system drops the soft sign and apostrophe?
  • Was Russian-Ukrainian translation measured directly, and on test sentences that were themselves translated from English?

Azcuna's BABEL reads, translates, and searches foreign-language documents entirely on-device, with no cloud and no connection, and keeps every claim tied to the passage it came from.

Sources

  1. 1Quantifying Code-Switching in a Ukrainian Parliamentary Dataset 1990-2021 · ParlaCLARIN V Workshop at LREC 2026, May 16, 2026 (Kanishcheva and Shvedova)
  2. 2Russian Romanization Table, 2012 version · Library of Congress (ALA-LC Romanization Tables)
  3. 3Ukrainian Romanization Table (2011) · Library of Congress (ALA-LC Romanization Tables)
  4. 4Cyrillic, Range: 0400-04FF · The Unicode Consortium (code chart, The Unicode Standard, Version 18.0)
  5. 5Про впорядкування транслітерації українського алфавіту латиницею (Resolution No. 55 of January 27, 2010) · Cabinet of Ministers of Ukraine, via the Verkhovna Rada legislation database (edition of January 12, 2016)
  6. 6Romanization of Ukrainian: BGN/PCGN 2019 Agreement · Permanent Committee on Geographical Names and U.S. Board on Geographic Names, via GOV.UK (checked February 2022)
  7. 7No Language Left Behind: Scaling Human-Centered Machine Translation · arXiv (NLLB Team, 2022; version 3)
  8. 8NLLB-200 (54.5B mixture-of-experts) metrics file · Meta AI Research (linked from the NLLB README)

Where this shows up in our work

More on languages