Inkhmer LogoInKhmerBuilding the digital future
  • About
  • Projects
  • Blog
  • Tools
  • Learn
  • Contact
KMខ្មែរENEnglish

InKhmer.com — a personal Khmer Digital Hub curated by our team. Tools, Cambodia resources, Khmer culture, and digital projects. Practical, approachable, and built for everyone.

Social

FacebookTelegram

Quick Links

  • About
  • Projects
  • Blog
  • Tools
  • Learn
  • Contact

Explore

  • What We Build
  • How We Build
  • Roadmap
  • Experiments
  • Sitemap

Subscribe to our newsletter

Get the latest updates about Cambodia, new tools, and exclusive content delivered to your inbox.

  • Terms of Service
  • Privacy Policy
  • Cookie Policy

© 2026 InKhmer. All rights reserved.

  1. Home
  2. Tools
  3. Translation Tools
  4. Khmer Legacy to Unicode Converter — Limon, ABC-Zwsp and Khek to Unicode

Khmer Legacy to Unicode Converter — Limon, ABC-Zwsp and Khek to Unicode

Convert legacy Khmer font text (Limon, ABC-Zwsp or Khek) to proper Unicode Khmer. Paste your legacy text, pick the encoding or let auto-detect choose, and copy clean, searchable Unicode out.

Swap direction

About this tool

For years, Cambodian offices typed their documents in legacy Khmer fonts — Limon for NGO reports and school handouts, ABC and Khek for ministry circulars and print-shop layouts. A file saved in one of those fonts does not contain Khmer characters at all: it stores Latin byte codes that only draw Khmer letters while the matching font is installed. Copy a paragraph out of one today and you get strings like `sYsþI` instead of សួស្តី — unsearchable, untranslatable, unreadable on any device that lacks the font. This page converts that legacy text into Unicode Khmer, the encoding every modern phone, browser and website reads — Limon to Unicode, ABC-Zwsp to Unicode and Khek to Unicode, all from the same pane. Pick the encoding yourself or leave the selector on Auto-detect: the Limon to Unicode path, the ABC-Zwsp path and the Khek path each apply their own byte table, and the detector picks the one whose decode looks like real Khmer. Everything runs in your browser — paste the legacy text, press Convert, copy or download the result. What it does not do: it does not translate meaning, it does not render legacy fonts on screen, and it does not go from Unicode back to a legacy encoding — the paired Unicode to legacy converter handles that direction. Characters with no entry in the chosen table pass through unchanged and are counted for you, never guessed at.

How it works

Pressing Convert runs a pure function in your browser — convertLegacyToUnicode in lib/khmer-legacy-converter/converter.ts — with the encoding you selected. Under Auto-detect, the page first decodes your text under each of the three tables and scores how plausible each result is as real Khmer: a wrong table produces consonant clusters that cannot exist, like a subscript sign glued to a letter that has no subscript form, or vowel signs floating with no base consonant, so the highest-scoring table is usually the right one. The conversion pass then walks your text matching the longest known byte sequence first — legacy fonts pack some Khmer glyphs into two- and three-byte combinations that a naïve one-byte map scrambles — before falling back to the single-byte table. Those bytes decode in visual order, whereas Unicode demands logical order, so a reorder pass (reorder.ts: unicodeReorder) arranges every cluster the way Unicode specifies — subscripts, vowel signs and shifters land where a search box expects them. Characters the table does not define pass through unchanged and appear in the unmapped-characters chip under the output. Inputs over 10 KB convert inside a Web Worker so the page stays responsive; smaller text runs on the main thread. Your text never leaves the browser — the only telemetry is an anonymous usage event carrying counters such as length and unmapped count, never the text itself.

Use cases

  • Opening an old .doc or .pdf and seeing garbled characters like sYsþI bgb¥Ún — paste the legacy text and get clean សួស្តី បងប្អូន back.
  • A librarian digitising pre-2010 Cambodian publications whose source files are Limon-encoded and whose target repository requires Unicode text.
  • A government officer migrating a Khek-encoded form template into a modern Unicode-based document system.
  • A developer importing a legacy CSV of Cambodian records whose Khmer name column is Limon bytes, needing Unicode for a modern search index.
  • A website team moving a Limon-era blog over to a current CMS that requires Unicode for proper indexing and rendering.
  • A translator receiving a Khmer source file in ABC-Zwsp and needing clean Unicode to paste into a CAT tool.
  • A researcher processing a corpus of 1990s–2000s Khmer newspapers whose text follows the original Limon encoding.

Verified conversion examples

EncodingLegacy textUnicode Khmer
limonsYsþI bgb¥Únសួស្តី បងប្អូន
limonsMNYr nigcemøIy GMBI PasaExµrសំណួរ និងចម្លើយ អំពី ភាសាខ្មែរ
abc-zwspsYsþI.bgbðÚnសួស្តី បងប្អូន
abc-zwspqñaM.2026.Ex.11ឆ្នាំ ២០២៦ ខែ ១១
kheksYs¶I bgbíènសួស្តី បងប្អូន
khekekµg@kMBugeronGk§rExµr enAsalaeronក្មេងៗកំពុងរៀនអក្សរខ្មែរ នៅសាលារៀន

Frequently asked questions

  • What does "garbled Khmer" like sYsþI bgb¥Ún actually mean?

    The text was typed in a legacy Khmer font that stores Latin byte codes instead of real Khmer characters — the bytes are Khmer only when the matching font interprets them. Viewed without the font, each byte shows as its Latin-1 glyph, which is the gibberish you see. This tool replaces each byte sequence with the Unicode Khmer characters the font was secretly representing.

  • Which legacy encodings does the tool support?

    Limon, ABC-Zwsp and Khek — the three legacy encodings in widest surviving use for Cambodian documents. Each has its own byte table because the fonts assigned Khmer glyphs to different keys; converting ABC-Zwsp text under the Limon table produces a different kind of garbage, which is why the encoding selector and auto-detect matter.

  • How does auto-detect decide which encoding my text is in?

    It decodes your input under each of the three tables and scores the result structurally: does every subscript sign sit on a consonant that actually takes one, do vowel signs have a base consonant, how rare are the produced glyphs. The decode with the most plausible Khmer wins and its confidence shows under the output. On short or shared-surface strings the scores can be close — the detector then reports uncertainty and you should pick the encoding manually.

  • What happens to characters that are not in the mapping table?

    They pass through unchanged and are counted in the unmapped-characters chip under the output — the tool never silently replaces an unknown character with a guess. Opening the chip lists each distinct leftover with its code point, so you can see whether it is a stray Latin letter, a rare glyph the table does not cover, or text that was never a legacy encoding to begin with.

  • Does the tool send my text to a server?

    No. The conversion is a pure calculation in your browser — the page ships static mapping tables and applies them locally; there is no upload, no server route and no storage. The only outbound call is an anonymous usage event carrying counters like input length and unmapped count — never the text you pasted or produced.

  • Can I convert a whole file instead of pasting?

    Not in this version — the pane accepts pasted text only, and the download button writes the result to a .txt file for you to save. File upload is a planned follow-up. For very large documents, inputs over 10 KB are still handled: they convert inside a Web Worker so the page stays responsive.

  • Is the output canonical Unicode? What about Khmer character reordering?

    Yes — the converter emits characters in the logical order Unicode specifies, not the visual order the legacy font stored. Subscripts, vowel signs and shifters are rearranged into their canonical positions inside each cluster, so the output indexes, searches and transliterates correctly. Lines that still look wrong after conversion usually carry a typing error from the original document.

  • Why did the English words or numbers in my pasted text change too?

    The legacy fonts assign Khmer glyphs to nearly the whole keyboard — letters, digits and most punctuation are all glyph slots, so the converter maps them as well. A document that mixed a Latin font with the Khmer one loses that font information once copied as plain text. Convert only the Khmer sections, or paste a paragraph at a time.

  • Can I convert Unicode Khmer back to a legacy font?

    Not on this page — this tool runs one direction only, legacy to Unicode. The paired Unicode to legacy converter handles the reverse: it produces the byte output a legacy font workflow needs, downloadable as a Windows-1252 .txt file. The swap button on the pane links straight to it with your encoding selection carried over.

  • Why does my converted text still look wrong in some places?

    Two different problems share that symptom. If every Khmer line is garbled, the encoding guess was wrong — pick the font the document actually used instead of auto-detect. If only scattered spots look off — a dotted circle, a mark on the wrong consonant — the source typing had an error the mapping faithfully carried over, which needs a manual edit, not a different table.

Data and accuracy

The page applies the three static mapping tables shipped in lib/khmer-legacy-converter/mappings/, resolved from fontdata.xml in the KhmerConverter project — the open-source converter the Khmer Software Initiative (KhmerOS) has maintained since 2006 for Limon, ABC, Khek and other legacy Khmer fonts. Because conversion is pure local computation there is no upstream feed to go stale — a wrong result means the pasted text is not the selected encoding, not stale data. The tables are regression-tested by the round-trip corpus that ships with the library.

Sources

  • KhmerConverter — Khmer Software Initiative legacy-font converter (fontdata.xml tables) — Khmer Software Initiative / KhmerOS (GitHub)
  • Khmer — Unicode code chart U+1780–U+17FF — Unicode Consortium
  • Khmer alphabet — script and Unicode encoding — Wikipedia
  • This tool’s own page — InKhmer

Content last reviewed 8 November 2026

Related tools

More Khmer language and translation tools on this site — including the paired Unicode to legacy converter for the other direction:

  • Khmer Alphabet
  • Khmer Image to Text Converter | OCR & Formatter
  • Khmer Unicode to Legacy Converter — Unicode to Limon, ABC-Zwsp or Khek

More in this category

  • Translate English to Cambodian Khmer
  • Khmer Image to Text Converter | OCR & Formatter
  • Khmer to English Translator
  • Khmer Unicode to Legacy Converter — Unicode to Limon, ABC-Zwsp or Khek
  • Translate Text Between Languages
Translation Tools← Back to all tools